000433e0 <CPU_usage_Per_thread_handler>: #include <rtems/cpuuse.h> static void CPU_usage_Per_thread_handler( Thread_Control *the_thread ) {
433e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 433e4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Set_to_zero( &the_thread->cpu_time_used );
#else
the_thread->cpu_time_used = 0;
#endif
}
433e8: 4e5e unlk %fp <== NOT EXECUTED
static void CPU_usage_Per_thread_handler(
Thread_Control *the_thread
)
{
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Set_to_zero( &the_thread->cpu_time_used );
433ea: 42a8 0082 clrl %a0@(130) <== NOT EXECUTED 433ee: 42a8 0086 clrl %a0@(134) <== NOT EXECUTED
#else
the_thread->cpu_time_used = 0;
#endif
}
0004a190 <IMFS_Set_handlers>:
{
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
switch( node->type ) {
4a190: 7007 moveq #7,%d0
#define MAXSYMLINK 5
int IMFS_Set_handlers(
rtems_filesystem_location_info_t *loc
)
{
4a192: 4e56 0000 linkw %fp,#0 4a196: 206e 0008 moveal %fp@(8),%a0 4a19a: 2f0a movel %a2,%sp@-
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
4a19c: 2468 0010 moveal %a0@(16),%a2
switch( node->type ) {
4a1a0: 2250 moveal %a0@,%a1
)
{
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
4a1a2: 246a 0034 moveal %a2@(52),%a2
switch( node->type ) {
4a1a6: b0a9 0048 cmpl %a1@(72),%d0
4a1aa: 6526 bcss 4a1d2 <IMFS_Set_handlers+0x42> <== NEVER TAKEN
4a1ac: 2029 0048 movel %a1@(72),%d0 4a1b0: d080 addl %d0,%d0 4a1b2: 303b 0808 movew %pc@(4a1bc <IMFS_Set_handlers+0x2c>,%d0:l),%d0 4a1b6: 48c0 extl %d0 4a1b8: 4efb 0802 jmp %pc@(4a1bc <IMFS_Set_handlers+0x2c>,%d0:l)
4a1bc: 0016 026 <== NOT EXECUTED 4a1be: 0010 020 <== NOT EXECUTED 4a1c0: 004c 0114 <== NOT EXECUTED 4a1c2: 002c 054 <== NOT EXECUTED 4a1c4: 002c 054 <== NOT EXECUTED 4a1c6: 001e 036 <== NOT EXECUTED 4a1c8: 001e 036 <== NOT EXECUTED 4a1ca: 003e 076 <== NOT EXECUTED
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
4a1cc: 216a 000c 0008 movel %a2@(12),%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1d2: 245f moveal %sp@+,%a2 4a1d4: 4280 clrl %d0 4a1d6: 4e5e unlk %fp 4a1d8: 4e75 rts
4a1da: 4280 clrl %d0 <== NOT EXECUTED
break;
case IMFS_LINEAR_FILE:
loc->handlers = fs_info->memfile_handlers;
break;
case IMFS_MEMORY_FILE:
loc->handlers = fs_info->memfile_handlers;
4a1dc: 216a 0008 0008 movel %a2@(8),%a0@(8) <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1e2: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a1e4: 4e5e unlk %fp <== NOT EXECUTED 4a1e6: 4e75 rts <== NOT EXECUTED 4a1e8: 245f moveal %sp@+,%a2 <== NOT EXECUTED
case IMFS_DEVICE:
loc->handlers = &IMFS_device_handlers;
break;
case IMFS_SYM_LINK:
case IMFS_HARD_LINK:
loc->handlers = &IMFS_link_handlers;
4a1ea: 203c 0005 d6ea movel #382698,%d0 <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1f0: 4e5e unlk %fp <== NOT EXECUTED
case IMFS_DEVICE:
loc->handlers = &IMFS_device_handlers;
break;
case IMFS_SYM_LINK:
case IMFS_HARD_LINK:
loc->handlers = &IMFS_link_handlers;
4a1f2: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1f6: 4280 clrl %d0 <== NOT EXECUTED 4a1f8: 4e75 rts <== NOT EXECUTED 4a1fa: 4280 clrl %d0 <== NOT EXECUTED
break;
case IMFS_MEMORY_FILE:
loc->handlers = fs_info->memfile_handlers;
break;
case IMFS_FIFO:
loc->handlers = fs_info->fifo_handlers;
4a1fc: 216a 0010 0008 movel %a2@(16),%a0@(8) <== NOT EXECUTED
break;
}
return 0;
}
4a202: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a204: 4e5e unlk %fp <== NOT EXECUTED 4a206: 4e75 rts <== NOT EXECUTED
4a208: 245f moveal %sp@+,%a2
switch( node->type ) {
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
break;
case IMFS_DEVICE:
loc->handlers = &IMFS_device_handlers;
4a20a: 203c 0005 d67a movel #382586,%d0
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a210: 4e5e unlk %fp
switch( node->type ) {
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
break;
case IMFS_DEVICE:
loc->handlers = &IMFS_device_handlers;
4a212: 2140 0008 movel %d0,%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a216: 4280 clrl %d0 <== NOT EXECUTED
00049ee0 <IMFS_allocate_node>:
IMFS_jnode_t *IMFS_allocate_node(
IMFS_jnode_types_t type,
const char *name,
mode_t mode
)
{
49ee0: 4e56 fff8 linkw %fp,#-8 49ee4: 2f0a movel %a2,%sp@-
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
49ee6: 4878 0060 pea 60 <DBL_MANT_DIG+0x2b> 49eea: 4878 0001 pea 1 <ADD> 49eee: 4eb9 0004 28f0 jsr 428f0 <calloc>
if ( !node )
49ef4: 508f addql #8,%sp
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
49ef6: 2440 moveal %d0,%a2
if ( !node )
49ef8: 4a80 tstl %d0
49efa: 6758 beqs 49f54 <IMFS_allocate_node+0x74> <== NEVER TAKEN
/* * Fill in the basic information */ node->st_nlink = 1; node->type = type; strncpy( node->name, name, IMFS_NAME_MAX );
49efc: 4878 0020 pea 20 <OPER2+0xc> 49f00: 2f2e 000c movel %fp@(12),%sp@-
/*
* Fill in the basic information
*/
node->st_nlink = 1;
node->type = type;
49f04: 256e 0008 0048 movel %fp@(8),%a2@(72)
strncpy( node->name, name, IMFS_NAME_MAX );
49f0a: 486a 000c pea %a2@(12)
return NULL;
/*
* Fill in the basic information
*/
node->st_nlink = 1;
49f0e: 7001 moveq #1,%d0 49f10: 3540 0032 movew %d0,%a2@(50)
node->type = type; strncpy( node->name, name, IMFS_NAME_MAX );
49f14: 4eb9 0004 fd7c jsr 4fd7c <strncpy>
/*
* Fill in the mode and permission information for the jnode structure.
*/
node->st_mode = mode;
49f1a: 256e 0010 002e movel %fp@(16),%a2@(46)
#if defined(RTEMS_POSIX_API)
node->st_uid = geteuid();
49f20: 4eb9 0004 b06c jsr 4b06c <geteuid> 49f26: 3540 0038 movew %d0,%a2@(56)
node->st_gid = getegid();
49f2a: 4eb9 0004 b058 jsr 4b058 <getegid>
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
49f30: 42a7 clrl %sp@- 49f32: 486e fff8 pea %fp@(-8)
* Fill in the mode and permission information for the jnode structure.
*/
node->st_mode = mode;
#if defined(RTEMS_POSIX_API)
node->st_uid = geteuid();
node->st_gid = getegid();
49f36: 3540 003a movew %d0,%a2@(58)
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
49f3a: 4eb9 0004 2d8c jsr 42d8c <gettimeofday>
node->stat_atime = (time_t) tv.tv_sec;
49f40: 202e fff8 movel %fp@(-8),%d0
node->stat_mtime = (time_t) tv.tv_sec;
node->stat_ctime = (time_t) tv.tv_sec;
return node;
49f44: 4fef 0014 lea %sp@(20),%sp
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
node->stat_atime = (time_t) tv.tv_sec;
49f48: 2540 003c movel %d0,%a2@(60)
node->stat_mtime = (time_t) tv.tv_sec;
49f4c: 2540 0040 movel %d0,%a2@(64)
node->stat_ctime = (time_t) tv.tv_sec;
49f50: 2540 0044 movel %d0,%a2@(68)
return node;
}
49f54: 200a movel %a2,%d0 49f56: 246e fff4 moveal %fp@(-12),%a2
49f5a: 4e5e unlk %fp <== NOT EXECUTED
0004abb8 <IMFS_check_node_remove>:
void IMFS_check_node_remove( IMFS_jnode_t *jnode )
{
4abb8: 4e56 0000 linkw %fp,#0 4abbc: 2f0a movel %a2,%sp@- 4abbe: 246e 0008 moveal %fp@(8),%a2
if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) {
4abc2: 2f0a movel %a2,%sp@- 4abc4: 4eb9 0004 b2de jsr 4b2de <rtems_libio_is_file_open> 4abca: 588f addql #4,%sp 4abcc: 4a80 tstl %d0
4abce: 6634 bnes 4ac04 <IMFS_check_node_remove+0x4c> <== ALWAYS TAKEN
4abd0: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED 4abd4: 662e bnes 4ac04 <IMFS_check_node_remove+0x4c> <== NOT EXECUTED
if ( rtems_filesystem_current.node_access == jnode )
4abd6: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0 <== NOT EXECUTED 4abdc: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 4abe0: 6744 beqs 4ac26 <IMFS_check_node_remove+0x6e> <== NOT EXECUTED
rtems_filesystem_current.node_access = NULL;
switch ( jnode->type ) {
4abe2: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4abe6: 7204 moveq #4,%d1 <== NOT EXECUTED 4abe8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4abea: 6748 beqs 4ac34 <IMFS_check_node_remove+0x7c> <== NOT EXECUTED 4abec: 123c 0005 moveb #5,%d1 <== NOT EXECUTED 4abf0: b280 cmpl %d0,%d1 <== NOT EXECUTED 4abf2: 6718 beqs 4ac0c <IMFS_check_node_remove+0x54> <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4abf4: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
4abf8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4abfc: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4abfe: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
} }
4ac04: 246e fffc moveal %fp@(-4),%a2 4ac08: 4e5e unlk %fp 4ac0a: 4e75 rts
if ( rtems_filesystem_current.node_access == jnode )
rtems_filesystem_current.node_access = NULL;
switch ( jnode->type ) {
case IMFS_MEMORY_FILE:
IMFS_memfile_remove( jnode );
4ac0c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ac0e: 4eb9 0004 d334 jsr 4d334 <IMFS_memfile_remove> <== NOT EXECUTED
break;
4ac14: 588f addql #4,%sp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4ac16: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
4ac1a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ac1e: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4ac20: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
{
if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) {
if ( rtems_filesystem_current.node_access == jnode )
rtems_filesystem_current.node_access = NULL;
switch ( jnode->type ) {
4ac26: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4ac2a: 7204 moveq #4,%d1 <== NOT EXECUTED
void IMFS_check_node_remove( IMFS_jnode_t *jnode )
{
if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) {
if ( rtems_filesystem_current.node_access == jnode )
rtems_filesystem_current.node_access = NULL;
4ac2c: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
switch ( jnode->type ) {
4ac30: b280 cmpl %d0,%d1 <== NOT EXECUTED 4ac32: 66b8 bnes 4abec <IMFS_check_node_remove+0x34> <== NOT EXECUTED
case IMFS_MEMORY_FILE:
IMFS_memfile_remove( jnode );
break;
case IMFS_SYM_LINK:
free( jnode->info.sym_link.name );
4ac34: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 4ac38: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
break;
4ac3e: 588f addql #4,%sp <== NOT EXECUTED
default:
break;
}
free( jnode );
4ac40: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
4ac44: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ac48: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4ac4a: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
00049e70 <IMFS_chown>:
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
49e70: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 49e74: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49e78: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = (IMFS_jnode_t *) pathloc->node_access;
49e7c: 2450 moveal %a0@,%a2 <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
49e7e: 4284 clrl %d4 <== NOT EXECUTED
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
49e80: 362e 000e movew %fp@(14),%d3 <== NOT EXECUTED 49e84: 342e 0012 movew %fp@(18),%d2 <== NOT EXECUTED
/*
* Verify I am the owner of the node or the super user.
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
49e88: 4eb9 0004 b06c jsr 4b06c <geteuid> <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
49e8e: 4281 clrl %d1 <== NOT EXECUTED 49e90: 382a 0038 movew %a2@(56),%d4 <== NOT EXECUTED 49e94: 3200 movew %d0,%d1 <== NOT EXECUTED 49e96: b284 cmpl %d4,%d1 <== NOT EXECUTED 49e98: 6704 beqs 49e9e <IMFS_chown+0x2e> <== NOT EXECUTED 49e9a: 4a40 tstw %d0 <== NOT EXECUTED 49e9c: 6628 bnes 49ec6 <IMFS_chown+0x56> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
#endif
jnode->st_uid = owner;
49e9e: 3543 0038 movew %d3,%a2@(56) <== NOT EXECUTED
jnode->st_gid = group;
49ea2: 3542 003a movew %d2,%a2@(58) <== NOT EXECUTED
IMFS_update_ctime( jnode );
49ea6: 42a7 clrl %sp@- <== NOT EXECUTED 49ea8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49eac: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 49eb2: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
49eb8: 508f addql #8,%sp <== NOT EXECUTED 49eba: 4280 clrl %d0 <== NOT EXECUTED
}
49ebc: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 49ec2: 4e5e unlk %fp <== NOT EXECUTED 49ec4: 4e75 rts <== NOT EXECUTED
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
rtems_set_errno_and_return_minus_one( EPERM );
49ec6: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 49ecc: 7201 moveq #1,%d1 <== NOT EXECUTED 49ece: 2040 moveal %d0,%a0 <== NOT EXECUTED 49ed0: 70ff moveq #-1,%d0 <== NOT EXECUTED
jnode->st_gid = group;
IMFS_update_ctime( jnode );
return 0;
}
49ed2: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
rtems_set_errno_and_return_minus_one( EPERM );
49ed8: 2081 movel %d1,%a0@ <== NOT EXECUTED
jnode->st_gid = group;
IMFS_update_ctime( jnode );
return 0;
}
49eda: 4e5e unlk %fp <== NOT EXECUTED
...
00049f5e <IMFS_create_node>:
IMFS_jnode_types_t type,
const char *name,
mode_t mode,
const IMFS_types_union *info
)
{
49f5e: 4e56 ffec linkw %fp,#-20 49f62: 206e 0008 moveal %fp@(8),%a0 49f66: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 49f6a: 242e 000c movel %fp@(12),%d2 49f6e: 286e 0018 moveal %fp@(24),%a4
IMFS_fs_info_t *fs_info;
/*
* MUST have a parent node to call this routine.
*/
if ( parent_loc == NULL )
49f72: 4a88 tstl %a0 49f74: 6700 00ac beqw 4a022 <IMFS_create_node+0xc4>
return NULL;
parent = parent_loc->node_access;
fs_info = parent_loc->mt_entry->fs_info;
49f78: 2268 0010 moveal %a0@(16),%a1
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49f7c: 7007 moveq #7,%d0
* MUST have a parent node to call this routine.
*/
if ( parent_loc == NULL )
return NULL;
parent = parent_loc->node_access;
49f7e: 2650 moveal %a0@,%a3
fs_info = parent_loc->mt_entry->fs_info;
49f80: 2469 0034 moveal %a1@(52),%a2
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49f84: b082 cmpl %d2,%d0 49f86: 6700 008c beqw 4a014 <IMFS_create_node+0xb6>
return NULL;
/*
* Allocate filesystem node and fill in basic information
*/
node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask );
49f8a: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0 49f90: 2028 002c movel %a0@(44),%d0 49f94: 4680 notl %d0 49f96: c0ae 0014 andl %fp@(20),%d0 49f9a: 2f00 movel %d0,%sp@- 49f9c: 2f2e 0010 movel %fp@(16),%sp@- 49fa0: 2f02 movel %d2,%sp@- 49fa2: 4eb9 0004 9ee0 jsr 49ee0 <IMFS_allocate_node>
if ( !node )
49fa8: 4fef 000c lea %sp@(12),%sp
return NULL;
/*
* Allocate filesystem node and fill in basic information
*/
node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask );
49fac: 2a40 moveal %d0,%a5
if ( !node )
49fae: 4a80 tstl %d0
49fb0: 6756 beqs 4a008 <IMFS_create_node+0xaa> <== NEVER TAKEN
return NULL;
/*
* Set the type specific information
*/
if ( type == IMFS_DIRECTORY ) {
49fb2: 7001 moveq #1,%d0 49fb4: b082 cmpl %d2,%d0
49fb6: 6778 beqs 4a030 <IMFS_create_node+0xd2>
rtems_chain_initialize_empty(&node->info.directory.Entries);
} else if ( type == IMFS_HARD_LINK ) {
49fb8: 7003 moveq #3,%d0 49fba: b082 cmpl %d2,%d0 49fbc: 6700 00d6 beqw 4a094 <IMFS_create_node+0x136>
node->info.hard_link.link_node = info->hard_link.link_node;
} else if ( type == IMFS_SYM_LINK ) {
49fc0: 7204 moveq #4,%d1 49fc2: b282 cmpl %d2,%d1 49fc4: 6700 00ce beqw 4a094 <IMFS_create_node+0x136>
node->info.sym_link.name = info->sym_link.name;
} else if ( type == IMFS_DEVICE ) {
49fc8: 7002 moveq #2,%d0 49fca: b082 cmpl %d2,%d0 49fcc: 6700 0098 beqw 4a066 <IMFS_create_node+0x108>
node->info.device.major = info->device.major;
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
49fd0: 7206 moveq #6,%d1 <== NOT EXECUTED 49fd2: b282 cmpl %d2,%d1 <== NOT EXECUTED 49fd4: 6700 010e beqw 4a0e4 <IMFS_create_node+0x186> <== NOT EXECUTED
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
49fd8: 7205 moveq #5,%d1 <== NOT EXECUTED 49fda: b282 cmpl %d2,%d1 <== NOT EXECUTED 49fdc: 6700 013a beqw 4a118 <IMFS_create_node+0x1ba> <== NOT EXECUTED
node->info.file.size = 0;
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
node->info.file.triply_indirect = 0;
} else if ( type == IMFS_FIFO ) {
49fe0: 7207 moveq #7,%d1 <== NOT EXECUTED 49fe2: b282 cmpl %d2,%d1 <== NOT EXECUTED 49fe4: 6700 00d6 beqw 4a0bc <IMFS_create_node+0x15e> <== NOT EXECUTED
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
49fe8: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49fec: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49fee: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
49ff2: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49ff6: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49ffa: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49ffc: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a000: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a006: 508f addql #8,%sp <== NOT EXECUTED
}
4a008: 200d movel %a5,%d0 4a00a: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 4a010: 4e5e unlk %fp 4a012: 4e75 rts
fs_info = parent_loc->mt_entry->fs_info;
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
4a014: 223c 0005 d60a movel #382474,%d1 <== NOT EXECUTED 4a01a: b2aa 0010 cmpl %a2@(16),%d1 <== NOT EXECUTED 4a01e: 6600 ff6a bnew 49f8a <IMFS_create_node+0x2c> <== NOT EXECUTED
fs_info->fifo_handlers == &rtems_filesystem_handlers_default )
return NULL;
4a022: 9bcd subal %a5,%a5 <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
}
4a024: 200d movel %a5,%d0 <== NOT EXECUTED 4a026: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a02c: 4e5e unlk %fp <== NOT EXECUTED 4a02e: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4a030: 41ed 0050 lea %a5@(80),%a0 4a034: 2b48 004c movel %a0,%a5@(76)
/*
* Set the type specific information
*/
if ( type == IMFS_DIRECTORY ) {
rtems_chain_initialize_empty(&node->info.directory.Entries);
4a038: 41ed 004c lea %a5@(76),%a0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
4a03c: 42ad 0050 clrl %a5@(80) 4a040: 2b48 0054 movel %a0,%a5@(84)
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
4a044: 202a 0004 movel %a2@(4),%d0 4a048: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a04a: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
4a04e: 2540 0004 movel %d0,%a2@(4) 4a052: 2b40 0034 movel %d0,%a5@(52) 4a056: 2f0d movel %a5,%sp@- 4a058: 486b 004c pea %a3@(76) 4a05c: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a062: 508f addql #8,%sp 4a064: 60a2 bras 4a008 <IMFS_create_node+0xaa>
} else if ( type == IMFS_HARD_LINK ) {
node->info.hard_link.link_node = info->hard_link.link_node;
} else if ( type == IMFS_SYM_LINK ) {
node->info.sym_link.name = info->sym_link.name;
} else if ( type == IMFS_DEVICE ) {
node->info.device.major = info->device.major;
4a066: 2b54 004c movel %a4@,%a5@(76)
node->info.device.minor = info->device.minor;
4a06a: 2b6c 0004 0050 movel %a4@(4),%a5@(80)
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
4a070: 202a 0004 movel %a2@(4),%d0 4a074: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a076: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
4a07a: 2540 0004 movel %d0,%a2@(4) 4a07e: 2b40 0034 movel %d0,%a5@(52) 4a082: 2f0d movel %a5,%sp@- 4a084: 486b 004c pea %a3@(76) 4a088: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a08e: 508f addql #8,%sp 4a090: 6000 ff76 braw 4a008 <IMFS_create_node+0xaa>
if ( type == IMFS_DIRECTORY ) {
rtems_chain_initialize_empty(&node->info.directory.Entries);
} else if ( type == IMFS_HARD_LINK ) {
node->info.hard_link.link_node = info->hard_link.link_node;
} else if ( type == IMFS_SYM_LINK ) {
node->info.sym_link.name = info->sym_link.name;
4a094: 2b54 004c movel %a4@,%a5@(76) <== NOT EXECUTED
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
4a098: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a09c: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a09e: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
4a0a2: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a0a6: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a0aa: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a0ac: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a0b0: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a0b6: 508f addql #8,%sp <== NOT EXECUTED 4a0b8: 6000 ff4e braw 4a008 <IMFS_create_node+0xaa> <== NOT EXECUTED
node->info.file.size = 0;
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
node->info.file.triply_indirect = 0;
} else if ( type == IMFS_FIFO ) {
node->info.fifo.pipe = NULL;
4a0bc: 42ad 004c clrl %a5@(76) <== NOT EXECUTED
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
4a0c0: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a0c4: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
4a0c8: 5280 addql #1,%d0 <== NOT EXECUTED 4a0ca: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a0ce: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a0d2: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a0d4: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a0d8: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a0de: 508f addql #8,%sp <== NOT EXECUTED 4a0e0: 6000 ff26 braw 4a008 <IMFS_create_node+0xaa> <== NOT EXECUTED
} else if ( type == IMFS_DEVICE ) {
node->info.device.major = info->device.major;
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
4a0e4: 42ad 0054 clrl %a5@(84) <== NOT EXECUTED
node->info.sym_link.name = info->sym_link.name;
} else if ( type == IMFS_DEVICE ) {
node->info.device.major = info->device.major;
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
4a0e8: 4280 clrl %d0 <== NOT EXECUTED 4a0ea: 4281 clrl %d1 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a0ec: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->info.sym_link.name = info->sym_link.name;
} else if ( type == IMFS_DEVICE ) {
node->info.device.major = info->device.major;
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
4a0f0: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 4a0f4: 2b41 0050 movel %d1,%a5@(80) <== NOT EXECUTED
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
4a0f8: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a0fc: 5280 addql #1,%d0 <== NOT EXECUTED 4a0fe: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a102: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a106: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a108: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a10c: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a112: 508f addql #8,%sp <== NOT EXECUTED 4a114: 6000 fef2 braw 4a008 <IMFS_create_node+0xaa> <== NOT EXECUTED
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
node->info.file.size = 0;
node->info.file.indirect = 0;
4a118: 42ad 0054 clrl %a5@(84) <== NOT EXECUTED
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
node->info.file.size = 0;
4a11c: 4280 clrl %d0 <== NOT EXECUTED 4a11e: 4281 clrl %d1 <== NOT EXECUTED
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
4a120: 42ad 0058 clrl %a5@(88) <== NOT EXECUTED
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
node->info.file.size = 0;
4a124: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 4a128: 2b41 0050 movel %d1,%a5@(80) <== NOT EXECUTED
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
node->info.file.triply_indirect = 0;
4a12c: 42ad 005c clrl %a5@(92) <== NOT EXECUTED
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
4a130: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a134: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a136: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
4a13a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a13e: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a142: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a144: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a148: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a14e: 508f addql #8,%sp <== NOT EXECUTED 4a150: 6000 feb6 braw 4a008 <IMFS_create_node+0xaa> <== NOT EXECUTED
0004ab74 <IMFS_create_orphan>:
#include <rtems/libio_.h>
#include "imfs.h"
void IMFS_create_orphan( IMFS_jnode_t *jnode )
{
4ab74: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4ab78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ab7a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
4ab7e: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4ab82: 670e beqs 4ab92 <IMFS_create_orphan+0x1e> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4ab84: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ab86: 4eb9 0004 6f1c jsr 46f1c <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
4ab8c: 588f addql #4,%sp <== NOT EXECUTED 4ab8e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
}
--jnode->st_nlink;
IMFS_update_ctime( jnode );
4ab92: 42a7 clrl %sp@- <== NOT EXECUTED 4ab94: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
}
--jnode->st_nlink;
4ab98: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED 4ab9c: 5380 subql #1,%d0 <== NOT EXECUTED 4ab9e: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4aba2: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4aba8: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED 4abae: 508f addql #8,%sp <== NOT EXECUTED
}
4abb0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4abb4: 4e5e unlk %fp <== NOT EXECUTED
0004a154 <IMFS_create_root_node>:
return node;
}
IMFS_jnode_t *IMFS_create_root_node(void)
{
4a154: 4e56 0000 linkw %fp,#0
IMFS_jnode_t *node;
/*
* Allocate filesystem node and fill in basic information
*/
node = IMFS_allocate_node( IMFS_DIRECTORY, "", (S_IFDIR | 0755) );
4a158: 4878 41ed pea 41ed <D_MAX_EXP+0x39ee> 4a15c: 4879 0005 d468 pea 5d468 <rtems_filesystem_default_pathconf+0xb4> 4a162: 4878 0001 pea 1 <ADD> 4a166: 4eb9 0004 9ee0 jsr 49ee0 <IMFS_allocate_node>
if ( !node )
4a16c: 4fef 000c lea %sp@(12),%sp 4a170: 4a80 tstl %d0
4a172: 6716 beqs 4a18a <IMFS_create_root_node+0x36> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4a174: 2240 moveal %d0,%a1
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
4a176: 2040 moveal %d0,%a0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4a178: 43e9 0050 lea %a1@(80),%a1 4a17c: 2149 004c movel %a1,%a0@(76)
/* * Set the type specific information * * NOTE: Root node is always a directory. */ rtems_chain_initialize_empty(&node->info.directory.Entries);
4a180: 5989 subql #4,%a1
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
4a182: 42a8 0050 clrl %a0@(80) 4a186: 2149 0054 movel %a1,%a0@(84)
return node;
}
4a18a: 4e5e unlk %fp
...
00044fba <IMFS_dump>:
* NOTE: Assuming the "/" directory is bad.
* Not checking that the starting directory is in an IMFS is bad.
*/
void IMFS_dump( void )
{
44fba: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" );
44fbe: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED
* NOTE: Assuming the "/" directory is bad.
* Not checking that the starting directory is in an IMFS is bad.
*/
void IMFS_dump( void )
{
44fc4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" );
44fc6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44fca: 45f9 0005 3f54 lea 53f54 <fwrite>,%a2 <== NOT EXECUTED 44fd0: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED 44fd4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44fd8: 4879 0006 2f7e pea 62f7e <IntUartPollCallbacks.6307+0x88> <== NOT EXECUTED 44fde: 4e92 jsr %a2@ <== NOT EXECUTED
fprintf(stdout, "/\n" );
44fe0: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44fe6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44fea: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 44fee: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44ff2: 4879 0006 2fb3 pea 62fb3 <IntUartPollCallbacks.6307+0xbd> <== NOT EXECUTED 44ff8: 4e92 jsr %a2@ <== NOT EXECUTED
IMFS_dump_directory( rtems_filesystem_root.node_access, 0 );
44ffa: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 44ffe: 2079 0006 47dc moveal 647dc <rtems_current_user_env>,%a0 <== NOT EXECUTED 45004: 4297 clrl %sp@ <== NOT EXECUTED 45006: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED 4500a: 4eb9 0004 4f2c jsr 44f2c <IMFS_dump_directory> <== NOT EXECUTED
fprintf(stdout, "*************** End of Dump ***************\n" );
45010: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 45016: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4501a: 4878 0037 pea 37 <DBL_MANT_DIG+0x2> <== NOT EXECUTED 4501e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 45022: 4879 0006 2fb6 pea 62fb6 <IntUartPollCallbacks.6307+0xc0> <== NOT EXECUTED 45028: 4e92 jsr %a2@ <== NOT EXECUTED
}
4502a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
void IMFS_dump( void )
{
fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" );
fprintf(stdout, "/\n" );
IMFS_dump_directory( rtems_filesystem_root.node_access, 0 );
fprintf(stdout, "*************** End of Dump ***************\n" );
4502e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
45032: 4e5e unlk %fp <== NOT EXECUTED
00044f2c <IMFS_dump_directory>:
*/
void IMFS_dump_directory(
IMFS_jnode_t *the_directory,
int level
)
{
44f2c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 44f30: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44f34: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
44f38: 2808 movel %a0,%d4 <== NOT EXECUTED 44f3a: 0684 0000 0050 addil #80,%d4 <== NOT EXECUTED 44f40: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
IMFS_assert( level >= 0 );
IMFS_assert( the_directory->type == IMFS_DIRECTORY );
the_chain = &the_directory->info.directory.Entries;
for ( the_node = the_chain->first;
44f44: 2668 004c moveal %a0@(76),%a3 <== NOT EXECUTED 44f48: b88b cmpl %a3,%d4 <== NOT EXECUTED 44f4a: 6754 beqs 44fa0 <IMFS_dump_directory+0x74> <== NOT EXECUTED
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( the_jnode->type == IMFS_DIRECTORY )
IMFS_dump_directory( the_jnode, level + 1 );
44f4c: 2a03 movel %d3,%d5 <== NOT EXECUTED 44f4e: 49f9 0004 4da0 lea 44da0 <IMFS_print_jnode>,%a4 <== NOT EXECUTED 44f54: 45f9 0005 3f54 lea 53f54 <fwrite>,%a2 <== NOT EXECUTED 44f5a: 5285 addql #1,%d5 <== NOT EXECUTED 44f5c: 4bf9 0004 4f2c lea 44f2c <IMFS_dump_directory>,%a5 <== NOT EXECUTED
!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++ )
44f62: 4a83 tstl %d3 <== NOT EXECUTED 44f64: 6d26 blts 44f8c <IMFS_dump_directory+0x60> <== NOT EXECUTED 44f66: 4282 clrl %d2 <== NOT EXECUTED
fprintf(stdout, "...." );
44f68: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED
!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++ )
44f6e: 5282 addql #1,%d2 <== NOT EXECUTED
fprintf(stdout, "...." );
44f70: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44f74: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED 44f78: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44f7c: 4879 0006 2f79 pea 62f79 <IntUartPollCallbacks.6307+0x83> <== NOT EXECUTED 44f82: 4e92 jsr %a2@ <== NOT EXECUTED
!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++ )
44f84: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 44f88: b483 cmpl %d3,%d2 <== NOT EXECUTED 44f8a: 6fdc bles 44f68 <IMFS_dump_directory+0x3c> <== NOT EXECUTED
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
44f8c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44f8e: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_jnode->type == IMFS_DIRECTORY )
44f90: 588f addql #4,%sp <== NOT EXECUTED 44f92: 7001 moveq #1,%d0 <== NOT EXECUTED 44f94: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 44f98: 6710 beqs 44faa <IMFS_dump_directory+0x7e> <== NOT EXECUTED
the_chain = &the_directory->info.directory.Entries;
for ( the_node = the_chain->first;
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
44f9a: 2653 moveal %a3@,%a3 <== NOT EXECUTED
IMFS_assert( level >= 0 );
IMFS_assert( the_directory->type == IMFS_DIRECTORY );
the_chain = &the_directory->info.directory.Entries;
for ( the_node = the_chain->first;
44f9c: b88b cmpl %a3,%d4 <== NOT EXECUTED 44f9e: 66c2 bnes 44f62 <IMFS_dump_directory+0x36> <== NOT EXECUTED
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( the_jnode->type == IMFS_DIRECTORY )
IMFS_dump_directory( the_jnode, level + 1 );
}
}
44fa0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 44fa6: 4e5e unlk %fp <== NOT EXECUTED 44fa8: 4e75 rts <== NOT EXECUTED
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( the_jnode->type == IMFS_DIRECTORY )
IMFS_dump_directory( the_jnode, level + 1 );
44faa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 44fac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44fae: 4e95 jsr %a5@ <== NOT EXECUTED
the_chain = &the_directory->info.directory.Entries;
for ( the_node = the_chain->first;
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
44fb0: 2653 moveal %a3@,%a3 <== NOT EXECUTED
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( the_jnode->type == IMFS_DIRECTORY )
IMFS_dump_directory( the_jnode, level + 1 );
44fb2: 508f addql #8,%sp <== NOT EXECUTED
IMFS_assert( level >= 0 );
IMFS_assert( the_directory->type == IMFS_DIRECTORY );
the_chain = &the_directory->info.directory.Entries;
for ( the_node = the_chain->first;
44fb4: b88b cmpl %a3,%d4 <== NOT EXECUTED 44fb6: 66aa bnes 44f62 <IMFS_dump_directory+0x36> <== NOT EXECUTED 44fb8: 60e6 bras 44fa0 <IMFS_dump_directory+0x74> <== NOT EXECUTED
0004a300 <IMFS_eval_path>:
char token[ IMFS_NAME_MAX + 1 ];
rtems_filesystem_location_info_t newloc;
IMFS_jnode_t *node;
int result;
if ( !rtems_libio_is_valid_perms( flags ) ) {
4a300: 70f8 moveq #-8,%d0
const char *pathname, /* IN */
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
4a302: 4e56 ffb0 linkw %fp,#-80
char token[ IMFS_NAME_MAX + 1 ];
rtems_filesystem_location_info_t newloc;
IMFS_jnode_t *node;
int result;
if ( !rtems_libio_is_valid_perms( flags ) ) {
4a306: c0ae 0010 andl %fp@(16),%d0
const char *pathname, /* IN */
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
4a30a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a30e: 2a6e 0008 moveal %fp@(8),%a5 4a312: 246e 000c moveal %fp@(12),%a2 4a316: 286e 0014 moveal %fp@(20),%a4
char token[ IMFS_NAME_MAX + 1 ];
rtems_filesystem_location_info_t newloc;
IMFS_jnode_t *node;
int result;
if ( !rtems_libio_is_valid_perms( flags ) ) {
4a31a: 4a80 tstl %d0 4a31c: 6600 0238 bnew 4a556 <IMFS_eval_path+0x256> 4a320: 2c0e movel %fp,%d6 4a322: 280e movel %fp,%d4
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
int i = 0;
4a324: 4282 clrl %d2 4a326: 5986 subql #4,%d6 4a328: 0684 ffff ffdb addil #-37,%d4 4a32e: 2a3c 0004 aa94 movel #305812,%d5
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a334: 2e3c 0004 aa10 movel #305680,%d7
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
4a33a: 2654 moveal %a4@,%a3
* Evaluate all tokens until we are done or an error occurs.
*/
while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
type = IMFS_get_token( &pathname[i], pathnamelen, token, &len );
4a33c: 2f06 movel %d6,%sp@- 4a33e: 2045 moveal %d5,%a0 4a340: 2f04 movel %d4,%sp@- 4a342: 2f0a movel %a2,%sp@- 4a344: 4875 2800 pea %a5@(00000000,%d2:l) 4a348: 4e90 jsr %a0@
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
4a34a: 2054 moveal %a4@,%a0
* Evaluate all tokens until we are done or an error occurs.
*/
while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
type = IMFS_get_token( &pathname[i], pathnamelen, token, &len );
4a34c: 2600 movel %d0,%d3
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
4a34e: 4fef 0010 lea %sp@(16),%sp
*/
while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
type = IMFS_get_token( &pathname[i], pathnamelen, token, &len );
pathnamelen -= len;
4a352: 202e fffc movel %fp@(-4),%d0
i += len;
if ( !pathloc->node_access )
4a356: 4a88 tstl %a0 4a358: 6700 00f8 beqw 4a452 <IMFS_eval_path+0x152>
*/
while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
type = IMFS_get_token( &pathname[i], pathnamelen, token, &len );
pathnamelen -= len;
4a35c: 95c0 subal %d0,%a2
i += len;
4a35e: d480 addl %d0,%d2
rtems_set_errno_and_return_minus_one( ENOENT );
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
4a360: 4a83 tstl %d3
4a362: 6662 bnes 4a3c6 <IMFS_eval_path+0xc6>
* new fs root node and let let the mounted filesystem set the handlers.
*
* NOTE: The behavior of stat() on a mount point appears to be questionable.
*/
if ( node->type == IMFS_DIRECTORY ) {
4a364: 7201 moveq #1,%d1 4a366: b2a8 0048 cmpl %a0@(72),%d1 4a36a: 6600 0132 bnew 4a49e <IMFS_eval_path+0x19e>
if ( node->info.directory.mt_fs != NULL ) {
4a36e: 2068 0058 moveal %a0@(88),%a0 4a372: 4a88 tstl %a0 4a374: 6700 0128 beqw 4a49e <IMFS_eval_path+0x19e>
4a378: 28a8 001c movel %a0@(28),%a4@ <== NOT EXECUTED 4a37c: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a380: 2628 0020 movel %a0@(32),%d3 <== NOT EXECUTED 4a384: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a388: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED
newloc = node->info.directory.mt_fs->mt_fs_root;
*pathloc = newloc;
return (*pathloc->ops->evalpath_h)( &pathname[i-len],
4a38c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a38e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a392: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 4a396: 4872 8800 pea %a2@(00000000,%a0:l) <== NOT EXECUTED 4a39a: 9488 subl %a0,%d2 <== NOT EXECUTED 4a39c: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a3a0: 2051 moveal %a1@,%a0 <== NOT EXECUTED
*
* NOTE: The behavior of stat() on a mount point appears to be questionable.
*/
if ( node->type == IMFS_DIRECTORY ) {
if ( node->info.directory.mt_fs != NULL ) {
4a3a2: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a3a6: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a3aa: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED 4a3ae: 2940 0010 movel %d0,%a4@(16) <== NOT EXECUTED
newloc = node->info.directory.mt_fs->mt_fs_root;
*pathloc = newloc;
return (*pathloc->ops->evalpath_h)( &pathname[i-len],
4a3b2: 4e90 jsr %a0@ <== NOT EXECUTED 4a3b4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a3b8: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a3ba: 2003 movel %d3,%d0 4a3bc: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a3c2: 4e5e unlk %fp 4a3c4: 4e75 rts
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
if ( node->type == IMFS_DIRECTORY )
4a3c6: 7001 moveq #1,%d0 4a3c8: b0ab 0048 cmpl %a3@(72),%d0 4a3cc: 6700 00b8 beqw 4a486 <IMFS_eval_path+0x186>
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
rtems_set_errno_and_return_minus_one( EACCES );
node = pathloc->node_access;
4a3d0: 2648 moveal %a0,%a3
switch( type ) {
4a3d2: 7003 moveq #3,%d0 4a3d4: b083 cmpl %d3,%d0
4a3d6: 671c beqs 4a3f4 <IMFS_eval_path+0xf4>
4a3d8: 7204 moveq #4,%d1 4a3da: b283 cmpl %d3,%d1 4a3dc: 6700 008e beqw 4a46c <IMFS_eval_path+0x16c> 4a3e0: 103c 0002 moveb #2,%d0 4a3e4: b083 cmpl %d3,%d0
4a3e6: 6748 beqs 4a430 <IMFS_eval_path+0x130> <== NEVER TAKEN
/*
* Evaluate all tokens until we are done or an error occurs.
*/
while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
4a3e8: 7004 moveq #4,%d0 4a3ea: b083 cmpl %d3,%d0 4a3ec: 6600 ff4e bnew 4a33c <IMFS_eval_path+0x3c>
4a3f0: 6000 ff72 braw 4a364 <IMFS_eval_path+0x64> <== NOT EXECUTED
case IMFS_NAME:
/*
* If we are at a link follow it.
*/
if ( node->type == IMFS_HARD_LINK ) {
4a3f4: 2028 0048 movel %a0@(72),%d0 4a3f8: 7203 moveq #3,%d1 4a3fa: b280 cmpl %d0,%d1 4a3fc: 6700 00d8 beqw 4a4d6 <IMFS_eval_path+0x1d6>
* It would be a design error if we evaluated the link and
* was broken.
*/
IMFS_assert( node );
} else if ( node->type == IMFS_SYM_LINK ) {
4a400: 7204 moveq #4,%d1 4a402: b280 cmpl %d0,%d1 4a404: 6700 0134 beqw 4a53a <IMFS_eval_path+0x23a>
}
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
4a408: 7201 moveq #1,%d1 4a40a: b280 cmpl %d0,%d1 4a40c: 6600 0162 bnew 4a570 <IMFS_eval_path+0x270>
/*
* If we are at a node that is a mount point. Set loc to the
* new fs root node and let them finish evaluating the path.
*/
if ( node->info.directory.mt_fs != NULL ) {
4a410: 206b 0058 moveal %a3@(88),%a0 4a414: 4a88 tstl %a0 4a416: 6600 ff60 bnew 4a378 <IMFS_eval_path+0x78>
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a41a: 2f04 movel %d4,%sp@- 4a41c: 2047 moveal %d7,%a0 4a41e: 2f0b movel %a3,%sp@- 4a420: 4e90 jsr %a0@
if ( !node )
4a422: 508f addql #8,%sp
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a424: 2640 moveal %d0,%a3
if ( !node )
4a426: 4a80 tstl %d0
4a428: 6728 beqs 4a452 <IMFS_eval_path+0x152>
/*
* Set the node access to the point we have found.
*/
pathloc->node_access = node;
4a42a: 288b movel %a3,%a4@ 4a42c: 6000 ff0e braw 4a33c <IMFS_eval_path+0x3c>
case IMFS_UP_DIR:
/*
* Am I at the root of all filesystems? (chroot'ed?)
*/
if ( pathloc->node_access == rtems_filesystem_root.node_access )
4a430: 2279 0005 e54c moveal 5e54c <rtems_current_user_env>,%a1 <== NOT EXECUTED 4a436: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a43a: 6700 ff00 beqw 4a33c <IMFS_eval_path+0x3c> <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
pathloc->mt_entry->mt_fs_root.node_access) {
4a43e: 226c 0010 moveal %a4@(16),%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a442: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a446: 6700 00a4 beqw 4a4ec <IMFS_eval_path+0x1ec> <== NOT EXECUTED
pathnamelen+len,
flags,pathloc);
}
} else {
if ( !node->Parent )
4a44a: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED 4a44e: 4a8b tstl %a3 <== NOT EXECUTED 4a450: 66d8 bnes 4a42a <IMFS_eval_path+0x12a> <== NOT EXECUTED
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
if ( !node )
rtems_set_errno_and_return_minus_one( ENOENT );
4a452: 4eb9 0004 e90c jsr 4e90c <__errno> 4a458: 76ff moveq #-1,%d3 4a45a: 7a02 moveq #2,%d5 4a45c: 2040 moveal %d0,%a0
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a45e: 2003 movel %d3,%d0
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
if ( !node )
rtems_set_errno_and_return_minus_one( ENOENT );
4a460: 2085 movel %d5,%a0@
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a462: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a468: 4e5e unlk %fp 4a46a: 4e75 rts
case IMFS_NO_MORE_PATH:
case IMFS_CURRENT_DIR:
break;
case IMFS_INVALID_TOKEN:
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
4a46c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a472: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a474: 785b moveq #91,%d4 <== NOT EXECUTED 4a476: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a478: 2003 movel %d3,%d0 <== NOT EXECUTED
case IMFS_NO_MORE_PATH:
case IMFS_CURRENT_DIR:
break;
case IMFS_INVALID_TOKEN:
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
4a47a: 2084 movel %d4,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a47c: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a482: 4e5e unlk %fp <== NOT EXECUTED 4a484: 4e75 rts <== NOT EXECUTED
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
if ( node->type == IMFS_DIRECTORY )
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
4a486: 4878 0001 pea 1 <ADD> 4a48a: 2f0c movel %a4,%sp@- 4a48c: 4eb9 0004 a21a jsr 4a21a <IMFS_evaluate_permission> 4a492: 508f addql #8,%sp 4a494: 4a80 tstl %d0
4a496: 6724 beqs 4a4bc <IMFS_eval_path+0x1bc> <== NEVER TAKEN
4a498: 2054 moveal %a4@,%a0 4a49a: 6000 ff34 braw 4a3d0 <IMFS_eval_path+0xd0>
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
4a49e: 2f0c movel %a4,%sp@- 4a4a0: 4eb9 0004 a190 jsr 4a190 <IMFS_Set_handlers>
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
4a4a6: 2eae 0010 movel %fp@(16),%sp@
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
4a4aa: 2600 movel %d0,%d3
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
4a4ac: 2f0c movel %a4,%sp@- 4a4ae: 4eb9 0004 a21a jsr 4a21a <IMFS_evaluate_permission> 4a4b4: 508f addql #8,%sp 4a4b6: 4a80 tstl %d0 4a4b8: 6600 ff00 bnew 4a3ba <IMFS_eval_path+0xba>
rtems_set_errno_and_return_minus_one( EACCES );
4a4bc: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a4c2: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a4c4: 740d moveq #13,%d2 <== NOT EXECUTED 4a4c6: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
4a4c8: 2003 movel %d3,%d0 <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
4a4ca: 2082 movel %d2,%a0@ <== NOT EXECUTED
return result;
}
4a4cc: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a4d2: 4e5e unlk %fp <== NOT EXECUTED 4a4d4: 4e75 rts <== NOT EXECUTED
case IMFS_NAME:
/*
* If we are at a link follow it.
*/
if ( node->type == IMFS_HARD_LINK ) {
IMFS_evaluate_hard_link( pathloc, 0 );
4a4d6: 42a7 clrl %sp@- <== NOT EXECUTED 4a4d8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a4da: 4eb9 0004 a2b4 jsr 4a2b4 <IMFS_evaluate_hard_link> <== NOT EXECUTED
node = pathloc->node_access;
4a4e0: 2654 moveal %a4@,%a3 <== NOT EXECUTED 4a4e2: 508f addql #8,%sp <== NOT EXECUTED 4a4e4: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a4e8: 6000 ff1e braw 4a408 <IMFS_eval_path+0x108> <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a4ec: 28a9 0008 movel %a1@(8),%a4@ <== NOT EXECUTED 4a4f0: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a4f4: 2629 000c movel %a1@(12),%d3 <== NOT EXECUTED 4a4f8: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a4fc: 2029 0018 movel %a1@(24),%d0 <== NOT EXECUTED
if ( pathloc->node_access == rtems_filesystem_root.node_access ) {
break; /* Throw out the .. in this case */
} else {
newloc = pathloc->mt_entry->mt_point_node;
*pathloc = newloc;
return (*pathloc->ops->evalpath_h)(&(pathname[i-len]),
4a500: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a502: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a506: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED 4a50a: 4872 9800 pea %a2@(00000000,%a1:l) <== NOT EXECUTED 4a50e: 9489 subl %a1,%d2 <== NOT EXECUTED 4a510: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a514: 2250 moveal %a0@,%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a516: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a51a: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a51e: 2948 000c movel %a0,%a4@(12) <== NOT EXECUTED 4a522: 2940 0010 movel %d0,%a4@(16) <== NOT EXECUTED
if ( pathloc->node_access == rtems_filesystem_root.node_access ) {
break; /* Throw out the .. in this case */
} else {
newloc = pathloc->mt_entry->mt_point_node;
*pathloc = newloc;
return (*pathloc->ops->evalpath_h)(&(pathname[i-len]),
4a526: 4e91 jsr %a1@ <== NOT EXECUTED 4a528: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a52c: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a52e: 2003 movel %d3,%d0 <== NOT EXECUTED 4a530: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a536: 4e5e unlk %fp <== NOT EXECUTED 4a538: 4e75 rts <== NOT EXECUTED
* was broken.
*/
IMFS_assert( node );
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_sym_link( pathloc, 0 );
4a53a: 42a7 clrl %sp@- <== NOT EXECUTED 4a53c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a53e: 4eb9 0004 a598 jsr 4a598 <IMFS_evaluate_sym_link> <== NOT EXECUTED
/*
* In contrast to a hard link, it is possible to have a broken
* symbolic link.
*/
node = pathloc->node_access;
4a544: 2654 moveal %a4@,%a3 <== NOT EXECUTED
if ( result == -1 )
4a546: 508f addql #8,%sp <== NOT EXECUTED 4a548: 72ff moveq #-1,%d1 <== NOT EXECUTED 4a54a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a54c: 673c beqs 4a58a <IMFS_eval_path+0x28a> <== NOT EXECUTED
/*
* In contrast to a hard link, it is possible to have a broken
* symbolic link.
*/
node = pathloc->node_access;
4a54e: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a552: 6000 feb4 braw 4a408 <IMFS_eval_path+0x108> <== NOT EXECUTED
rtems_filesystem_location_info_t newloc;
IMFS_jnode_t *node;
int result;
if ( !rtems_libio_is_valid_perms( flags ) ) {
rtems_set_errno_and_return_minus_one( EIO );
4a556: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a55c: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a55e: 7e05 moveq #5,%d7 <== NOT EXECUTED 4a560: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a562: 2003 movel %d3,%d0 <== NOT EXECUTED
rtems_filesystem_location_info_t newloc;
IMFS_jnode_t *node;
int result;
if ( !rtems_libio_is_valid_perms( flags ) ) {
rtems_set_errno_and_return_minus_one( EIO );
4a564: 2087 movel %d7,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a566: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a56c: 4e5e unlk %fp <== NOT EXECUTED 4a56e: 4e75 rts <== NOT EXECUTED
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
4a570: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a576: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a578: 7c14 moveq #20,%d6 <== NOT EXECUTED 4a57a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a57c: 2003 movel %d3,%d0 <== NOT EXECUTED
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
4a57e: 2086 movel %d6,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a580: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a586: 4e5e unlk %fp <== NOT EXECUTED 4a588: 4e75 rts <== NOT EXECUTED 4a58a: 2600 movel %d0,%d3 <== NOT EXECUTED 4a58c: 2003 movel %d3,%d0 <== NOT EXECUTED 4a58e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a594: 4e5e unlk %fp <== NOT EXECUTED
0004a6da <IMFS_evaluate_for_make>:
int IMFS_evaluate_for_make(
const char *path, /* IN */
rtems_filesystem_location_info_t *pathloc, /* IN/OUT */
const char **name /* OUT */
)
{
4a6da: 4e56 ffb0 linkw %fp,#-80 4a6de: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a6e2: 286e 0008 moveal %fp@(8),%a4 4a6e6: 2e0e movel %fp,%d7 4a6e8: 2c0e movel %fp,%d6
int i = 0;
4a6ea: 4284 clrl %d4 4a6ec: 5987 subql #4,%d7 4a6ee: 0686 ffff ffdb addil #-37,%d6 4a6f4: 4bf9 0004 aa94 lea 4aa94 <IMFS_get_token>,%a5
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
4a6fa: 2f0c movel %a4,%sp@-
int IMFS_evaluate_for_make(
const char *path, /* IN */
rtems_filesystem_location_info_t *pathloc, /* IN/OUT */
const char **name /* OUT */
)
{
4a6fc: 266e 000c moveal %fp@(12),%a3
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
4a700: 4eb9 0004 fd64 jsr 4fd64 <strlen>
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
4a706: 2453 moveal %a3@,%a2
/*
* Get the path length.
*/
pathlen = strlen( path );
4a708: 588f addql #4,%sp 4a70a: 2400 movel %d0,%d2
* Evaluate all tokens until we are done or an error occurs.
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
4a70c: 2f07 movel %d7,%sp@- 4a70e: 2f06 movel %d6,%sp@- 4a710: 2f02 movel %d2,%sp@- 4a712: 4874 4800 pea %a4@(00000000,%d4:l) 4a716: 4e95 jsr %a5@
pathlen -= len;
4a718: 2a2e fffc movel %fp@(-4),%d5
* Evaluate all tokens until we are done or an error occurs.
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
4a71c: 2600 movel %d0,%d3
pathlen -= len;
i += len;
if ( !pathloc->node_access )
4a71e: 4fef 0010 lea %sp@(16),%sp
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
4a722: 9485 subl %d5,%d2
i += len;
if ( !pathloc->node_access )
4a724: 2053 moveal %a3@,%a0 4a726: 4a88 tstl %a0 4a728: 6700 00ca beqw 4a7f4 <IMFS_evaluate_for_make+0x11a>
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
4a72c: 4a80 tstl %d0
4a72e: 6742 beqs 4a772 <IMFS_evaluate_for_make+0x98>
if ( node->type == IMFS_DIRECTORY )
4a730: 7001 moveq #1,%d0 4a732: b0aa 0048 cmpl %a2@(72),%d0 4a736: 6700 00d6 beqw 4a80e <IMFS_evaluate_for_make+0x134>
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
i += len;
4a73a: d885 addl %d5,%d4
if ( type != IMFS_NO_MORE_PATH )
if ( node->type == IMFS_DIRECTORY )
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
rtems_set_errno_and_return_minus_one( EACCES );
node = pathloc->node_access;
4a73c: 2448 moveal %a0,%a2
switch( type ) {
4a73e: 7002 moveq #2,%d0 4a740: b083 cmpl %d3,%d0 4a742: 6700 008e beqw 4a7d2 <IMFS_evaluate_for_make+0xf8>
4a746: 6426 bccs 4a76e <IMFS_evaluate_for_make+0x94>
4a748: 7203 moveq #3,%d1 4a74a: b283 cmpl %d3,%d1
4a74c: 673e beqs 4a78c <IMFS_evaluate_for_make+0xb2> <== ALWAYS TAKEN
4a74e: 7004 moveq #4,%d0 <== NOT EXECUTED 4a750: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a752: 66b8 bnes 4a70c <IMFS_evaluate_for_make+0x32> <== NOT EXECUTED
case IMFS_NO_MORE_PATH:
rtems_set_errno_and_return_minus_one( EEXIST );
break;
case IMFS_INVALID_TOKEN:
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
4a754: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a75a: 7c5b moveq #91,%d6 <== NOT EXECUTED 4a75c: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a75e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a760: 2086 movel %d6,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a762: 2003 movel %d3,%d0 4a764: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a76a: 4e5e unlk %fp 4a76c: 4e75 rts
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
rtems_set_errno_and_return_minus_one( EACCES );
node = pathloc->node_access;
switch( type ) {
4a76e: 4a83 tstl %d3
4a770: 669a bnes 4a70c <IMFS_evaluate_for_make+0x32> <== ALWAYS TAKEN
pathloc->node_access = node;
break;
case IMFS_NO_MORE_PATH:
rtems_set_errno_and_return_minus_one( EEXIST );
4a772: 4eb9 0004 e90c jsr 4e90c <__errno> 4a778: 76ff moveq #-1,%d3 4a77a: 7e11 moveq #17,%d7 4a77c: 2040 moveal %d0,%a0
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a77e: 2003 movel %d3,%d0
pathloc->node_access = node;
break;
case IMFS_NO_MORE_PATH:
rtems_set_errno_and_return_minus_one( EEXIST );
4a780: 2087 movel %d7,%a0@
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a782: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a788: 4e5e unlk %fp 4a78a: 4e75 rts
pathloc->node_access = node;
break;
case IMFS_NAME:
if ( node->type == IMFS_HARD_LINK ) {
4a78c: 2028 0048 movel %a0@(72),%d0 4a790: 7203 moveq #3,%d1 4a792: b280 cmpl %d0,%d1 4a794: 6700 014e beqw 4a8e4 <IMFS_evaluate_for_make+0x20a>
result = IMFS_evaluate_link( pathloc, 0 );
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
4a798: 7204 moveq #4,%d1 4a79a: b280 cmpl %d0,%d1 4a79c: 6700 0146 beqw 4a8e4 <IMFS_evaluate_for_make+0x20a>
if ( result == -1 )
return -1;
}
node = pathloc->node_access;
if ( !node )
4a7a0: 4a8a tstl %a2 4a7a2: 6700 015c beqw 4a900 <IMFS_evaluate_for_make+0x226>
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
4a7a6: 7001 moveq #1,%d0 4a7a8: b0aa 0048 cmpl %a2@(72),%d0 4a7ac: 6600 0152 bnew 4a900 <IMFS_evaluate_for_make+0x226>
/*
* If we are at a node that is a mount point. Set loc to the
* new fs root node and let them finish evaluating the path.
*/
if ( node->info.directory.mt_fs != NULL ) {
4a7b0: 206a 0058 moveal %a2@(88),%a0 4a7b4: 4a88 tstl %a0 4a7b6: 6600 0162 bnew 4a91a <IMFS_evaluate_for_make+0x240>
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a7ba: 2f06 movel %d6,%sp@- 4a7bc: 2f0a movel %a2,%sp@- 4a7be: 4eb9 0004 aa10 jsr 4aa10 <IMFS_find_match_in_dir>
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
4a7c4: 508f addql #8,%sp
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a7c6: 2440 moveal %d0,%a2
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
4a7c8: 4a80 tstl %d0
4a7ca: 675a beqs 4a826 <IMFS_evaluate_for_make+0x14c>
done = true;
else
pathloc->node_access = node;
4a7cc: 268a movel %a2,%a3@ 4a7ce: 6000 ff3c braw 4a70c <IMFS_evaluate_for_make+0x32>
case IMFS_UP_DIR:
/*
* Am I at the root of all filesystems? (chroot'ed?)
*/
if ( pathloc->node_access == rtems_filesystem_root.node_access )
4a7d2: 2279 0005 e54c moveal 5e54c <rtems_current_user_env>,%a1 <== NOT EXECUTED 4a7d8: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a7dc: 6700 ff2e beqw 4a70c <IMFS_evaluate_for_make+0x32> <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){
4a7e0: 226b 0010 moveal %a3@(16),%a1 <== NOT EXECUTED 4a7e4: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a7e8: 6700 00b0 beqw 4a89a <IMFS_evaluate_for_make+0x1c0> <== NOT EXECUTED
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
}
} else {
if ( !node->Parent )
4a7ec: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED 4a7f0: 4a8a tstl %a2 <== NOT EXECUTED 4a7f2: 66d8 bnes 4a7cc <IMFS_evaluate_for_make+0xf2> <== NOT EXECUTED
* Verify there is not any invalid stuff at the end of the name.
*/
for( ; path[i] != '\0'; i++) {
if ( !IMFS_is_separator( path[ i ] ) )
rtems_set_errno_and_return_minus_one( ENOENT );
4a7f4: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a7fa: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a7fc: 7a02 moveq #2,%d5 <== NOT EXECUTED 4a7fe: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a800: 2003 movel %d3,%d0 <== NOT EXECUTED
* Verify there is not any invalid stuff at the end of the name.
*/
for( ; path[i] != '\0'; i++) {
if ( !IMFS_is_separator( path[ i ] ) )
rtems_set_errno_and_return_minus_one( ENOENT );
4a802: 2085 movel %d5,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a804: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a80a: 4e5e unlk %fp <== NOT EXECUTED 4a80c: 4e75 rts <== NOT EXECUTED
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
if ( node->type == IMFS_DIRECTORY )
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
4a80e: 4878 0001 pea 1 <ADD> 4a812: 2f0b movel %a3,%sp@- 4a814: 4eb9 0004 a21a jsr 4a21a <IMFS_evaluate_permission> 4a81a: 508f addql #8,%sp 4a81c: 4a80 tstl %d0
4a81e: 6760 beqs 4a880 <IMFS_evaluate_for_make+0x1a6> <== NEVER TAKEN
4a820: 2053 moveal %a3@,%a0 4a822: 6000 ff16 braw 4a73a <IMFS_evaluate_for_make+0x60>
case IMFS_CURRENT_DIR:
break;
}
}
*name = &path[ i - len ];
4a826: 2004 movel %d4,%d0 4a828: 90ae fffc subl %fp@(-4),%d0 4a82c: d08c addl %a4,%d0 4a82e: 206e 0010 moveal %fp@(16),%a0 4a832: 2080 movel %d0,%a0@
/*
* We have evaluated the path as far as we can.
* Verify there is not any invalid stuff at the end of the name.
*/
for( ; path[i] != '\0'; i++) {
4a834: 1034 4800 moveb %a4@(00000000,%d4:l),%d0
4a838: 671a beqs 4a854 <IMFS_evaluate_for_make+0x17a> <== ALWAYS TAKEN
4a83a: 4bf9 0004 3c28 lea 43c28 <rtems_filesystem_is_separator>,%a5<== NOT EXECUTED
* pathloc is returned with a pointer to the parent of the new node.
* name is returned with a pointer to the first character in the
* new node name. The parent node is verified to be a directory.
*/
int IMFS_evaluate_for_make(
4a840: 45f4 4801 lea %a4@(00000001,%d4:l),%a2 <== NOT EXECUTED
* We have evaluated the path as far as we can.
* Verify there is not any invalid stuff at the end of the name.
*/
for( ; path[i] != '\0'; i++) {
if ( !IMFS_is_separator( path[ i ] ) )
4a844: 49c0 extbl %d0 <== NOT EXECUTED 4a846: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a848: 4e95 jsr %a5@ <== NOT EXECUTED 4a84a: 588f addql #4,%sp <== NOT EXECUTED 4a84c: 4a80 tstl %d0 <== NOT EXECUTED 4a84e: 67a4 beqs 4a7f4 <IMFS_evaluate_for_make+0x11a> <== NOT EXECUTED
/*
* We have evaluated the path as far as we can.
* Verify there is not any invalid stuff at the end of the name.
*/
for( ; path[i] != '\0'; i++) {
4a850: 101a moveb %a2@+,%d0 <== NOT EXECUTED 4a852: 66f0 bnes 4a844 <IMFS_evaluate_for_make+0x16a> <== NOT EXECUTED
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4a854: 2f0b movel %a3,%sp@- 4a856: 4eb9 0004 a190 jsr 4a190 <IMFS_Set_handlers>
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4a85c: 2053 moveal %a3@,%a0
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4a85e: 2600 movel %d0,%d3
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4a860: 588f addql #4,%sp 4a862: 7001 moveq #1,%d0 4a864: b0a8 0048 cmpl %a0@(72),%d0 4a868: 6600 0096 bnew 4a900 <IMFS_evaluate_for_make+0x226>
/*
* We must have Write and execute permission on the returned node.
*/
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
4a86c: 4878 0003 pea 3 <DIVIDE> 4a870: 2f0b movel %a3,%sp@- 4a872: 4eb9 0004 a21a jsr 4a21a <IMFS_evaluate_permission> 4a878: 508f addql #8,%sp 4a87a: 4a80 tstl %d0 4a87c: 6600 fee4 bnew 4a762 <IMFS_evaluate_for_make+0x88>
rtems_set_errno_and_return_minus_one( EACCES );
4a880: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a886: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a888: 740d moveq #13,%d2 <== NOT EXECUTED 4a88a: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
4a88c: 2003 movel %d3,%d0 <== NOT EXECUTED
/*
* We must have Write and execute permission on the returned node.
*/
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
4a88e: 2082 movel %d2,%a0@ <== NOT EXECUTED
return result;
}
4a890: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a896: 4e5e unlk %fp <== NOT EXECUTED 4a898: 4e75 rts <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){
4a89a: 2429 000c movel %a1@(12),%d2 <== NOT EXECUTED
break;
} else {
newloc = pathloc->mt_entry->mt_point_node;
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
4a89e: 98ae fffc subl %fp@(-4),%d4 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){
4a8a2: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED 4a8a6: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a8aa: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a8ae: 2029 0018 movel %a1@(24),%d0 <== NOT EXECUTED
break;
} else {
newloc = pathloc->mt_entry->mt_point_node;
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
4a8b2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a8b6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a8b8: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a8bc: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){
4a8c0: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a8c4: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a8c8: 2748 000c movel %a0,%a3@(12) <== NOT EXECUTED 4a8cc: 2740 0010 movel %d0,%a3@(16) <== NOT EXECUTED
break;
} else {
newloc = pathloc->mt_entry->mt_point_node;
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
4a8d0: 4e91 jsr %a1@ <== NOT EXECUTED 4a8d2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a8d6: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a8d8: 2003 movel %d3,%d0 <== NOT EXECUTED 4a8da: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a8e0: 4e5e unlk %fp <== NOT EXECUTED 4a8e2: 4e75 rts <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
4a8e4: 42a7 clrl %sp@- <== NOT EXECUTED 4a8e6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a8e8: 4eb9 0004 a620 jsr 4a620 <IMFS_evaluate_link> <== NOT EXECUTED
if ( result == -1 )
4a8ee: 508f addql #8,%sp <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
4a8f0: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( result == -1 )
4a8f2: 70ff moveq #-1,%d0 <== NOT EXECUTED 4a8f4: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a8f6: 6700 fe6a beqw 4a762 <IMFS_evaluate_for_make+0x88> <== NOT EXECUTED 4a8fa: 2453 moveal %a3@,%a2 <== NOT EXECUTED 4a8fc: 6000 fea2 braw 4a7a0 <IMFS_evaluate_for_make+0xc6> <== NOT EXECUTED
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
4a900: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a906: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a908: 7814 moveq #20,%d4 <== NOT EXECUTED 4a90a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a90c: 2003 movel %d3,%d0 <== NOT EXECUTED
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
4a90e: 2084 movel %d4,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a910: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a916: 4e5e unlk %fp <== NOT EXECUTED 4a918: 4e75 rts <== NOT EXECUTED
/*
* If we are at a node that is a mount point. Set loc to the
* new fs root node and let them finish evaluating the path.
*/
if ( node->info.directory.mt_fs != NULL ) {
4a91a: 2428 0020 movel %a0@(32),%d2 <== NOT EXECUTED
newloc = node->info.directory.mt_fs->mt_fs_root;
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
4a91e: 98ae fffc subl %fp@(-4),%d4 <== NOT EXECUTED
/*
* If we are at a node that is a mount point. Set loc to the
* new fs root node and let them finish evaluating the path.
*/
if ( node->info.directory.mt_fs != NULL ) {
4a922: 26a8 001c movel %a0@(28),%a3@ <== NOT EXECUTED 4a926: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a92a: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a92e: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED
newloc = node->info.directory.mt_fs->mt_fs_root;
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
4a932: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a936: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a938: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a93c: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED
/*
* If we are at a node that is a mount point. Set loc to the
* new fs root node and let them finish evaluating the path.
*/
if ( node->info.directory.mt_fs != NULL ) {
4a940: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a944: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a948: 2749 000c movel %a1,%a3@(12) <== NOT EXECUTED 4a94c: 2740 0010 movel %d0,%a3@(16) <== NOT EXECUTED
newloc = node->info.directory.mt_fs->mt_fs_root;
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
4a950: 4e90 jsr %a0@ <== NOT EXECUTED 4a952: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a956: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a958: 2003 movel %d3,%d0 <== NOT EXECUTED 4a95a: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a960: 4e5e unlk %fp <== NOT EXECUTED
0004a2b4 <IMFS_evaluate_hard_link>:
int IMFS_evaluate_hard_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a2b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a2b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2ba: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_assert( jnode->type == IMFS_HARD_LINK );
/*
* Set the hard link value and the handlers.
*/
node->node_access = jnode->info.hard_link.link_node;
4a2be: 2052 moveal %a2@,%a0 <== NOT EXECUTED 4a2c0: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED
IMFS_Set_handlers( node );
4a2c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2c6: 4eb9 0004 a190 jsr 4a190 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
4a2cc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a2d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2d2: 4eb9 0004 a21a jsr 4a21a <IMFS_evaluate_permission> <== NOT EXECUTED 4a2d8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a2dc: 4a80 tstl %d0 <== NOT EXECUTED 4a2de: 670a beqs 4a2ea <IMFS_evaluate_hard_link+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a2e0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
*/
if ( !IMFS_evaluate_permission( node, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
4a2e4: 4280 clrl %d0 <== NOT EXECUTED
}
4a2e6: 4e5e unlk %fp <== NOT EXECUTED 4a2e8: 4e75 rts <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
4a2ea: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
return result;
}
4a2f0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
4a2f4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a2f6: 720d moveq #13,%d1 <== NOT EXECUTED 4a2f8: 70ff moveq #-1,%d0 <== NOT EXECUTED
return result;
}
4a2fa: 4e5e unlk %fp <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
4a2fc: 2081 movel %d1,%a0@ <== NOT EXECUTED
return result;
}
0004a620 <IMFS_evaluate_link>:
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a620: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
*/
rtems_filesystem_link_counts ++;
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
rtems_filesystem_link_counts = 0;
rtems_set_errno_and_return_minus_one( ELOOP );
4a624: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a62a: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4a62e: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
else if (jnode->type == IMFS_SYM_LINK )
result = IMFS_evaluate_sym_link( node, flags );
4a632: 4bf9 0004 a598 lea 4a598 <IMFS_evaluate_sym_link>,%a5 <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
4a638: 49f9 0004 a2b4 lea 4a2b4 <IMFS_evaluate_hard_link>,%a4 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a63e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
IMFS_jnode_t *jnode;
int result = 0;
do {
jnode = node->node_access;
4a642: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a644: 4281 clrl %d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4a646: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED 4a64a: 5280 addql #1,%d0 <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a64c: 3200 movew %d0,%d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4a64e: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a652: 7005 moveq #5,%d0 <== NOT EXECUTED 4a654: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a656: 6564 bcss 4a6bc <IMFS_evaluate_link+0x9c> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
4a658: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4a65c: 7203 moveq #3,%d1 <== NOT EXECUTED 4a65e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a660: 6740 beqs 4a6a2 <IMFS_evaluate_link+0x82> <== NOT EXECUTED
result = IMFS_evaluate_hard_link( node, flags );
else if (jnode->type == IMFS_SYM_LINK )
4a662: 7204 moveq #4,%d1 <== NOT EXECUTED 4a664: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a666: 671a beqs 4a682 <IMFS_evaluate_link+0x62> <== NOT EXECUTED
result = IMFS_evaluate_sym_link( node, flags );
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
4a668: 5780 subql #3,%d0 <== NOT EXECUTED 4a66a: 7201 moveq #1,%d1 <== NOT EXECUTED 4a66c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a66e: 64d2 bccs 4a642 <IMFS_evaluate_link+0x22> <== NOT EXECUTED 4a670: 4280 clrl %d0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
4a672: 4241 clrw %d1 <== NOT EXECUTED 4a674: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
return result;
}
4a678: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a67e: 4e5e unlk %fp <== NOT EXECUTED 4a680: 4e75 rts <== NOT EXECUTED
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
else if (jnode->type == IMFS_SYM_LINK )
result = IMFS_evaluate_sym_link( node, flags );
4a682: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a684: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a686: 4e95 jsr %a5@ <== NOT EXECUTED 4a688: 508f addql #8,%sp <== NOT EXECUTED
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
( jnode->type == IMFS_HARD_LINK ) ) );
4a68a: 4a80 tstl %d0 <== NOT EXECUTED 4a68c: 6620 bnes 4a6ae <IMFS_evaluate_link+0x8e> <== NOT EXECUTED 4a68e: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
result = IMFS_evaluate_hard_link( node, flags );
else if (jnode->type == IMFS_SYM_LINK )
result = IMFS_evaluate_sym_link( node, flags );
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
4a692: 7201 moveq #1,%d1 <== NOT EXECUTED 4a694: 5780 subql #3,%d0 <== NOT EXECUTED
( jnode->type == IMFS_HARD_LINK ) ) );
4a696: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0 <== NOT EXECUTED
result = IMFS_evaluate_hard_link( node, flags );
else if (jnode->type == IMFS_SYM_LINK )
result = IMFS_evaluate_sym_link( node, flags );
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
4a69c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a69e: 64a2 bccs 4a642 <IMFS_evaluate_link+0x22> <== NOT EXECUTED 4a6a0: 60ce bras 4a670 <IMFS_evaluate_link+0x50> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
4a6a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a6a4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a6a6: 4e94 jsr %a4@ <== NOT EXECUTED 4a6a8: 508f addql #8,%sp <== NOT EXECUTED
else if (jnode->type == IMFS_SYM_LINK )
result = IMFS_evaluate_sym_link( node, flags );
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
( jnode->type == IMFS_HARD_LINK ) ) );
4a6aa: 4a80 tstl %d0 <== NOT EXECUTED 4a6ac: 67e0 beqs 4a68e <IMFS_evaluate_link+0x6e> <== NOT EXECUTED 4a6ae: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
4a6b4: 4241 clrw %d1 <== NOT EXECUTED 4a6b6: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED 4a6ba: 60bc bras 4a678 <IMFS_evaluate_link+0x58> <== NOT EXECUTED
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
rtems_filesystem_link_counts = 0;
4a6bc: 4241 clrw %d1 <== NOT EXECUTED 4a6be: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ELOOP );
4a6c2: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a6c8: 725c moveq #92,%d1 <== NOT EXECUTED 4a6ca: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a6cc: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
rtems_filesystem_link_counts = 0;
return result;
}
4a6ce: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
*/
rtems_filesystem_link_counts ++;
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
rtems_filesystem_link_counts = 0;
rtems_set_errno_and_return_minus_one( ELOOP );
4a6d4: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
rtems_filesystem_link_counts = 0;
return result;
}
4a6d6: 4e5e unlk %fp <== NOT EXECUTED
0004a21a <IMFS_evaluate_permission>:
uid_t st_uid;
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
4a21a: 70f8 moveq #-8,%d0
*/
int IMFS_evaluate_permission(
rtems_filesystem_location_info_t *node,
int flags
)
{
4a21c: 4e56 fff4 linkw %fp,#-12 4a220: 48d7 040c moveml %d2-%d3/%a2,%sp@ 4a224: 242e 000c movel %fp@(12),%d2
uid_t st_uid;
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
4a228: c082 andl %d2,%d0
4a22a: 6670 bnes 4a29c <IMFS_evaluate_permission+0x82> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EPERM );
jnode = node->node_access;
4a22c: 206e 0008 moveal %fp@(8),%a0 4a230: 2450 moveal %a0@,%a2
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
4a232: 4eb9 0004 b06c jsr 4b06c <geteuid> 4a238: 3600 movew %d0,%d3
st_gid = getegid();
4a23a: 4eb9 0004 b058 jsr 4b058 <getegid>
* Check if I am owner or a group member or someone else.
*/
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
4a240: 4281 clrl %d1 4a242: 0283 0000 ffff andil #65535,%d3 4a248: 322a 0038 movew %a2@(56),%d1 4a24c: b681 cmpl %d1,%d3
4a24e: 6728 beqs 4a278 <IMFS_evaluate_permission+0x5e> <== ALWAYS TAKEN
flags_to_test <<= 6;
else if ( st_gid == jnode->st_gid )
4a250: 4281 clrl %d1 <== NOT EXECUTED 4a252: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 4a258: 322a 003a movew %a2@(58),%d1 <== NOT EXECUTED 4a25c: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a25e: 672a beqs 4a28a <IMFS_evaluate_permission+0x70> <== NOT EXECUTED
/*
* If all of the flags are set we have permission
* to do this.
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
4a260: 2002 movel %d2,%d0 <== NOT EXECUTED 4a262: c0aa 002e andl %a2@(46),%d0 <== NOT EXECUTED
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
rtems_set_errno_and_return_minus_one( EPERM );
4a266: b082 cmpl %d2,%d0 <== NOT EXECUTED 4a268: 57c0 seq %d0 <== NOT EXECUTED 4a26a: 49c0 extbl %d0 <== NOT EXECUTED 4a26c: 4480 negl %d0 <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a26e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 4a274: 4e5e unlk %fp 4a276: 4e75 rts
*/
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
flags_to_test <<= 6;
4a278: ed8a lsll #6,%d2
/*
* If all of the flags are set we have permission
* to do this.
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
4a27a: 2002 movel %d2,%d0 4a27c: c0aa 002e andl %a2@(46),%d0
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
rtems_set_errno_and_return_minus_one( EPERM );
4a280: b082 cmpl %d2,%d0 4a282: 57c0 seq %d0 4a284: 49c0 extbl %d0 4a286: 4480 negl %d0 4a288: 60e4 bras 4a26e <IMFS_evaluate_permission+0x54>
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
flags_to_test <<= 6;
else if ( st_gid == jnode->st_gid )
flags_to_test <<= 3;
4a28a: e78a lsll #3,%d2 <== NOT EXECUTED
/*
* If all of the flags are set we have permission
* to do this.
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
4a28c: 2002 movel %d2,%d0 <== NOT EXECUTED 4a28e: c0aa 002e andl %a2@(46),%d0 <== NOT EXECUTED
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
rtems_set_errno_and_return_minus_one( EPERM );
4a292: b082 cmpl %d2,%d0 <== NOT EXECUTED 4a294: 57c0 seq %d0 <== NOT EXECUTED 4a296: 49c0 extbl %d0 <== NOT EXECUTED 4a298: 4480 negl %d0 <== NOT EXECUTED 4a29a: 60d2 bras 4a26e <IMFS_evaluate_permission+0x54> <== NOT EXECUTED 4a29c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a2a2: 7201 moveq #1,%d1 <== NOT EXECUTED 4a2a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a2a6: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a2a8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
rtems_set_errno_and_return_minus_one( EPERM );
4a2ae: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a2b0: 4e5e unlk %fp <== NOT EXECUTED
0004a598 <IMFS_evaluate_sym_link>:
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a598: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4a59c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 4a5a0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *jnode = node->node_access;
4a5a4: 2652 moveal %a2@,%a3 <== NOT EXECUTED
/*
* Move the node_access to either the symbolic links parent or
* root depending on the symbolic links path.
*/
node->node_access = jnode->Parent;
4a5a6: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a5aa: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
* Move the node_access to either the symbolic links parent or
* root depending on the symbolic links path.
*/
node->node_access = jnode->Parent;
rtems_filesystem_get_sym_start_loc(
4a5ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a5b0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4a5b4: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED 4a5b8: 4eb9 0004 b610 jsr 4b610 <rtems_filesystem_get_sym_start_loc><== NOT EXECUTED
);
/*
* Use eval path to evaluate the path of the symbolic link.
*/
result = IMFS_eval_path(
4a5be: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED 4a5c2: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED 4a5c6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a5c8: 4eb9 0004 fd64 jsr 4fd64 <strlen> <== NOT EXECUTED 4a5ce: 2e8a movel %a2,%sp@ <== NOT EXECUTED 4a5d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a5d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a5d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a5d6: 4eb9 0004 a300 jsr 4a300 <IMFS_eval_path> <== NOT EXECUTED 4a5dc: 2600 movel %d0,%d3 <== NOT EXECUTED
strlen( &jnode->info.sym_link.name[i] ),
flags,
node
);
IMFS_Set_handlers( node );
4a5de: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a5e0: 4eb9 0004 a190 jsr 4a190 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
4a5e6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4a5ea: 2e82 movel %d2,%sp@ <== NOT EXECUTED 4a5ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a5ee: 4eb9 0004 a21a jsr 4a21a <IMFS_evaluate_permission> <== NOT EXECUTED 4a5f4: 508f addql #8,%sp <== NOT EXECUTED 4a5f6: 4a80 tstl %d0 <== NOT EXECUTED 4a5f8: 670c beqs 4a606 <IMFS_evaluate_sym_link+0x6e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a5fa: 2003 movel %d3,%d0 <== NOT EXECUTED 4a5fc: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a602: 4e5e unlk %fp <== NOT EXECUTED 4a604: 4e75 rts <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
4a606: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a60c: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a60e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a610: 700d moveq #13,%d0 <== NOT EXECUTED 4a612: 2080 movel %d0,%a0@ <== NOT EXECUTED
return result;
}
4a614: 2003 movel %d3,%d0 <== NOT EXECUTED 4a616: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a61c: 4e5e unlk %fp <== NOT EXECUTED
0004de88 <IMFS_fchmod>:
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4de88: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4de8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4de90: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = loc->node_access;
4de92: 2450 moveal %a0@,%a2 <== NOT EXECUTED
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4de94: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* Verify I am the owner of the node or the super user.
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
4de96: 4282 clrl %d2 <== NOT EXECUTED
/*
* Verify I am the owner of the node or the super user.
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
4de98: 4eb9 0004 b06c jsr 4b06c <geteuid> <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
4de9e: 4281 clrl %d1 <== NOT EXECUTED 4dea0: 342a 0038 movew %a2@(56),%d2 <== NOT EXECUTED 4dea4: 3200 movew %d0,%d1 <== NOT EXECUTED 4dea6: b282 cmpl %d2,%d1 <== NOT EXECUTED 4dea8: 6704 beqs 4deae <IMFS_fchmod+0x26> <== NOT EXECUTED 4deaa: 4a40 tstw %d0 <== NOT EXECUTED 4deac: 663c bnes 4deea <IMFS_fchmod+0x62> <== NOT EXECUTED
/*
* Change only the RWX permissions on the jnode to mode.
*/
jnode->st_mode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4deae: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4deb2: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
/*
* Change only the RWX permissions on the jnode to mode.
*/
jnode->st_mode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4deb6: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4debc: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED 4dec2: 8280 orl %d0,%d1 <== NOT EXECUTED 4dec4: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4dec8: 42a7 clrl %sp@- <== NOT EXECUTED 4deca: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4dece: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4ded4: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
4deda: 508f addql #8,%sp <== NOT EXECUTED 4dedc: 4280 clrl %d0 <== NOT EXECUTED
}
4dede: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4dee2: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4dee6: 4e5e unlk %fp <== NOT EXECUTED 4dee8: 4e75 rts <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
rtems_set_errno_and_return_minus_one( EPERM );
4deea: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
IMFS_update_ctime( jnode );
return 0;
}
4def0: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
rtems_set_errno_and_return_minus_one( EPERM );
4def4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4def6: 7201 moveq #1,%d1 <== NOT EXECUTED 4def8: 70ff moveq #-1,%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
IMFS_update_ctime( jnode );
return 0;
}
4defa: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4defe: 4e5e unlk %fp <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
rtems_set_errno_and_return_minus_one( EPERM );
4df00: 2081 movel %d1,%a0@ <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
IMFS_update_ctime( jnode );
return 0;
}
0004df04 <IMFS_fdatasync>:
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
return 0;
}
4df04: 4280 clrl %d0 <== NOT EXECUTED
#include "imfs.h"
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
4df06: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; }
4df0a: 4e5e unlk %fp <== NOT EXECUTED
...
000437f0 <IMFS_fifo_close>:
}
int IMFS_fifo_close(
rtems_libio_t *iop
)
{
437f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 437f4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 437f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 437f8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int err = 0; IMFS_jnode_t *jnode = iop->pathinfo.node_access;
437fc: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
pipe_release(&JNODE2PIPE(jnode), iop);
43800: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43802: 486b 004c pea %a3@(76) <== NOT EXECUTED 43806: 4eb9 0004 cefa jsr 4cefa <pipe_release> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
4380c: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED 43812: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED
IMFS_check_node_remove(jnode);
43816: 2f0b movel %a3,%sp@- <== NOT EXECUTED 43818: 4eb9 0004 3e98 jsr 43e98 <IMFS_check_node_remove> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
}
4381e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 43822: 4280 clrl %d0 <== NOT EXECUTED 43824: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 43828: 4e5e unlk %fp <== NOT EXECUTED
00043680 <IMFS_fifo_ioctl>:
int IMFS_fifo_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
43680: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43684: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43688: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4368c: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 43690: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int err;
if (command == FIONBIO) {
43692: 0c80 8004 667e cmpil #-2147195266,%d0 <== NOT EXECUTED 43698: 6724 beqs 436be <IMFS_fifo_ioctl+0x3e> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
return 0;
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
4369a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4369c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 436a0: 2f09 movel %a1,%sp@- <== NOT EXECUTED 436a2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 436a4: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 436a8: 4eb9 0004 d884 jsr 4d884 <pipe_ioctl> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
436ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 436b2: 4a80 tstl %d0 <== NOT EXECUTED 436b4: 6d46 blts 436fc <IMFS_fifo_ioctl+0x7c> <== NOT EXECUTED
}
436b6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436ba: 4e5e unlk %fp <== NOT EXECUTED 436bc: 4e75 rts <== NOT EXECUTED
)
{
int err;
if (command == FIONBIO) {
if (buffer == NULL)
436be: 4a89 tstl %a1 <== NOT EXECUTED 436c0: 6724 beqs 436e6 <IMFS_fifo_ioctl+0x66> <== NOT EXECUTED
err = -EFAULT;
else {
if (*(int *)buffer)
436c2: 4a91 tstl %a1@ <== NOT EXECUTED 436c4: 6710 beqs 436d6 <IMFS_fifo_ioctl+0x56> <== NOT EXECUTED
iop->flags |= LIBIO_FLAGS_NO_DELAY;
436c6: 7201 moveq #1,%d1 <== NOT EXECUTED
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
return 0;
436c8: 4280 clrl %d0 <== NOT EXECUTED
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
436ca: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436ce: 4e5e unlk %fp <== NOT EXECUTED
if (command == FIONBIO) {
if (buffer == NULL)
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
436d0: 83a8 0014 orl %d1,%a0@(20) <== NOT EXECUTED
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
436d4: 4e75 rts <== NOT EXECUTED
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
436d6: 72fe moveq #-2,%d1 <== NOT EXECUTED
return 0;
436d8: 4280 clrl %d0 <== NOT EXECUTED
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
436da: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436de: 4e5e unlk %fp <== NOT EXECUTED
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
436e0: c3a8 0014 andl %d1,%a0@(20) <== NOT EXECUTED
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
436e4: 4e75 rts <== NOT EXECUTED
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
436e6: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED
)
{
int err;
if (command == FIONBIO) {
if (buffer == NULL)
436ec: 740e moveq #14,%d2 <== NOT EXECUTED
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
436ee: 2040 moveal %d0,%a0 <== NOT EXECUTED 436f0: 70ff moveq #-1,%d0 <== NOT EXECUTED 436f2: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
436f4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436f8: 4e5e unlk %fp <== NOT EXECUTED 436fa: 4e75 rts <== NOT EXECUTED
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
436fc: 2400 movel %d0,%d2 <== NOT EXECUTED 436fe: 4482 negl %d2 <== NOT EXECUTED 43700: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 43706: 2040 moveal %d0,%a0 <== NOT EXECUTED 43708: 70ff moveq #-1,%d0 <== NOT EXECUTED 4370a: 2082 movel %d2,%a0@ <== NOT EXECUTED 4370c: 60e6 bras 436f4 <IMFS_fifo_ioctl+0x74> <== NOT EXECUTED
00043618 <IMFS_fifo_lseek>:
rtems_off64_t IMFS_fifo_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
43618: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4361c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43620: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43622: 2f02 movel %d2,%sp@- <== NOT EXECUTED
off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);
43624: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43626: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4362a: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 4362e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 43632: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43636: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 4363a: 4eb9 0004 d8e4 jsr 4d8e4 <pipe_lseek> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
43640: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);
43644: 2600 movel %d0,%d3 <== NOT EXECUTED 43646: 2400 movel %d0,%d2 <== NOT EXECUTED 43648: 5bc1 smi %d1 <== NOT EXECUTED 4364a: 49c1 extbl %d1 <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
4364c: 4a81 tstl %d1 <== NOT EXECUTED 4364e: 6b10 bmis 43660 <IMFS_fifo_lseek+0x48> <== NOT EXECUTED
}
43650: 2001 movel %d1,%d0 <== NOT EXECUTED 43652: 2202 movel %d2,%d1 <== NOT EXECUTED 43654: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 43658: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4365c: 4e5e unlk %fp <== NOT EXECUTED 4365e: 4e75 rts <== NOT EXECUTED
rtems_off64_t offset,
int whence
)
{
off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);
IMFS_FIFO_RETURN(err);
43660: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 43666: 4483 negl %d3 <== NOT EXECUTED 43668: 2040 moveal %d0,%a0 <== NOT EXECUTED 4366a: 72ff moveq #-1,%d1 <== NOT EXECUTED 4366c: 74ff moveq #-1,%d2 <== NOT EXECUTED 4366e: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
43670: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 43674: 2001 movel %d1,%d0 <== NOT EXECUTED 43676: 2202 movel %d2,%d1 <== NOT EXECUTED 43678: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4367c: 4e5e unlk %fp <== NOT EXECUTED
0004382c <IMFS_fifo_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4382c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43830: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43834: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
43836: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43838: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 4383c: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED 43840: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43842: 4eb9 0004 cfc8 jsr 4cfc8 <fifo_open> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
43848: 508f addql #8,%sp <== NOT EXECUTED
uint32_t mode
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
4384a: 2400 movel %d0,%d2 <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
4384c: 6d0a blts 43858 <IMFS_fifo_open+0x2c> <== NOT EXECUTED
}
4384e: 2002 movel %d2,%d0 <== NOT EXECUTED 43850: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43854: 4e5e unlk %fp <== NOT EXECUTED 43856: 4e75 rts <== NOT EXECUTED
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
IMFS_FIFO_RETURN(err);
43858: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 4385e: 4482 negl %d2 <== NOT EXECUTED 43860: 2040 moveal %d0,%a0 <== NOT EXECUTED 43862: 2082 movel %d2,%a0@ <== NOT EXECUTED 43864: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
43866: 2002 movel %d2,%d0 <== NOT EXECUTED 43868: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4386c: 4e5e unlk %fp <== NOT EXECUTED
00043782 <IMFS_fifo_read>:
ssize_t IMFS_fifo_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
43782: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 43786: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4378a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4378c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
4378e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43790: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
43794: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
43798: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4379c: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 437a0: 4eb9 0004 d470 jsr 4d470 <pipe_read> <== NOT EXECUTED
if (err > 0)
437a6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
size_t count
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
437aa: 2400 movel %d0,%d2 <== NOT EXECUTED
if (err > 0)
437ac: 6f22 bles 437d0 <IMFS_fifo_read+0x4e> <== NOT EXECUTED
IMFS_update_atime(jnode);
437ae: 42a7 clrl %sp@- <== NOT EXECUTED 437b0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 437b4: 4eb9 0004 4b48 jsr 44b48 <gettimeofday> <== NOT EXECUTED 437ba: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED 437c0: 508f addql #8,%sp <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
}
437c2: 2002 movel %d2,%d0 <== NOT EXECUTED 437c4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 437c8: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 437cc: 4e5e unlk %fp <== NOT EXECUTED 437ce: 4e75 rts <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0)
IMFS_update_atime(jnode);
IMFS_FIFO_RETURN(err);
437d0: 4a80 tstl %d0 <== NOT EXECUTED 437d2: 67ee beqs 437c2 <IMFS_fifo_read+0x40> <== NOT EXECUTED 437d4: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 437da: 4482 negl %d2 <== NOT EXECUTED 437dc: 2040 moveal %d0,%a0 <== NOT EXECUTED 437de: 2082 movel %d2,%a0@ <== NOT EXECUTED 437e0: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
437e2: 2002 movel %d2,%d0 <== NOT EXECUTED 437e4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 437e8: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 437ec: 4e5e unlk %fp <== NOT EXECUTED
0004370e <IMFS_fifo_write>:
ssize_t IMFS_fifo_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4370e: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 43712: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43716: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43718: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
4371a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4371c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
43720: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
43724: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43728: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 4372c: 4eb9 0004 d666 jsr 4d666 <pipe_write> <== NOT EXECUTED
if (err > 0) {
43732: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
size_t count
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
43736: 2400 movel %d0,%d2 <== NOT EXECUTED
if (err > 0) {
43738: 6f28 bles 43762 <IMFS_fifo_write+0x54> <== NOT EXECUTED
IMFS_mtime_ctime_update(jnode);
4373a: 42a7 clrl %sp@- <== NOT EXECUTED 4373c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 43740: 4eb9 0004 4b48 jsr 44b48 <gettimeofday> <== NOT EXECUTED 43746: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4374a: 508f addql #8,%sp <== NOT EXECUTED 4374c: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 43750: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
}
IMFS_FIFO_RETURN(err);
}
43754: 2002 movel %d2,%d0 <== NOT EXECUTED 43756: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4375a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4375e: 4e5e unlk %fp <== NOT EXECUTED 43760: 4e75 rts <== NOT EXECUTED
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0) {
IMFS_mtime_ctime_update(jnode);
}
IMFS_FIFO_RETURN(err);
43762: 4a80 tstl %d0 <== NOT EXECUTED 43764: 67ee beqs 43754 <IMFS_fifo_write+0x46> <== NOT EXECUTED 43766: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 4376c: 4482 negl %d2 <== NOT EXECUTED 4376e: 2040 moveal %d0,%a0 <== NOT EXECUTED 43770: 2082 movel %d2,%a0@ <== NOT EXECUTED 43772: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
43774: 2002 movel %d2,%d0 <== NOT EXECUTED 43776: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4377a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4377e: 4e5e unlk %fp <== NOT EXECUTED
0004aa10 <IMFS_find_match_in_dir>:
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4aa10: 4e56 fff0 linkw %fp,#-16 4aa14: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4aa18: 4879 0005 d672 pea 5d672 <dotname> 4aa1e: 47f9 0004 f80c lea 4f80c <strcmp>,%a3
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4aa24: 242e 000c movel %fp@(12),%d2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4aa28: 2f02 movel %d2,%sp@-
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4aa2a: 246e 0008 moveal %fp@(8),%a2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4aa2e: 4e93 jsr %a3@ 4aa30: 508f addql #8,%sp 4aa32: 4a80 tstl %d0
4aa34: 6714 beqs 4aa4a <IMFS_find_match_in_dir+0x3a> <== NEVER TAKEN
return directory;
if ( !strcmp( name, dotdotname ) )
4aa36: 4879 0005 d674 pea 5d674 <dotdotname> 4aa3c: 2f02 movel %d2,%sp@- 4aa3e: 4e93 jsr %a3@ 4aa40: 508f addql #8,%sp 4aa42: 4a80 tstl %d0
4aa44: 6610 bnes 4aa56 <IMFS_find_match_in_dir+0x46> <== ALWAYS TAKEN
return directory->Parent;
4aa46: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
}
4aa4a: 200a movel %a2,%d0 <== NOT EXECUTED 4aa4c: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4aa52: 4e5e unlk %fp <== NOT EXECUTED 4aa54: 4e75 rts <== NOT EXECUTED
if ( !strcmp( name, dotdotname ) )
return directory->Parent;
the_chain = &directory->info.directory.Entries;
for ( the_node = the_chain->first;
4aa56: 286a 004c moveal %a2@(76),%a4 4aa5a: 45ea 0050 lea %a2@(80),%a2 4aa5e: b5cc cmpal %a4,%a2
4aa60: 6714 beqs 4aa76 <IMFS_find_match_in_dir+0x66>
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
the_jnode = (IMFS_jnode_t *) the_node;
if ( !strcmp( name, the_jnode->name ) )
4aa62: 486c 000c pea %a4@(12) 4aa66: 2f02 movel %d2,%sp@- 4aa68: 4e93 jsr %a3@ 4aa6a: 508f addql #8,%sp 4aa6c: 4a80 tstl %d0
4aa6e: 6714 beqs 4aa84 <IMFS_find_match_in_dir+0x74>
the_chain = &directory->info.directory.Entries;
for ( the_node = the_chain->first;
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
4aa70: 2854 moveal %a4@,%a4
if ( !strcmp( name, dotdotname ) )
return directory->Parent;
the_chain = &directory->info.directory.Entries;
for ( the_node = the_chain->first;
4aa72: b5cc cmpal %a4,%a2
4aa74: 66ec bnes 4aa62 <IMFS_find_match_in_dir+0x52>
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
4aa76: 95ca subal %a2,%a2
}
4aa78: 200a movel %a2,%d0 4aa7a: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4aa80: 4e5e unlk %fp 4aa82: 4e75 rts
for ( the_node = the_chain->first;
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
the_jnode = (IMFS_jnode_t *) the_node;
4aa84: 244c moveal %a4,%a2
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
}
4aa86: 200a movel %a2,%d0 4aa88: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4aa8e: 4e5e unlk %fp
...
0004a964 <IMFS_fsunmount>:
((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next))
int IMFS_fsunmount(
rtems_filesystem_mount_table_entry_t *temp_mt_entry
)
{
4a964: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 4a968: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a96c: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
* Traverse tree that starts at the mt_fs_root and deallocate memory
* associated memory space
*/
jnode = (IMFS_jnode_t *)temp_mt_entry->mt_fs_root.node_access;
loc = temp_mt_entry->mt_fs_root;
4a970: 47ee ffec lea %fp@(-20),%a3 <== NOT EXECUTED 4a974: 49f9 0004 a190 lea 4a190 <IMFS_Set_handlers>,%a4 <== NOT EXECUTED
next = jnode->Parent;
loc.node_access = (void *)jnode;
IMFS_Set_handlers( &loc );
if ( jnode->type != IMFS_DIRECTORY ) {
result = IMFS_unlink( NULL, &loc );
4a97a: 4bf9 0004 25c0 lea 425c0 <IMFS_unlink>,%a5 <== NOT EXECUTED
* Traverse tree that starts at the mt_fs_root and deallocate memory
* associated memory space
*/
jnode = (IMFS_jnode_t *)temp_mt_entry->mt_fs_root.node_access;
loc = temp_mt_entry->mt_fs_root;
4a980: 26a8 001c movel %a0@(28),%a3@ <== NOT EXECUTED
/*
* Traverse tree that starts at the mt_fs_root and deallocate memory
* associated memory space
*/
jnode = (IMFS_jnode_t *)temp_mt_entry->mt_fs_root.node_access;
4a984: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED
loc = temp_mt_entry->mt_fs_root;
4a988: 2d68 0020 fff0 movel %a0@(32),%fp@(-16) <== NOT EXECUTED 4a98e: 2d68 0024 fff4 movel %a0@(36),%fp@(-12) <== NOT EXECUTED 4a994: 2d68 0028 fff8 movel %a0@(40),%fp@(-8) <== NOT EXECUTED 4a99a: 2d68 002c fffc movel %a0@(44),%fp@(-4) <== NOT EXECUTED
/*
* Set this to null to indicate that it is being unmounted.
*/
temp_mt_entry->mt_fs_root.node_access = NULL;
4a9a0: 42a8 001c clrl %a0@(28) <== NOT EXECUTED
do {
next = jnode->Parent;
4a9a4: 242a 0008 movel %a2@(8),%d2 <== NOT EXECUTED
loc.node_access = (void *)jnode;
4a9a8: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED
IMFS_Set_handlers( &loc );
4a9ac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a9ae: 4e94 jsr %a4@ <== NOT EXECUTED
if ( jnode->type != IMFS_DIRECTORY ) {
4a9b0: 588f addql #4,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4a9b2: 200a movel %a2,%d0 <== NOT EXECUTED 4a9b4: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED 4a9ba: 7201 moveq #1,%d1 <== NOT EXECUTED 4a9bc: b2aa 0048 cmpl %a2@(72),%d1 <== NOT EXECUTED 4a9c0: 6634 bnes 4a9f6 <IMFS_fsunmount+0x92> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
} else if ( jnode_has_no_children( jnode ) ) {
4a9c2: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4a9c6: 672e beqs 4a9f6 <IMFS_fsunmount+0x92> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
}
if ( jnode != NULL ) {
4a9c8: 4a8a tstl %a2 <== NOT EXECUTED 4a9ca: 671e beqs 4a9ea <IMFS_fsunmount+0x86> <== NOT EXECUTED
if ( jnode->type == IMFS_DIRECTORY ) {
4a9cc: 7001 moveq #1,%d0 <== NOT EXECUTED 4a9ce: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4a9d2: 66d0 bnes 4a9a4 <IMFS_fsunmount+0x40> <== NOT EXECUTED 4a9d4: 200a movel %a2,%d0 <== NOT EXECUTED 4a9d6: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED
if ( jnode_has_children( jnode ) )
4a9dc: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4a9e0: 67c2 beqs 4a9a4 <IMFS_fsunmount+0x40> <== NOT EXECUTED
jnode = jnode_get_first_child( jnode );
4a9e2: 246a 004c moveal %a2@(76),%a2 <== NOT EXECUTED
}
}
} while (jnode != NULL);
4a9e6: 4a8a tstl %a2 <== NOT EXECUTED 4a9e8: 66ba bnes 4a9a4 <IMFS_fsunmount+0x40> <== NOT EXECUTED
return 0;
4a9ea: 4280 clrl %d0 <== NOT EXECUTED
}
4a9ec: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4a9f2: 4e5e unlk %fp <== NOT EXECUTED 4a9f4: 4e75 rts <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
} else if ( jnode_has_no_children( jnode ) ) {
result = IMFS_unlink( NULL, &loc );
4a9f6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
if (result != 0)
return -1;
jnode = next;
4a9f8: 2442 moveal %d2,%a2 <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
} else if ( jnode_has_no_children( jnode ) ) {
result = IMFS_unlink( NULL, &loc );
4a9fa: 42a7 clrl %sp@- <== NOT EXECUTED 4a9fc: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0)
4a9fe: 508f addql #8,%sp <== NOT EXECUTED 4aa00: 4a80 tstl %d0 <== NOT EXECUTED 4aa02: 67c4 beqs 4a9c8 <IMFS_fsunmount+0x64> <== NOT EXECUTED
return -1;
4aa04: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
}
} while (jnode != NULL);
return 0;
}
4aa06: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4aa0c: 4e5e unlk %fp <== NOT EXECUTED
0004aa94 <IMFS_get_token>:
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aa94: 4e56 ffe4 linkw %fp,#-28 4aa98: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aa9c: 246e 0008 moveal %fp@(8),%a2 4aaa0: 49f9 0004 3c28 lea 43c28 <rtems_filesystem_is_separator>,%a4
int pathlen,
char *token,
int *token_len
)
{
register int i = 0;
4aaa6: 4282 clrl %d2
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aaa8: 161a moveb %a2@+,%d3
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aaaa: 2a6e 0010 moveal %fp@(16),%a5
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aaae: 264d moveal %a5,%a3
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
4aab0: 1003 moveb %d3,%d0
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aab2: 282e 000c movel %fp@(12),%d4
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
4aab6: 49c0 extbl %d0 4aab8: 2f00 movel %d0,%sp@- 4aaba: 4e94 jsr %a4@ 4aabc: 588f addql #4,%sp 4aabe: 4a80 tstl %d0
4aac0: 6620 bnes 4aae2 <IMFS_get_token+0x4e>
4aac2: b882 cmpl %d2,%d4
4aac4: 6f1c bles 4aae2 <IMFS_get_token+0x4e> <== NEVER TAKEN
token[i] = c;
if ( i == IMFS_NAME_MAX )
4aac6: 7020 moveq #32,%d0
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
token[i] = c;
4aac8: 16c3 moveb %d3,%a3@+
if ( i == IMFS_NAME_MAX )
4aaca: b082 cmpl %d2,%d0 4aacc: 6700 0082 beqw 4ab50 <IMFS_get_token+0xbc>
return IMFS_INVALID_TOKEN;
if ( !IMFS_is_valid_name_char(c) )
type = IMFS_INVALID_TOKEN;
c = path [++i];
4aad0: 5282 addql #1,%d2 4aad2: 161a moveb %a2@+,%d3
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
4aad4: 1003 moveb %d3,%d0 4aad6: 49c0 extbl %d0 4aad8: 2f00 movel %d0,%sp@- 4aada: 4e94 jsr %a4@ 4aadc: 588f addql #4,%sp 4aade: 4a80 tstl %d0
4aae0: 67e0 beqs 4aac2 <IMFS_get_token+0x2e>
/*
* Copy a seperator into token.
*/
if ( i == 0 ) {
4aae2: 4a82 tstl %d2
4aae4: 6626 bnes 4ab0c <IMFS_get_token+0x78>
token[i] = c;
4aae6: 1a83 moveb %d3,%a5@
if ( (token[i] != '\0') && pathlen ) {
4aae8: 6718 beqs 4ab02 <IMFS_get_token+0x6e>
4aaea: 4a84 tstl %d4
4aaec: 6714 beqs 4ab02 <IMFS_get_token+0x6e> <== NEVER TAKEN
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aaee: 206e 0014 moveal %fp@(20),%a0
if ( i == 0 ) {
token[i] = c;
if ( (token[i] != '\0') && pathlen ) {
i++;
4aaf2: 7401 moveq #1,%d2
type = IMFS_CURRENT_DIR;
4aaf4: 7001 moveq #1,%d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aaf6: 2082 movel %d2,%a0@
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4aaf8: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4aafe: 4e5e unlk %fp 4ab00: 4e75 rts
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4ab02: 206e 0014 moveal %fp@(20),%a0
if ( (token[i] != '\0') && pathlen ) {
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
4ab06: 4280 clrl %d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4ab08: 2082 movel %d2,%a0@ 4ab0a: 60ec bras 4aaf8 <IMFS_get_token+0x64>
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
}
} else if (token[ i-1 ] != '\0') {
4ab0c: 4a35 28ff tstb %a5@(ffffffff,%d2:l)
4ab10: 6706 beqs 4ab18 <IMFS_get_token+0x84> <== NEVER TAKEN
token[i] = '\0';
4ab12: 4200 clrb %d0 4ab14: 1b80 2800 moveb %d0,%a5@(00000000,%d2:l)
* If we copied something that was not a seperator see if
* it was a special name.
*/
if ( type == IMFS_NAME ) {
if ( strcmp( token, "..") == 0 )
4ab18: 4879 0005 d677 pea 5d677 <dotdotname+0x3> 4ab1e: 45f9 0004 f80c lea 4f80c <strcmp>,%a2
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4ab24: 206e 0014 moveal %fp@(20),%a0 4ab28: 2082 movel %d2,%a0@
* If we copied something that was not a seperator see if
* it was a special name.
*/
if ( type == IMFS_NAME ) {
if ( strcmp( token, "..") == 0 )
4ab2a: 2f0d movel %a5,%sp@- 4ab2c: 4e92 jsr %a2@ 4ab2e: 508f addql #8,%sp 4ab30: 4a80 tstl %d0
4ab32: 6728 beqs 4ab5c <IMFS_get_token+0xc8> <== NEVER TAKEN
type = IMFS_UP_DIR;
else if ( strcmp( token, "." ) == 0 )
4ab34: 4879 0005 d678 pea 5d678 <dotdotname+0x4> 4ab3a: 2f0d movel %a5,%sp@- 4ab3c: 4e92 jsr %a2@ 4ab3e: 508f addql #8,%sp 4ab40: 4a80 tstl %d0
4ab42: 6724 beqs 4ab68 <IMFS_get_token+0xd4> <== NEVER TAKEN
4ab44: 7003 moveq #3,%d0
type = IMFS_CURRENT_DIR;
}
return type;
}
4ab46: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4ab4c: 4e5e unlk %fp 4ab4e: 4e75 rts
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
token[i] = c;
if ( i == IMFS_NAME_MAX )
return IMFS_INVALID_TOKEN;
4ab50: 7004 moveq #4,%d0 <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4ab52: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab58: 4e5e unlk %fp <== NOT EXECUTED 4ab5a: 4e75 rts <== NOT EXECUTED
* it was a special name.
*/
if ( type == IMFS_NAME ) {
if ( strcmp( token, "..") == 0 )
type = IMFS_UP_DIR;
4ab5c: 7002 moveq #2,%d0 <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4ab5e: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab64: 4e5e unlk %fp <== NOT EXECUTED 4ab66: 4e75 rts <== NOT EXECUTED
if ( type == IMFS_NAME ) {
if ( strcmp( token, "..") == 0 )
type = IMFS_UP_DIR;
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
4ab68: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return type;
}
4ab6a: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab70: 4e5e unlk %fp <== NOT EXECUTED
00042138 <IMFS_initialize_support>:
/*
* 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) {
42138: 7010 moveq #16,%d0
const rtems_filesystem_operations_table *op_table,
const rtems_filesystem_file_handlers_r *memfile_handlers,
const rtems_filesystem_file_handlers_r *directory_handlers,
const rtems_filesystem_file_handlers_r *fifo_handlers
)
{
4213a: 4e56 fff4 linkw %fp,#-12
IMFS_jnode_t *jnode;
/*
* determine/check value for imfs_memfile_bytes_per_block
*/
IMFS_determine_bytes_per_block(&imfs_memfile_bytes_per_block,
4213e: 2239 0005 e338 movel 5e338 <imfs_rq_memfile_bytes_per_block>,%d1
const rtems_filesystem_operations_table *op_table,
const rtems_filesystem_file_handlers_r *memfile_handlers,
const rtems_filesystem_file_handlers_r *directory_handlers,
const rtems_filesystem_file_handlers_r *fifo_handlers
)
{
42144: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 42148: 246e 0008 moveal %fp@(8),%a2 4214c: 242e 0014 movel %fp@(20),%d2
/*
* 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) {
42150: b081 cmpl %d1,%d0
42152: 6724 beqs 42178 <IMFS_initialize_support+0x40>
is_valid = true;
break;
}
if(bit_mask > requested_bytes_per_block)
42154: 103c 000f moveb #15,%d0 42158: b081 cmpl %d1,%d0
4215a: 6c16 bges 42172 <IMFS_initialize_support+0x3a>
4215c: 307c 0005 moveaw #5,%a0 42160: 103c 0020 moveb #32,%d0
int bit_mask;
/*
* check, whether requested bytes per block is valid
*/
for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
42164: 5388 subql #1,%a0
if (bit_mask == requested_bytes_per_block) {
42166: b081 cmpl %d1,%d0
42168: 670e beqs 42178 <IMFS_initialize_support+0x40>
is_valid = true;
break;
}
if(bit_mask > requested_bytes_per_block)
4216a: 6e06 bgts 42172 <IMFS_initialize_support+0x3a> <== 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) {
4216c: d080 addl %d0,%d0 4216e: 4a88 tstl %a0
42170: 66f2 bnes 42164 <IMFS_initialize_support+0x2c> <== ALWAYS TAKEN
if(bit_mask > requested_bytes_per_block)
break;
}
*dest_bytes_per_block = ((is_valid)
? requested_bytes_per_block
: default_bytes_per_block);
42172: 223c 0000 0080 movel #128,%d1
break;
}
if(bit_mask > requested_bytes_per_block)
break;
}
*dest_bytes_per_block = ((is_valid)
42178: 23c1 0005 f334 movel %d1,5f334 <imfs_memfile_bytes_per_block>
/* * Create the root node * * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node();
4217e: 4eb9 0004 a154 jsr 4a154 <IMFS_create_root_node>
temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
/*
* Create custom file system data.
*/
fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );
42184: 4878 0014 pea 14 <OPER2>
* NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node(); temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table; temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
42188: 41f9 0005 d642 lea 5d642 <IMFS_LIMITS_AND_OPTIONS>,%a0 4218e: 43f9 0005 d646 lea 5d646 <IMFS_LIMITS_AND_OPTIONS+0x4>,%a1
/* * Create the root node * * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node();
42194: 2640 moveal %d0,%a3
temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table; temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
42196: 2550 0038 movel %a0@,%a2@(56) 4219a: 41f9 0005 d64a lea 5d64a <IMFS_LIMITS_AND_OPTIONS+0x8>,%a0 421a0: 2551 003c movel %a1@,%a2@(60) 421a4: 43f9 0005 d64e lea 5d64e <IMFS_LIMITS_AND_OPTIONS+0xc>,%a1 421aa: 2550 0040 movel %a0@,%a2@(64) 421ae: 41f9 0005 d652 lea 5d652 <IMFS_LIMITS_AND_OPTIONS+0x10>,%a0 421b4: 2551 0044 movel %a1@,%a2@(68) 421b8: 43f9 0005 d656 lea 5d656 <IMFS_LIMITS_AND_OPTIONS+0x14>,%a1
/*
* Create custom file system data.
*/
fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );
421be: 4878 0001 pea 1 <ADD>
* NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node(); temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table; temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
421c2: 2550 0048 movel %a0@,%a2@(72) 421c6: 41f9 0005 d65a lea 5d65a <IMFS_LIMITS_AND_OPTIONS+0x18>,%a0 421cc: 2551 004c movel %a1@,%a2@(76) 421d0: 43f9 0005 d65e lea 5d65e <IMFS_LIMITS_AND_OPTIONS+0x1c>,%a1 421d6: 2550 0050 movel %a0@,%a2@(80) 421da: 41f9 0005 d662 lea 5d662 <IMFS_LIMITS_AND_OPTIONS+0x20>,%a0 421e0: 2551 0054 movel %a1@,%a2@(84) 421e4: 43f9 0005 d666 lea 5d666 <IMFS_LIMITS_AND_OPTIONS+0x24>,%a1 421ea: 2550 0058 movel %a0@,%a2@(88) 421ee: 41f9 0005 d66a lea 5d66a <IMFS_LIMITS_AND_OPTIONS+0x28>,%a0 421f4: 2551 005c movel %a1@,%a2@(92) 421f8: 43f9 0005 d66e lea 5d66e <IMFS_LIMITS_AND_OPTIONS+0x2c>,%a1 421fe: 2550 0060 movel %a0@,%a2@(96) 42202: 2551 0064 movel %a1@,%a2@(100)
* * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node(); temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table;
42206: 256e 000c 0028 movel %fp@(12),%a2@(40)
/* * Create the root node * * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node();
4220c: 2540 001c movel %d0,%a2@(28)
temp_mt_entry->mt_fs_root.handlers = directory_handlers;
42210: 2542 0024 movel %d2,%a2@(36)
temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
/*
* Create custom file system data.
*/
fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );
42214: 4eb9 0004 28f0 jsr 428f0 <calloc>
if ( !fs_info ) {
4221a: 508f addql #8,%sp
temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
/*
* Create custom file system data.
*/
fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );
4221c: 2040 moveal %d0,%a0
if ( !fs_info ) {
4221e: 4a80 tstl %d0
42220: 673c beqs 4225e <IMFS_initialize_support+0x126> <== NEVER TAKEN
free(temp_mt_entry->mt_fs_root.node_access);
rtems_set_errno_and_return_minus_one(ENOMEM);
}
temp_mt_entry->fs_info = fs_info;
42222: 2548 0034 movel %a0,%a2@(52)
/*
* Set st_ino for the root to 1.
*/
fs_info->instance = imfs_instance++;
42226: 2239 0005 f338 movel 5f338 <imfs_instance.5906>,%d1 4222c: 2241 moveal %d1,%a1 4222e: 5289 addql #1,%a1
fs_info->fifo_handlers = fifo_handlers;
jnode = temp_mt_entry->mt_fs_root.node_access;
jnode->st_ino = fs_info->ino_count;
return 0;
42230: 4280 clrl %d0
/*
* Set st_ino for the root to 1.
*/
fs_info->instance = imfs_instance++;
42232: 2081 movel %d1,%a0@
fs_info->ino_count = 1;
42234: 7201 moveq #1,%d1
fs_info->memfile_handlers = memfile_handlers;
42236: 216e 0010 0008 movel %fp@(16),%a0@(8)
fs_info->directory_handlers = directory_handlers; fs_info->fifo_handlers = fifo_handlers;
4223c: 216e 0018 0010 movel %fp@(24),%a0@(16)
*/
fs_info->instance = imfs_instance++;
fs_info->ino_count = 1;
fs_info->memfile_handlers = memfile_handlers;
fs_info->directory_handlers = directory_handlers;
42242: 2142 000c movel %d2,%a0@(12)
/*
* Set st_ino for the root to 1.
*/
fs_info->instance = imfs_instance++;
fs_info->ino_count = 1;
42246: 2141 0004 movel %d1,%a0@(4)
fs_info->memfile_handlers = memfile_handlers;
fs_info->directory_handlers = directory_handlers;
fs_info->fifo_handlers = fifo_handlers;
jnode = temp_mt_entry->mt_fs_root.node_access;
jnode->st_ino = fs_info->ino_count;
4224a: 2741 0034 movel %d1,%a3@(52)
return 0;
}
4224e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
/*
* Set st_ino for the root to 1.
*/
fs_info->instance = imfs_instance++;
42254: 23c9 0005 f338 movel %a1,5f338 <imfs_instance.5906>
jnode = temp_mt_entry->mt_fs_root.node_access;
jnode->st_ino = fs_info->ino_count;
return 0;
}
4225a: 4e5e unlk %fp 4225c: 4e75 rts
/*
* Create custom file system data.
*/
fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );
if ( !fs_info ) {
free(temp_mt_entry->mt_fs_root.node_access);
4225e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 42260: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOMEM);
42266: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4226c: 588f addql #4,%sp <== NOT EXECUTED 4226e: 720c moveq #12,%d1 <== NOT EXECUTED 42270: 2040 moveal %d0,%a0 <== NOT EXECUTED 42272: 70ff moveq #-1,%d0 <== NOT EXECUTED
jnode = temp_mt_entry->mt_fs_root.node_access;
jnode->st_ino = fs_info->ino_count;
return 0;
}
42274: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
* Create custom file system data.
*/
fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );
if ( !fs_info ) {
free(temp_mt_entry->mt_fs_root.node_access);
rtems_set_errno_and_return_minus_one(ENOMEM);
4227a: 2081 movel %d1,%a0@ <== NOT EXECUTED
jnode = temp_mt_entry->mt_fs_root.node_access;
jnode->st_ino = fs_info->ino_count;
return 0;
}
4227c: 4e5e unlk %fp <== NOT EXECUTED
00042280 <IMFS_link>:
/*
* Verify this node can be linked to.
*/
info.hard_link.link_node = to_loc->node_access;
if ( info.hard_link.link_node->st_nlink >= LINK_MAX )
42280: 4280 clrl %d0 <== NOT EXECUTED 42282: 7207 moveq #7,%d1 <== NOT EXECUTED
int IMFS_link(
rtems_filesystem_location_info_t *to_loc, /* IN */
rtems_filesystem_location_info_t *parent_loc, /* IN */
const char *token /* IN */
)
{
42284: 4e56 ffbc linkw %fp,#-68 <== NOT EXECUTED 42288: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4228c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
int i;
/*
* Verify this node can be linked to.
*/
info.hard_link.link_node = to_loc->node_access;
4228e: 2050 moveal %a0@,%a0 <== NOT EXECUTED
int IMFS_link(
rtems_filesystem_location_info_t *to_loc, /* IN */
rtems_filesystem_location_info_t *parent_loc, /* IN */
const char *token /* IN */
)
{
42290: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42292: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
/*
* Verify this node can be linked to.
*/
info.hard_link.link_node = to_loc->node_access;
if ( info.hard_link.link_node->st_nlink >= LINK_MAX )
42296: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
int i;
/*
* Verify this node can be linked to.
*/
info.hard_link.link_node = to_loc->node_access;
4229a: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED
if ( info.hard_link.link_node->st_nlink >= LINK_MAX )
4229e: b280 cmpl %d0,%d1 <== NOT EXECUTED 422a0: 6578 bcss 4231a <IMFS_link+0x9a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EMLINK );
/*
* Remove any separators at the end of the string.
*/
IMFS_get_token( token, strlen( token ), new_name, &i );
422a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 422a4: 260e movel %fp,%d3 <== NOT EXECUTED 422a6: 0683 ffff ffbf addil #-65,%d3 <== NOT EXECUTED 422ac: 4eb9 0004 fd64 jsr 4fd64 <strlen> <== NOT EXECUTED 422b2: 588f addql #4,%sp <== NOT EXECUTED 422b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 422b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 422ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED 422bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 422be: 4eb9 0004 aa94 jsr 4aa94 <IMFS_get_token> <== NOT EXECUTED
* was ONLY passed a NULL when we created the root node. We * added a new IMFS_create_root_node() so this path no longer * existed. The result was simpler code which should not have * this path. */ new_node = IMFS_create_node(
422c4: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED 422c8: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED 422ce: 2f03 movel %d3,%sp@- <== NOT EXECUTED 422d0: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 422d4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 422d8: 4eb9 0004 9f5e jsr 49f5e <IMFS_create_node> <== NOT EXECUTED
new_name,
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
&info
);
if ( !new_node )
422de: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 422e2: 4a80 tstl %d0 <== NOT EXECUTED 422e4: 674e beqs 42334 <IMFS_link+0xb4> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
/*
* Increment the link count of the node being pointed to.
*/
info.hard_link.link_node->st_nlink++;
422e6: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 422ea: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED 422ee: 5280 addql #1,%d0 <== NOT EXECUTED 422f0: 3140 0032 movew %d0,%a0@(50) <== NOT EXECUTED
IMFS_update_ctime( info.hard_link.link_node );
422f4: 42a7 clrl %sp@- <== NOT EXECUTED 422f6: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 422fa: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 42300: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
return 0;
42304: 508f addql #8,%sp <== NOT EXECUTED 42306: 4280 clrl %d0 <== NOT EXECUTED
/*
* Increment the link count of the node being pointed to.
*/
info.hard_link.link_node->st_nlink++;
IMFS_update_ctime( info.hard_link.link_node );
42308: 216e fff4 0044 movel %fp@(-12),%a0@(68) <== NOT EXECUTED
return 0;
}
4230e: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED 42312: 262e ffb8 movel %fp@(-72),%d3 <== NOT EXECUTED 42316: 4e5e unlk %fp <== NOT EXECUTED 42318: 4e75 rts <== NOT EXECUTED
/*
* Verify this node can be linked to.
*/
info.hard_link.link_node = to_loc->node_access;
if ( info.hard_link.link_node->st_nlink >= LINK_MAX )
rtems_set_errno_and_return_minus_one( EMLINK );
4231a: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 42320: 741f moveq #31,%d2 <== NOT EXECUTED 42322: 2040 moveal %d0,%a0 <== NOT EXECUTED 42324: 70ff moveq #-1,%d0 <== NOT EXECUTED 42326: 2082 movel %d2,%a0@ <== NOT EXECUTED
*/
info.hard_link.link_node->st_nlink++;
IMFS_update_ctime( info.hard_link.link_node );
return 0;
}
42328: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED 4232c: 262e ffb8 movel %fp@(-72),%d3 <== NOT EXECUTED 42330: 4e5e unlk %fp <== NOT EXECUTED 42332: 4e75 rts <== NOT EXECUTED
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
&info
);
if ( !new_node )
rtems_set_errno_and_return_minus_one( ENOMEM );
42334: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
*/
info.hard_link.link_node->st_nlink++;
IMFS_update_ctime( info.hard_link.link_node );
return 0;
}
4233a: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
&info
);
if ( !new_node )
rtems_set_errno_and_return_minus_one( ENOMEM );
4233e: 2040 moveal %d0,%a0 <== NOT EXECUTED 42340: 720c moveq #12,%d1 <== NOT EXECUTED 42342: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
info.hard_link.link_node->st_nlink++;
IMFS_update_ctime( info.hard_link.link_node );
return 0;
}
42344: 262e ffb8 movel %fp@(-72),%d3 <== NOT EXECUTED 42348: 4e5e unlk %fp <== NOT EXECUTED
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
&info
);
if ( !new_node )
rtems_set_errno_and_return_minus_one( ENOMEM );
4234a: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
info.hard_link.link_node->st_nlink++;
IMFS_update_ctime( info.hard_link.link_node );
return 0;
}
...
0004d288 <IMFS_memfile_addblock>:
*/
MEMFILE_STATIC int IMFS_memfile_addblock(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4d288: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4d28c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Obtain the pointer for the specified block number
*/
block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 );
4d28e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4d292: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d296: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d29a: 4eb9 0004 ce5c jsr 4ce5c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( *block_entry_ptr )
4d2a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Obtain the pointer for the specified block number
*/
block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 );
4d2a4: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( *block_entry_ptr )
4d2a6: 4a92 tstl %a2@ <== NOT EXECUTED 4d2a8: 670a beqs 4d2b4 <IMFS_memfile_addblock+0x2c> <== NOT EXECUTED
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4d2aa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
/*
* Obtain the pointer for the specified block number
*/
block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 );
if ( *block_entry_ptr )
return 0;
4d2ae: 4280 clrl %d0 <== NOT EXECUTED
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4d2b0: 4e5e unlk %fp <== NOT EXECUTED 4d2b2: 4e75 rts <== NOT EXECUTED
return 0;
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
4d2b4: 4eb9 0004 ce38 jsr 4ce38 <memfile_alloc_block> <== NOT EXECUTED
if ( !memory )
4d2ba: 4a80 tstl %d0 <== NOT EXECUTED 4d2bc: 670c beqs 4d2ca <IMFS_memfile_addblock+0x42> <== NOT EXECUTED
return 1;
*block_entry_ptr = memory;
4d2be: 2480 movel %d0,%a2@ <== NOT EXECUTED
return 0; }
4d2c0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
memory = memfile_alloc_block();
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
4d2c4: 4280 clrl %d0 <== NOT EXECUTED
}
4d2c6: 4e5e unlk %fp <== NOT EXECUTED 4d2c8: 4e75 rts <== NOT EXECUTED 4d2ca: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
if ( !memory )
return 1;
4d2ce: 7001 moveq #1,%d0 <== NOT EXECUTED
*block_entry_ptr = memory;
return 0;
}
4d2d0: 4e5e unlk %fp <== NOT EXECUTED
0004d476 <IMFS_memfile_extend>:
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d476: 4280 clrl %d0 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d478: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4d47c: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d480: 2c39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d486: 2406 movel %d6,%d2 <== NOT EXECUTED 4d488: e48a lsrl #2,%d2 <== NOT EXECUTED 4d48a: 2802 movel %d2,%d4 <== NOT EXECUTED 4d48c: 5284 addql #1,%d4 <== NOT EXECUTED 4d48e: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d492: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d496: 5284 addql #1,%d4 <== NOT EXECUTED 4d498: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d49c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d4a0: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d4a4: 5384 subql #1,%d4 <== NOT EXECUTED 4d4a6: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED 4d4aa: 2204 movel %d4,%d1 <== NOT EXECUTED 4d4ac: 2800 movel %d0,%d4 <== NOT EXECUTED 4d4ae: 2a01 movel %d1,%d5 <== NOT EXECUTED 4d4b0: 9a83 subl %d3,%d5 <== NOT EXECUTED 4d4b2: 9982 subxl %d2,%d4 <== NOT EXECUTED 4d4b4: 6f00 00ae blew 4d564 <IMFS_memfile_extend+0xee> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
4d4b8: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d4bc: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d4c0: 2002 movel %d2,%d0 <== NOT EXECUTED 4d4c2: 2203 movel %d3,%d1 <== NOT EXECUTED 4d4c4: 9285 subl %d5,%d1 <== NOT EXECUTED 4d4c6: 9184 subxl %d4,%d0 <== NOT EXECUTED 4d4c8: 6f5e bles 4d528 <IMFS_memfile_extend+0xb2> <== NOT EXECUTED
return 0;
/*
* Calculate the number of range of blocks to allocate
*/
new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d4ca: 49f9 0005 a7a4 lea 5a7a4 <__divdi3>,%a4 <== NOT EXECUTED 4d4d0: 2e06 movel %d6,%d7 <== NOT EXECUTED 4d4d2: 5bc6 smi %d6 <== NOT EXECUTED 4d4d4: 49c6 extbl %d6 <== NOT EXECUTED 4d4d6: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d4d8: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d4da: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d4dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d4de: 4e94 jsr %a4@ <== NOT EXECUTED 4d4e0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d4e4: 2641 moveal %d1,%a3 <== NOT EXECUTED
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d4e6: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d4e8: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d4ea: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d4ec: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d4ee: 4e94 jsr %a4@ <== NOT EXECUTED 4d4f0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d4f4: 2c01 movel %d1,%d6 <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4d4f6: b28b cmpl %a3,%d1 <== NOT EXECUTED 4d4f8: 621a bhis 4d514 <IMFS_memfile_extend+0x9e> <== NOT EXECUTED 4d4fa: 2801 movel %d1,%d4 <== NOT EXECUTED 4d4fc: 49f9 0004 d288 lea 4d288 <IMFS_memfile_addblock>,%a4 <== NOT EXECUTED
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
4d502: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d504: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d506: 4e94 jsr %a4@ <== NOT EXECUTED 4d508: 508f addql #8,%sp <== NOT EXECUTED 4d50a: 4a80 tstl %d0 <== NOT EXECUTED 4d50c: 6626 bnes 4d534 <IMFS_memfile_extend+0xbe> <== NOT EXECUTED
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4d50e: 5284 addql #1,%d4 <== NOT EXECUTED 4d510: b88b cmpl %a3,%d4 <== NOT EXECUTED 4d512: 63ee blss 4d502 <IMFS_memfile_extend+0x8c> <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
4d514: 4280 clrl %d0 <== NOT EXECUTED
}
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
4d516: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED 4d51a: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED
return 0; }
4d51e: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d524: 4e5e unlk %fp <== NOT EXECUTED 4d526: 4e75 rts <== NOT EXECUTED
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
return 0;
4d528: 4280 clrl %d0 <== NOT EXECUTED
/* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; }
4d52a: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d530: 4e5e unlk %fp <== NOT EXECUTED 4d532: 4e75 rts <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
for ( ; block>=old_blocks ; block-- ) {
4d534: b886 cmpl %d6,%d4 <== NOT EXECUTED 4d536: 6514 bcss 4d54c <IMFS_memfile_extend+0xd6> <== NOT EXECUTED 4d538: 47f9 0004 d44e lea 4d44e <IMFS_memfile_remove_block>,%a3 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4d53e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
for ( ; block>=old_blocks ; block-- ) {
4d540: 5384 subql #1,%d4 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4d542: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d544: 4e93 jsr %a3@ <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
for ( ; block>=old_blocks ; block-- ) {
4d546: 508f addql #8,%sp <== NOT EXECUTED 4d548: b886 cmpl %d6,%d4 <== NOT EXECUTED 4d54a: 64f2 bccs 4d53e <IMFS_memfile_extend+0xc8> <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
}
rtems_set_errno_and_return_minus_one( ENOSPC );
4d54c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4d552: 721c moveq #28,%d1 <== NOT EXECUTED 4d554: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d556: 70ff moveq #-1,%d0 <== NOT EXECUTED
/* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; }
4d558: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
for ( ; block>=old_blocks ; block-- ) {
IMFS_memfile_remove_block( the_jnode, block );
}
rtems_set_errno_and_return_minus_one( ENOSPC );
4d55e: 2081 movel %d1,%a0@ <== NOT EXECUTED
/* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; }
4d560: 4e5e unlk %fp <== NOT EXECUTED 4d562: 4e75 rts <== NOT EXECUTED
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
rtems_set_errno_and_return_minus_one( EINVAL );
4d564: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4d56a: 7416 moveq #22,%d2 <== NOT EXECUTED 4d56c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d56e: 70ff moveq #-1,%d0 <== NOT EXECUTED 4d570: 2082 movel %d2,%a0@ <== NOT EXECUTED
/* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; }
4d572: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d578: 4e5e unlk %fp <== NOT EXECUTED
0004ce5c <IMFS_memfile_get_block_pointer>:
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4ce5c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
my_block = block;
/*
* Is the block number in the simple indirect portion?
*/
if ( my_block <= LAST_INDIRECT ) {
4ce60: 2239 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4ce66: e489 lsrl #2,%d1 <== NOT EXECUTED 4ce68: 2001 movel %d1,%d0 <== NOT EXECUTED 4ce6a: 5380 subql #1,%d0 <== NOT EXECUTED
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4ce6c: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4ce70: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4ce74: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4ce78: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
my_block = block;
/*
* Is the block number in the simple indirect portion?
*/
if ( my_block <= LAST_INDIRECT ) {
4ce7c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4ce7e: 651e bcss 4ce9e <IMFS_memfile_get_block_pointer+0x42><== NOT EXECUTED
p = info->indirect;
4ce80: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED
if ( malloc_it ) {
4ce84: 4a88 tstl %a0 <== NOT EXECUTED 4ce86: 675a beqs 4cee2 <IMFS_memfile_get_block_pointer+0x86><== NOT EXECUTED
if ( !p ) {
4ce88: 4a89 tstl %a1 <== NOT EXECUTED 4ce8a: 6700 00c0 beqw 4cf4c <IMFS_memfile_get_block_pointer+0xf0><== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4ce8e: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4ce92: 2009 movel %a1,%d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4ce94: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4ce9a: 4e5e unlk %fp <== NOT EXECUTED 4ce9c: 4e75 rts <== NOT EXECUTED
/*
* Is the block number in the doubly indirect portion?
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
4ce9e: 2001 movel %d1,%d0 <== NOT EXECUTED 4cea0: 5280 addql #1,%d0 <== NOT EXECUTED 4cea2: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 4cea6: 2240 moveal %d0,%a1 <== NOT EXECUTED 4cea8: 5389 subql #1,%a1 <== NOT EXECUTED 4ceaa: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4ceac: 6544 bcss 4cef2 <IMFS_memfile_get_block_pointer+0x96><== NOT EXECUTED
my_block -= FIRST_DOUBLY_INDIRECT;
4ceae: 9481 subl %d1,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
4ceb0: 226a 0058 moveal %a2@(88),%a1 <== NOT EXECUTED
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
my_block -= FIRST_DOUBLY_INDIRECT;
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4ceb4: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4ceb8: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
if ( malloc_it ) {
4cebc: 4a88 tstl %a0 <== NOT EXECUTED 4cebe: 6700 0104 beqw 4cfc4 <IMFS_memfile_get_block_pointer+0x168><== NOT EXECUTED
if ( !p ) {
4cec2: 4a89 tstl %a1 <== NOT EXECUTED 4cec4: 6700 00a0 beqw 4cf66 <IMFS_memfile_get_block_pointer+0x10a><== NOT EXECUTED
if ( !p )
return 0;
info->doubly_indirect = p;
}
p1 = (block_p *)p[ doubly ];
4cec8: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cecc: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cece: 4a88 tstl %a0 <== NOT EXECUTED 4ced0: 6764 beqs 4cf36 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4ced2: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4ced6: 2008 movel %a0,%d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4ced8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4cede: 4e5e unlk %fp <== NOT EXECUTED 4cee0: 4e75 rts <== NOT EXECUTED
info->indirect = p;
}
return &info->indirect[ my_block ];
}
if ( !p )
4cee2: 4a89 tstl %a1 <== NOT EXECUTED 4cee4: 66a8 bnes 4ce8e <IMFS_memfile_get_block_pointer+0x32><== NOT EXECUTED
if ( !p1 )
return 0;
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
4cee6: 4280 clrl %d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4cee8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4ceee: 4e5e unlk %fp <== NOT EXECUTED 4cef0: 4e75 rts <== NOT EXECUTED
}
/*
* Is the block number in the triply indirect portion?
*/
if ( my_block <= LAST_TRIPLY_INDIRECT ) {
4cef2: 2600 movel %d0,%d3 <== NOT EXECUTED 4cef4: 5283 addql #1,%d3 <== NOT EXECUTED 4cef6: 4c01 3800 mulsl %d1,%d3 <== NOT EXECUTED 4cefa: 5383 subql #1,%d3 <== NOT EXECUTED 4cefc: b682 cmpl %d2,%d3 <== NOT EXECUTED 4cefe: 65e6 bcss 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
my_block -= FIRST_TRIPLY_INDIRECT;
4cf00: 9480 subl %d0,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4cf02: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4cf06: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
4cf0a: 226a 005c moveal %a2@(92),%a1 <== NOT EXECUTED
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;
4cf0e: 4c41 2004 remul %d1,%d4,%d2 <== NOT EXECUTED 4cf12: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
if ( malloc_it ) {
4cf16: 4a88 tstl %a0 <== NOT EXECUTED 4cf18: 6700 00c4 beqw 4cfde <IMFS_memfile_get_block_pointer+0x182><== NOT EXECUTED
if ( !p ) {
4cf1c: 4a89 tstl %a1 <== NOT EXECUTED 4cf1e: 6700 0084 beqw 4cfa4 <IMFS_memfile_get_block_pointer+0x148><== NOT EXECUTED
if ( !p )
return 0;
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
4cf22: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cf26: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cf28: 4a88 tstl %a0 <== NOT EXECUTED 4cf2a: 675a beqs 4cf86 <IMFS_memfile_get_block_pointer+0x12a><== NOT EXECUTED
if ( !p1 )
return 0;
p[ triply ] = (block_p) p1;
}
p2 = (block_p *)p1[ doubly ];
4cf2c: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4cf30: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p2 ) {
4cf32: 4a88 tstl %a0 <== NOT EXECUTED 4cf34: 669c bnes 4ced2 <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED
p2 = memfile_alloc_block();
4cf36: 4eb9 0004 ce38 jsr 4ce38 <memfile_alloc_block> <== NOT EXECUTED 4cf3c: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !p2 )
4cf3e: 4a80 tstl %d0 <== NOT EXECUTED 4cf40: 67a4 beqs 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p1[ doubly ] = (block_p) p2;
4cf42: 2480 movel %d0,%a2@ <== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4cf44: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4cf48: 2008 movel %a0,%d0 <== NOT EXECUTED 4cf4a: 608c bras 4ced8 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
p = info->indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cf4c: 4eb9 0004 ce38 jsr 4ce38 <memfile_alloc_block> <== NOT EXECUTED 4cf52: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4cf54: 4a80 tstl %d0 <== NOT EXECUTED 4cf56: 678e beqs 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->indirect = p;
4cf58: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4cf5c: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4cf60: 2009 movel %a1,%d0 <== NOT EXECUTED 4cf62: 6000 ff30 braw 4ce94 <IMFS_memfile_get_block_pointer+0x38><== NOT EXECUTED
p = info->doubly_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cf66: 4eb9 0004 ce38 jsr 4ce38 <memfile_alloc_block> <== NOT EXECUTED 4cf6c: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4cf6e: 4a80 tstl %d0 <== NOT EXECUTED 4cf70: 6700 ff74 beqw 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->doubly_indirect = p;
4cf74: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED
}
p1 = (block_p *)p[ doubly ];
4cf78: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cf7c: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cf7e: 4a88 tstl %a0 <== NOT EXECUTED 4cf80: 6600 ff50 bnew 4ced2 <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED 4cf84: 60b0 bras 4cf36 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
if ( !p1 ) {
p1 = memfile_alloc_block();
4cf86: 4eb9 0004 ce38 jsr 4ce38 <memfile_alloc_block> <== NOT EXECUTED 4cf8c: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !p1 )
4cf8e: 4a80 tstl %d0 <== NOT EXECUTED 4cf90: 6700 ff54 beqw 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p[ triply ] = (block_p) p1;
4cf94: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
p2 = (block_p *)p1[ doubly ];
4cf96: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4cf9a: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p2 ) {
4cf9c: 4a88 tstl %a0 <== NOT EXECUTED 4cf9e: 6600 ff32 bnew 4ced2 <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED 4cfa2: 6092 bras 4cf36 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
p = info->triply_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cfa4: 4eb9 0004 ce38 jsr 4ce38 <memfile_alloc_block> <== NOT EXECUTED 4cfaa: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4cfac: 4a80 tstl %d0 <== NOT EXECUTED 4cfae: 6700 ff36 beqw 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->triply_indirect = p;
4cfb2: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
}
p1 = (block_p *) p[ triply ];
4cfb6: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cfba: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cfbc: 4a88 tstl %a0 <== NOT EXECUTED 4cfbe: 6600 ff6c bnew 4cf2c <IMFS_memfile_get_block_pointer+0xd0><== NOT EXECUTED 4cfc2: 60c2 bras 4cf86 <IMFS_memfile_get_block_pointer+0x12a><== NOT EXECUTED
}
return (block_p *)&p1[ singly ];
}
if ( !p )
4cfc4: 4a89 tstl %a1 <== NOT EXECUTED 4cfc6: 6700 ff1e beqw 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p = (block_p *)p[ doubly ];
4cfca: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p )
4cfce: 4a88 tstl %a0 <== NOT EXECUTED 4cfd0: 6700 ff14 beqw 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4cfd4: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4cfd8: 2008 movel %a0,%d0 <== NOT EXECUTED 4cfda: 6000 fefc braw 4ced8 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
p1[ doubly ] = (block_p) p2;
}
return (block_p *)&p2[ singly ];
}
if ( !p )
4cfde: 4a89 tstl %a1 <== NOT EXECUTED 4cfe0: 6700 ff04 beqw 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p1 = (block_p *) p[ triply ];
4cfe4: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p1 )
4cfe8: 4a88 tstl %a0 <== NOT EXECUTED 4cfea: 6700 fefa beqw 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p2 = (block_p *)p1[ doubly ];
4cfee: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED
if ( !p2 )
4cff2: 4a88 tstl %a0 <== NOT EXECUTED 4cff4: 6700 fef0 beqw 4cee6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
return (block_p *)&p2[ singly ];
4cff8: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4cffc: 2008 movel %a0,%d0 <== NOT EXECUTED 4cffe: 6000 fed8 braw 4ced8 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
00045036 <IMFS_memfile_maximum_size>:
* This routine returns the size of the largest file which can be created
* using the IMFS memory file type.
*
*/
int IMFS_memfile_maximum_size( void )
{
45036: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return IMFS_MEMFILE_MAXIMUM_SIZE;
4503a: 2039 0006 5614 movel 65614 <imfs_memfile_bytes_per_block>,%d0<== NOT EXECUTED
* This routine returns the size of the largest file which can be created
* using the IMFS memory file type.
*
*/
int IMFS_memfile_maximum_size( void )
{
45040: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return IMFS_MEMFILE_MAXIMUM_SIZE;
45042: 2400 movel %d0,%d2 <== NOT EXECUTED 45044: e48a lsrl #2,%d2 <== NOT EXECUTED 45046: 2202 movel %d2,%d1 <== NOT EXECUTED 45048: 5281 addql #1,%d1 <== NOT EXECUTED 4504a: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED 4504e: 5281 addql #1,%d1 <== NOT EXECUTED 45050: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED
}
45054: 241f movel %sp@+,%d2 <== NOT EXECUTED
* using the IMFS memory file type.
*
*/
int IMFS_memfile_maximum_size( void )
{
return IMFS_MEMFILE_MAXIMUM_SIZE;
45056: 5381 subql #1,%d1 <== NOT EXECUTED
}
45058: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 4505c: 4e5e unlk %fp <== NOT EXECUTED
0004d002 <IMFS_memfile_read>:
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4d002: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4d006: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4d00a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
if (the_jnode->type == IMFS_LINEAR_FILE) {
4d00e: 7806 moveq #6,%d4 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4d010: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED 4d014: 2a6e 0018 moveal %fp@(24),%a5 <== NOT EXECUTED 4d018: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d01c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
if (the_jnode->type == IMFS_LINEAR_FILE) {
4d020: b8aa 0048 cmpl %a2@(72),%d4 <== NOT EXECUTED 4d024: 6700 017c beqw 4d1a2 <IMFS_memfile_read+0x1a0> <== NOT EXECUTED
/*
* 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;
4d028: 43f5 3800 lea %a5@(00000000,%d3:l),%a1 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size )
4d02c: 4280 clrl %d0 <== NOT EXECUTED 4d02e: 2209 movel %a1,%d1 <== NOT EXECUTED 4d030: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d034: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d038: 2c00 movel %d0,%d6 <== NOT EXECUTED 4d03a: 2e01 movel %d1,%d7 <== NOT EXECUTED 4d03c: 9e85 subl %d5,%d7 <== NOT EXECUTED 4d03e: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4d040: 6f00 0110 blew 4d152 <IMFS_memfile_read+0x150> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d044: 2c39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
* 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;
4d04a: 2e05 movel %d5,%d7 <== NOT EXECUTED 4d04c: 9e83 subl %d3,%d7 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d04e: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d050: 5bc4 smi %d4 <== NOT EXECUTED 4d052: 49c4 extbl %d4 <== NOT EXECUTED 4d054: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d056: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d058: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d05a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d05c: 4eb9 0005 ab58 jsr 5ab58 <__moddi3> <== NOT EXECUTED 4d062: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d066: 2841 moveal %d1,%a4 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d068: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d06a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d06c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d06e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d070: 4eb9 0005 a7a4 jsr 5a7a4 <__divdi3> <== NOT EXECUTED 4d076: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d07a: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d07c: 4a8c tstl %a4 <== NOT EXECUTED 4d07e: 6700 010e beqw 4d18e <IMFS_memfile_read+0x18c> <== 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 );
4d082: 42a7 clrl %sp@- <== NOT EXECUTED 4d084: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d086: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d088: 4eb9 0004 ce5c jsr 4ce5c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d08e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d092: 4a80 tstl %d0 <== NOT EXECUTED 4d094: 6700 01c0 beqw 4d256 <IMFS_memfile_read+0x254> <== NOT EXECUTED
* 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 ) {
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;
4d098: 9c8c subl %a4,%d6 <== NOT EXECUTED 4d09a: 2207 movel %d7,%d1 <== NOT EXECUTED 4d09c: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d09e: 6500 0162 bcsw 4d202 <IMFS_memfile_read+0x200> <== NOT EXECUTED
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 );
4d0a2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d0a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d0a6: d9d0 addal %a0@,%a4 <== NOT EXECUTED
dest += to_copy;
4d0a8: 280b movel %a3,%d4 <== NOT EXECUTED 4d0aa: d881 addl %d1,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d0ac: 9e81 subl %d1,%d7 <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );
dest += to_copy;
block++;
4d0ae: 5282 addql #1,%d2 <== NOT EXECUTED
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 );
4d0b0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d0b2: 2841 moveal %d1,%a4 <== NOT EXECUTED
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 );
4d0b4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d0b6: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4d0bc: 2c39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d0c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
4d0c6: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d0c8: 623c bhis 4d106 <IMFS_memfile_read+0x104> <== NOT EXECUTED 4d0ca: 47f9 0004 ce5c lea 4ce5c <IMFS_memfile_get_block_pointer>,%a3<== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4d0d0: 4bf9 0004 f1b8 lea 4f1b8 <memcpy>,%a5 <== NOT EXECUTED
/*
* 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 );
4d0d6: 42a7 clrl %sp@- <== NOT EXECUTED
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
dest += to_copy;
block++;
my_length -= to_copy;
4d0d8: 9e86 subl %d6,%d7 <== NOT EXECUTED
/*
* 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 );
4d0da: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
dest += to_copy;
block++;
4d0dc: 5282 addql #1,%d2 <== NOT EXECUTED
/*
* 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 );
4d0de: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d0e0: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !block_ptr )
4d0e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0e6: 4a80 tstl %d0 <== NOT EXECUTED 4d0e8: 6700 00ac beqw 4d196 <IMFS_memfile_read+0x194> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4d0ec: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d0ee: d9c6 addal %d6,%a4 <== NOT EXECUTED
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 );
4d0f0: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d0f2: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d0f4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
dest += to_copy;
4d0f6: d886 addl %d6,%d4 <== NOT EXECUTED
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 );
4d0f8: 4e95 jsr %a5@ <== NOT EXECUTED
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
4d0fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0fe: beb9 0005 f334 cmpl 5f334 <imfs_memfile_bytes_per_block>,%d7<== NOT EXECUTED 4d104: 64d0 bccs 4d0d6 <IMFS_memfile_read+0xd4> <== NOT EXECUTED
/*
* Phase 3: possibly the first part of one block
*/
IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );
if ( my_length ) {
4d106: 4a87 tstl %d7 <== NOT EXECUTED 4d108: 6728 beqs 4d132 <IMFS_memfile_read+0x130> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d10a: 42a7 clrl %sp@- <== NOT EXECUTED 4d10c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d10e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d110: 4eb9 0004 ce5c jsr 4ce5c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d116: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d11a: 4a80 tstl %d0 <== NOT EXECUTED 4d11c: 6778 beqs 4d196 <IMFS_memfile_read+0x194> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], my_length );
4d11e: 2040 moveal %d0,%a0 <== NOT EXECUTED
copied += my_length;
4d120: d9c7 addal %d7,%a4 <== NOT EXECUTED
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 );
4d122: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d124: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d126: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d128: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
copied += my_length;
4d12e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
4d132: 42a7 clrl %sp@- <== NOT EXECUTED 4d134: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d138: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d13e: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return copied;
4d144: 200c movel %a4,%d0 <== NOT EXECUTED 4d146: 508f addql #8,%sp <== NOT EXECUTED
}
4d148: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d14e: 4e5e unlk %fp <== NOT EXECUTED 4d150: 4e75 rts <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d152: 2c39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
/*
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
4d158: 2e0d movel %a5,%d7 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d15a: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d15c: 5bc4 smi %d4 <== NOT EXECUTED 4d15e: 49c4 extbl %d4 <== NOT EXECUTED 4d160: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d162: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d164: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d166: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d168: 4eb9 0005 ab58 jsr 5ab58 <__moddi3> <== NOT EXECUTED 4d16e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d172: 2841 moveal %d1,%a4 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d174: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d176: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d178: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d17a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d17c: 4eb9 0005 a7a4 jsr 5a7a4 <__divdi3> <== NOT EXECUTED 4d182: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d186: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d188: 4a8c tstl %a4 <== NOT EXECUTED 4d18a: 6600 fef6 bnew 4d082 <IMFS_memfile_read+0x80> <== NOT EXECUTED
unsigned int last_byte;
unsigned int copied;
unsigned int start_offset;
unsigned char *dest;
dest = destination;
4d18e: 280b movel %a3,%d4 <== NOT EXECUTED
*/
last_byte = start + length;
if ( last_byte > the_jnode->info.file.size )
my_length = the_jnode->info.file.size - start;
copied = 0;
4d190: 99cc subal %a4,%a4 <== NOT EXECUTED 4d192: 6000 ff32 braw 4d0c6 <IMFS_memfile_read+0xc4> <== NOT EXECUTED
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;
4d196: 200c movel %a4,%d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d198: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d19e: 4e5e unlk %fp <== NOT EXECUTED 4d1a0: 4e75 rts <== NOT EXECUTED
if (the_jnode->type == 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))
4d1a2: 91c8 subal %a0,%a0 <== NOT EXECUTED 4d1a4: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED 4d1a8: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED 4d1ac: 2d4d fff4 movel %a5,%fp@(-12) <== NOT EXECUTED
my_length = length;
if (the_jnode->type == IMFS_LINEAR_FILE) {
unsigned char *file_ptr;
file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;
4d1b0: 286a 0054 moveal %a2@(84),%a4 <== NOT EXECUTED
if (my_length > (the_jnode->info.linearfile.size - start))
4d1b4: 2800 movel %d0,%d4 <== NOT EXECUTED 4d1b6: 2a01 movel %d1,%d5 <== NOT EXECUTED 4d1b8: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED 4d1bc: 9a83 subl %d3,%d5 <== NOT EXECUTED 4d1be: 9982 subxl %d2,%d4 <== NOT EXECUTED 4d1c0: 2c2e fff0 movel %fp@(-16),%d6 <== NOT EXECUTED 4d1c4: 2e2e fff4 movel %fp@(-12),%d7 <== NOT EXECUTED 4d1c8: 9e85 subl %d5,%d7 <== NOT EXECUTED 4d1ca: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4d1cc: 6f5e bles 4d22c <IMFS_memfile_read+0x22a> <== NOT EXECUTED
my_length = the_jnode->info.linearfile.size - start;
4d1ce: 2e01 movel %d1,%d7 <== NOT EXECUTED 4d1d0: 9e83 subl %d3,%d7 <== NOT EXECUTED
memcpy(dest, &file_ptr[start], my_length);
4d1d2: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d1d4: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4d1d8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d1da: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d1e0: 42a7 clrl %sp@- <== NOT EXECUTED 4d1e2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d1e6: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d1ec: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return my_length;
4d1f2: 2007 movel %d7,%d0 <== NOT EXECUTED 4d1f4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d1f8: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d1fe: 4e5e unlk %fp <== NOT EXECUTED 4d200: 4e75 rts <== NOT EXECUTED
* 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 ) {
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;
4d202: 2206 movel %d6,%d1 <== NOT EXECUTED
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 );
4d204: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
4d206: 280b movel %a3,%d4 <== NOT EXECUTED 4d208: d881 addl %d1,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d20a: 9e81 subl %d1,%d7 <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );
dest += to_copy;
block++;
4d20c: 5282 addql #1,%d2 <== NOT EXECUTED
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 );
4d20e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d210: d9d0 addal %a0@,%a4 <== NOT EXECUTED 4d212: 2f0c movel %a4,%sp@- <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d214: 2841 moveal %d1,%a4 <== NOT EXECUTED
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 );
4d216: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d218: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4d21e: 2c39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d224: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d228: 6000 fe9c braw 4d0c6 <IMFS_memfile_read+0xc4> <== NOT EXECUTED
/*
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
4d22c: 2e0d movel %a5,%d7 <== 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);
4d22e: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d230: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4d234: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d236: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d23c: 42a7 clrl %sp@- <== NOT EXECUTED 4d23e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d242: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d248: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return my_length;
4d24e: 2007 movel %d7,%d0 <== NOT EXECUTED 4d250: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4d254: 60a2 bras 4d1f8 <IMFS_memfile_read+0x1f6> <== 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;
4d256: 4280 clrl %d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d258: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d25e: 4e5e unlk %fp <== NOT EXECUTED
0004d334 <IMFS_memfile_remove>:
* is better to stick to simple, easy to understand algorithms.
*/
int IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4d334: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4d338: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ <== NOT EXECUTED
/*
* 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;
4d33c: 2839 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d4<== NOT EXECUTED 4d342: e48c lsrl #2,%d4 <== NOT EXECUTED
* is better to stick to simple, easy to understand algorithms.
*/
int IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4d344: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
* + doubly indirect
* + triply indirect
*/
info = &the_jnode->info.file;
if ( info->indirect ) {
4d348: 4aac 0054 tstl %a4@(84) <== NOT EXECUTED 4d34c: 670e beqs 4d35c <IMFS_memfile_remove+0x28> <== NOT EXECUTED
memfile_free_blocks_in_table( &info->indirect, to_free );
4d34e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d350: 486c 0054 pea %a4@(84) <== NOT EXECUTED 4d354: 4eb9 0004 d2ee jsr 4d2ee <memfile_free_blocks_in_table> <== NOT EXECUTED 4d35a: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->doubly_indirect ) {
4d35c: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4d360: 4a88 tstl %a0 <== NOT EXECUTED 4d362: 6750 beqs 4d3b4 <IMFS_memfile_remove+0x80> <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d364: 2239 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d36a: 2001 movel %d1,%d0 <== NOT EXECUTED 4d36c: e488 lsrl #2,%d0 <== NOT EXECUTED 4d36e: 47f9 0004 d2ee lea 4d2ee <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED 4d374: 6734 beqs 4d3aa <IMFS_memfile_remove+0x76> <== NOT EXECUTED 4d376: 4280 clrl %d0 <== NOT EXECUTED 4d378: 4282 clrl %d2 <== NOT EXECUTED 4d37a: 47f9 0004 d2ee lea 4d2ee <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED 4d380: 5282 addql #1,%d2 <== NOT EXECUTED
if ( info->doubly_indirect[i] ) {
4d382: e588 lsll #2,%d0 <== NOT EXECUTED 4d384: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED 4d388: 6710 beqs 4d39a <IMFS_memfile_remove+0x66> <== NOT EXECUTED
memfile_free_blocks_in_table(
4d38a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d38c: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 4d390: 4e93 jsr %a3@ <== NOT EXECUTED 4d392: 2239 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d398: 508f addql #8,%sp <== NOT EXECUTED
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++ ) {
4d39a: 2601 movel %d1,%d3 <== NOT EXECUTED 4d39c: 2002 movel %d2,%d0 <== NOT EXECUTED 4d39e: e48b lsrl #2,%d3 <== NOT EXECUTED 4d3a0: b483 cmpl %d3,%d2 <== NOT EXECUTED 4d3a2: 6406 bccs 4d3aa <IMFS_memfile_remove+0x76> <== NOT EXECUTED 4d3a4: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4d3a8: 60d6 bras 4d380 <IMFS_memfile_remove+0x4c> <== NOT EXECUTED
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 );
4d3aa: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d3ac: 486c 0058 pea %a4@(88) <== NOT EXECUTED 4d3b0: 4e93 jsr %a3@ <== NOT EXECUTED 4d3b2: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->triply_indirect ) {
4d3b4: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED 4d3b8: 4a88 tstl %a0 <== NOT EXECUTED 4d3ba: 6700 0086 beqw 4d442 <IMFS_memfile_remove+0x10e> <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d3be: 2239 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d3c4: 2001 movel %d1,%d0 <== NOT EXECUTED 4d3c6: e488 lsrl #2,%d0 <== NOT EXECUTED 4d3c8: 47f9 0004 d2ee lea 4d2ee <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED 4d3ce: 6768 beqs 4d438 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
p = (block_p *) info->triply_indirect[i];
4d3d0: 2450 moveal %a0@,%a2 <== NOT EXECUTED 4d3d2: 47f9 0004 d2ee lea 4d2ee <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d3d8: 4a8a tstl %a2 <== NOT EXECUTED 4d3da: 675c beqs 4d438 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
4d3dc: 4286 clrl %d6 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d3de: 4285 clrl %d5 <== NOT EXECUTED
break;
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
4d3e0: 4a80 tstl %d0 <== NOT EXECUTED 4d3e2: 6728 beqs 4d40c <IMFS_memfile_remove+0xd8> <== NOT EXECUTED 4d3e4: 4280 clrl %d0 <== NOT EXECUTED 4d3e6: 4282 clrl %d2 <== NOT EXECUTED 4d3e8: 5282 addql #1,%d2 <== NOT EXECUTED
if ( p[j] ) {
4d3ea: e588 lsll #2,%d0 <== NOT EXECUTED 4d3ec: 4ab2 0800 tstl %a2@(00000000,%d0:l) <== NOT EXECUTED 4d3f0: 6710 beqs 4d402 <IMFS_memfile_remove+0xce> <== NOT EXECUTED
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
4d3f2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d3f4: 4872 0800 pea %a2@(00000000,%d0:l) <== NOT EXECUTED 4d3f8: 4e93 jsr %a3@ <== NOT EXECUTED 4d3fa: 2239 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d400: 508f addql #8,%sp <== NOT EXECUTED
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++ ) {
4d402: 2601 movel %d1,%d3 <== NOT EXECUTED 4d404: 2002 movel %d2,%d0 <== NOT EXECUTED 4d406: e48b lsrl #2,%d3 <== NOT EXECUTED 4d408: b682 cmpl %d2,%d3 <== NOT EXECUTED 4d40a: 62dc bhis 4d3e8 <IMFS_memfile_remove+0xb4> <== NOT EXECUTED
if ( p[j] ) {
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
}
}
memfile_free_blocks_in_table(
4d40c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d40e: dcac 005c addl %a4@(92),%d6 <== NOT EXECUTED
memfile_free_blocks_in_table( &info->doubly_indirect, to_free );
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d412: 5285 addql #1,%d5 <== NOT EXECUTED
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(
4d414: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d416: 4e93 jsr %a3@ <== NOT EXECUTED
memfile_free_blocks_in_table( &info->doubly_indirect, to_free );
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d418: 2239 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d41e: 2001 movel %d1,%d0 <== NOT EXECUTED 4d420: 508f addql #8,%sp <== NOT EXECUTED 4d422: e488 lsrl #2,%d0 <== NOT EXECUTED 4d424: ba80 cmpl %d0,%d5 <== NOT EXECUTED 4d426: 6410 bccs 4d438 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
p = (block_p *) info->triply_indirect[i];
if ( !p ) /* ensure we have a valid pointer */
4d428: 2c05 movel %d5,%d6 <== NOT EXECUTED
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
4d42a: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d42e: e58e lsll #2,%d6 <== NOT EXECUTED
}
if ( info->triply_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
4d430: 2470 6800 moveal %a0@(00000000,%d6:l),%a2 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d434: 4a8a tstl %a2 <== NOT EXECUTED 4d436: 66a8 bnes 4d3e0 <IMFS_memfile_remove+0xac> <== NOT EXECUTED
}
}
memfile_free_blocks_in_table(
(block_p **)&info->triply_indirect[i], to_free );
}
memfile_free_blocks_in_table(
4d438: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d43a: 486c 005c pea %a4@(92) <== NOT EXECUTED 4d43e: 4e93 jsr %a3@ <== NOT EXECUTED 4d440: 508f addql #8,%sp <== NOT EXECUTED
(block_p **)&info->triply_indirect, to_free );
}
return 0;
}
4d442: 4280 clrl %d0 <== NOT EXECUTED 4d444: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 4d44a: 4e5e unlk %fp <== NOT EXECUTED
0004d44e <IMFS_memfile_remove_block>:
*/
MEMFILE_STATIC int IMFS_memfile_remove_block(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4d44e: 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 );
4d452: 42a7 clrl %sp@- <== NOT EXECUTED 4d454: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d458: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d45c: 4eb9 0004 ce5c jsr 4ce5c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
IMFS_assert( block_ptr );
ptr = *block_ptr;
4d462: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d464: 2210 movel %a0@,%d1 <== NOT EXECUTED
*block_ptr = 0;
4d466: 4290 clrl %a0@ <== NOT EXECUTED
memfile_free_block( ptr );
4d468: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d46a: 4eb9 0004 d2d4 jsr 4d2d4 <memfile_free_block> <== NOT EXECUTED
return 1;
}
4d470: 7001 moveq #1,%d0 <== NOT EXECUTED 4d472: 4e5e unlk %fp <== NOT EXECUTED
0004d57c <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 ) {
4d57c: 4280 clrl %d0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d57e: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 4d582: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED 4d586: 2e2e 0018 movel %fp@(24),%d7 <== NOT EXECUTED
/*
* 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;
4d58a: 2047 moveal %d7,%a0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d58c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d590: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4d594: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* 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;
4d598: d1c3 addal %d3,%a0 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size ) {
4d59a: 2208 movel %a0,%d1 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d59c: 286e 0014 moveal %fp@(20),%a4 <== NOT EXECUTED
* 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 ) {
4d5a0: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d5a4: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d5a8: 9a81 subl %d1,%d5 <== NOT EXECUTED 4d5aa: 9980 subxl %d0,%d4 <== NOT EXECUTED 4d5ac: 6d00 0116 bltw 4d6c4 <IMFS_memfile_write+0x148> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d5b0: 2c39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d5b6: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d5b8: 5bc4 smi %d4 <== NOT EXECUTED 4d5ba: 49c4 extbl %d4 <== NOT EXECUTED 4d5bc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d5be: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d5c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d5c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d5c4: 4eb9 0005 ab58 jsr 5ab58 <__moddi3> <== NOT EXECUTED 4d5ca: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d5ce: 2641 moveal %d1,%a3 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d5d0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d5d2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d5d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d5d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d5d8: 4eb9 0005 a7a4 jsr 5a7a4 <__divdi3> <== NOT EXECUTED 4d5de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d5e2: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d5e4: 4a8b tstl %a3 <== NOT EXECUTED 4d5e6: 6700 00d4 beqw 4d6bc <IMFS_memfile_write+0x140> <== 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 );
4d5ea: 42a7 clrl %sp@- <== NOT EXECUTED 4d5ec: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d5ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d5f0: 4eb9 0004 ce5c jsr 4ce5c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d5f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d5fa: 4a80 tstl %d0 <== NOT EXECUTED 4d5fc: 6700 0120 beqw 4d71e <IMFS_memfile_write+0x1a2> <== NOT EXECUTED
* 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 ) {
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;
4d600: 9c8b subl %a3,%d6 <== NOT EXECUTED 4d602: be86 cmpl %d6,%d7 <== NOT EXECUTED 4d604: 6500 00ee bcsw 4d6f4 <IMFS_memfile_write+0x178> <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d608: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d60a: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
4d60c: 280c movel %a4,%d4 <== NOT EXECUTED 4d60e: d886 addl %d6,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d610: 9e86 subl %d6,%d7 <== NOT EXECUTED
copied += to_copy;
4d612: 2606 movel %d6,%d3 <== NOT EXECUTED
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4d614: 5282 addql #1,%d2 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d616: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d618: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4d61a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d61c: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d622: 2c39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d628: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
4d62c: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d62e: 623a bhis 4d66a <IMFS_memfile_write+0xee> <== NOT EXECUTED 4d630: 47f9 0004 ce5c lea 4ce5c <IMFS_memfile_get_block_pointer>,%a3<== NOT EXECUTED
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 );
4d636: 49f9 0004 f1b8 lea 4f1b8 <memcpy>,%a4 <== NOT EXECUTED
* 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 );
4d63c: 42a7 clrl %sp@- <== NOT EXECUTED
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;
4d63e: 9e86 subl %d6,%d7 <== NOT EXECUTED
* 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 );
4d640: 2f02 movel %d2,%sp@- <== NOT EXECUTED
#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++;
4d642: 5282 addql #1,%d2 <== NOT EXECUTED
* 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 );
4d644: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d646: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !block_ptr )
4d648: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d64c: 4a80 tstl %d0 <== NOT EXECUTED 4d64e: 6760 beqs 4d6b0 <IMFS_memfile_write+0x134> <== NOT EXECUTED
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 );
4d650: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d652: 2040 moveal %d0,%a0 <== NOT EXECUTED
* 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(
4d654: d686 addl %d6,%d3 <== NOT EXECUTED
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 );
4d656: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d658: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
src += to_copy;
4d65a: d886 addl %d6,%d4 <== NOT EXECUTED
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 );
4d65c: 4e94 jsr %a4@ <== NOT EXECUTED
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
4d65e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d662: beb9 0005 f334 cmpl 5f334 <imfs_memfile_bytes_per_block>,%d7<== NOT EXECUTED 4d668: 64d2 bccs 4d63c <IMFS_memfile_write+0xc0> <== NOT EXECUTED
* 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 ) {
4d66a: 4a87 tstl %d7 <== NOT EXECUTED 4d66c: 6728 beqs 4d696 <IMFS_memfile_write+0x11a> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d66e: 42a7 clrl %sp@- <== NOT EXECUTED 4d670: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d672: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d674: 4eb9 0004 ce5c jsr 4ce5c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d67a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d67e: 4a80 tstl %d0 <== NOT EXECUTED 4d680: 672e beqs 4d6b0 <IMFS_memfile_write+0x134> <== NOT EXECUTED
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 );
4d682: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d684: 2040 moveal %d0,%a0 <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4d686: d687 addl %d7,%d3 <== NOT EXECUTED
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 );
4d688: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d68a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d68c: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4d692: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
4d696: 42a7 clrl %sp@- <== NOT EXECUTED 4d698: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d69c: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d6a2: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
return copied;
4d6a6: 508f addql #8,%sp <== NOT EXECUTED
memcpy( &(*block_ptr)[ 0 ], src, my_length );
my_length = 0;
copied += to_copy;
}
IMFS_mtime_ctime_update( the_jnode );
4d6a8: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 4d6ac: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
return copied;
}
4d6b0: 2003 movel %d3,%d0 <== NOT EXECUTED 4d6b2: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d6b8: 4e5e unlk %fp <== NOT EXECUTED 4d6ba: 4e75 rts <== NOT EXECUTED
unsigned int last_byte;
unsigned int start_offset;
int copied;
const unsigned char *src;
src = source;
4d6bc: 280c movel %a4,%d4 <== NOT EXECUTED
status = IMFS_memfile_extend( the_jnode, last_byte );
if ( status )
rtems_set_errno_and_return_minus_one( ENOSPC );
}
copied = 0;
4d6be: 4283 clrl %d3 <== NOT EXECUTED 4d6c0: 6000 ff6a braw 4d62c <IMFS_memfile_write+0xb0> <== NOT EXECUTED
* in memory file, then extend the length.
*/
last_byte = start + my_length;
if ( last_byte > the_jnode->info.file.size ) {
status = IMFS_memfile_extend( the_jnode, last_byte );
4d6c4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d6c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d6c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d6ca: 4eb9 0004 d476 jsr 4d476 <IMFS_memfile_extend> <== NOT EXECUTED
if ( status )
4d6d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d6d4: 4a80 tstl %d0 <== NOT EXECUTED 4d6d6: 6700 fed8 beqw 4d5b0 <IMFS_memfile_write+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4d6da: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4d6e0: 76ff moveq #-1,%d3 <== NOT EXECUTED 4d6e2: 781c moveq #28,%d4 <== NOT EXECUTED 4d6e4: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d6e6: 2003 movel %d3,%d0 <== NOT EXECUTED
last_byte = start + my_length;
if ( last_byte > the_jnode->info.file.size ) {
status = IMFS_memfile_extend( the_jnode, last_byte );
if ( status )
rtems_set_errno_and_return_minus_one( ENOSPC );
4d6e8: 2084 movel %d4,%a0@ <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d6ea: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d6f0: 4e5e unlk %fp <== NOT EXECUTED 4d6f2: 4e75 rts <== NOT EXECUTED
* 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 ) {
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;
4d6f4: 2c07 movel %d7,%d6 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d6f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
4d6f8: 280c movel %a4,%d4 <== NOT EXECUTED 4d6fa: d886 addl %d6,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d6fc: 9e86 subl %d6,%d7 <== NOT EXECUTED
copied += to_copy;
4d6fe: 2606 movel %d6,%d3 <== NOT EXECUTED
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4d700: 5282 addql #1,%d2 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d702: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d704: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d706: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4d708: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d70a: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d710: 2c39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d716: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d71a: 6000 ff10 braw 4d62c <IMFS_memfile_write+0xb0> <== 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;
4d71e: 4283 clrl %d3 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d720: 2003 movel %d3,%d0 <== NOT EXECUTED 4d722: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d728: 4e5e unlk %fp <== NOT EXECUTED
00042350 <IMFS_mknod>:
const char *token, /* IN */
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
42350: 4e56 ffb0 linkw %fp,#-80 42354: 48d7 007c moveml %d2-%d6,%sp@ 42358: 282e 0008 movel %fp@(8),%d4
IMFS_jnode_t *new_node;
int result;
char new_name[ IMFS_NAME_MAX + 1 ];
IMFS_types_union info;
IMFS_get_token( token, strlen( token ), new_name, &result );
4235c: 240e movel %fp,%d2 4235e: 0682 ffff ffc7 addil #-57,%d2 42364: 2f04 movel %d4,%sp@-
const char *token, /* IN */
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
42366: 262e 000c movel %fp@(12),%d3
IMFS_jnode_t *new_node;
int result;
char new_name[ IMFS_NAME_MAX + 1 ];
IMFS_types_union info;
IMFS_get_token( token, strlen( token ), new_name, &result );
4236a: 4eb9 0004 fd64 jsr 4fd64 <strlen> 42370: 588f addql #4,%sp 42372: 486e fffc pea %fp@(-4)
const char *token, /* IN */
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
42376: 2c2e 0010 movel %fp@(16),%d6
IMFS_jnode_t *new_node;
int result;
char new_name[ IMFS_NAME_MAX + 1 ];
IMFS_types_union info;
IMFS_get_token( token, strlen( token ), new_name, &result );
4237a: 2f02 movel %d2,%sp@-
const char *token, /* IN */
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
4237c: 2a2e 0014 movel %fp@(20),%d5
IMFS_jnode_t *new_node;
int result;
char new_name[ IMFS_NAME_MAX + 1 ];
IMFS_types_union info;
IMFS_get_token( token, strlen( token ), new_name, &result );
42380: 2f00 movel %d0,%sp@- 42382: 2f04 movel %d4,%sp@- 42384: 4eb9 0004 aa94 jsr 4aa94 <IMFS_get_token>
/*
* Figure out what type of IMFS node this is.
*/
if ( S_ISDIR(mode) )
4238a: 4fef 0010 lea %sp@(16),%sp 4238e: 2003 movel %d3,%d0 42390: 0280 0000 f000 andil #61440,%d0 42396: 0c80 0000 4000 cmpil #16384,%d0
4239c: 6756 beqs 423f4 <IMFS_mknod+0xa4>
type = IMFS_DIRECTORY;
else if ( S_ISREG(mode) )
4239e: 0c80 0000 8000 cmpil #32768,%d0
423a4: 6752 beqs 423f8 <IMFS_mknod+0xa8> <== NEVER TAKEN
type = IMFS_MEMORY_FILE;
else if ( S_ISBLK(mode) || S_ISCHR(mode) ) {
423a6: 0c80 0000 6000 cmpil #24576,%d0
423ac: 673a beqs 423e8 <IMFS_mknod+0x98>
423ae: 0c80 0000 2000 cmpil #8192,%d0
423b4: 6732 beqs 423e8 <IMFS_mknod+0x98> <== ALWAYS TAKEN
type = IMFS_DEVICE;
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
} else if (S_ISFIFO(mode))
423b6: 0c80 0000 1000 cmpil #4096,%d0 <== NOT EXECUTED 423bc: 673e beqs 423fc <IMFS_mknod+0xac> <== NOT EXECUTED
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
IMFS_token_types type = 0;
423be: 4280 clrl %d0 <== NOT EXECUTED
* was ONLY passed a NULL when we created the root node. We * added a new IMFS_create_root_node() so this path no longer * existed. The result was simpler code which should not have * this path. */ new_node = IMFS_create_node( pathloc, type, new_name, mode, &info );
423c0: 486e ffe8 pea %fp@(-24) 423c4: 2f03 movel %d3,%sp@- 423c6: 2f02 movel %d2,%sp@- 423c8: 2f00 movel %d0,%sp@- 423ca: 2f2e 0018 movel %fp@(24),%sp@- 423ce: 4eb9 0004 9f5e jsr 49f5e <IMFS_create_node>
if ( !new_node )
423d4: 4fef 0014 lea %sp@(20),%sp 423d8: 4a80 tstl %d0
423da: 6724 beqs 42400 <IMFS_mknod+0xb0> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( ENOMEM );
return 0;
423dc: 4280 clrl %d0
}
423de: 4cee 007c ffb0 moveml %fp@(-80),%d2-%d6 423e4: 4e5e unlk %fp 423e6: 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( dev, info.device.major, info.device.minor );
423e8: 2d46 ffe8 movel %d6,%fp@(-24)
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;
423ec: 7002 moveq #2,%d0
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
423ee: 2d45 ffec movel %d5,%fp@(-20) 423f2: 60cc bras 423c0 <IMFS_mknod+0x70>
/*
* Figure out what type of IMFS node this is.
*/
if ( S_ISDIR(mode) )
type = IMFS_DIRECTORY;
423f4: 7001 moveq #1,%d0 423f6: 60c8 bras 423c0 <IMFS_mknod+0x70>
else if ( S_ISREG(mode) )
type = IMFS_MEMORY_FILE;
423f8: 7005 moveq #5,%d0 <== NOT EXECUTED 423fa: 60c4 bras 423c0 <IMFS_mknod+0x70> <== NOT EXECUTED
else if ( S_ISBLK(mode) || S_ISCHR(mode) ) {
type = IMFS_DEVICE;
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
} else if (S_ISFIFO(mode))
type = IMFS_FIFO;
423fc: 7007 moveq #7,%d0 <== NOT EXECUTED 423fe: 60c0 bras 423c0 <IMFS_mknod+0x70> <== NOT EXECUTED
* existed. The result was simpler code which should not have
* this path.
*/
new_node = IMFS_create_node( pathloc, type, new_name, mode, &info );
if ( !new_node )
rtems_set_errno_and_return_minus_one( ENOMEM );
42400: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 42406: 720c moveq #12,%d1 <== NOT EXECUTED 42408: 2040 moveal %d0,%a0 <== NOT EXECUTED 4240a: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
4240c: 4cee 007c ffb0 moveml %fp@(-80),%d2-%d6 <== NOT EXECUTED
* existed. The result was simpler code which should not have
* this path.
*/
new_node = IMFS_create_node( pathloc, type, new_name, mode, &info );
if ( !new_node )
rtems_set_errno_and_return_minus_one( ENOMEM );
42412: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
42414: 4e5e unlk %fp <== NOT EXECUTED
00042418 <IMFS_mount>:
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
42418: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <rtems/seterr.h>
int IMFS_mount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
4241a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4241e: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
IMFS_jnode_t *node;
node = mt_entry->mt_point_node.node_access;
42422: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
42426: b0a8 0048 cmpl %a0@(72),%d0 <== NOT EXECUTED 4242a: 660a bnes 42436 <IMFS_mount+0x1e> <== NOT EXECUTED
/*
* Set mt_fs pointer to point to the mount table entry for
* the mounted file system.
*/
node->info.directory.mt_fs = mt_entry;
4242c: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED
return 0;
42430: 4280 clrl %d0 <== NOT EXECUTED
}
42432: 4e5e unlk %fp <== NOT EXECUTED 42434: 4e75 rts <== NOT EXECUTED
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
42436: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4243c: 7214 moveq #20,%d1 <== NOT EXECUTED 4243e: 2040 moveal %d0,%a0 <== NOT EXECUTED 42440: 70ff moveq #-1,%d0 <== NOT EXECUTED
* the mounted file system.
*/
node->info.directory.mt_fs = mt_entry;
return 0;
}
42442: 4e5e unlk %fp <== NOT EXECUTED
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
42444: 2081 movel %d1,%a0@ <== NOT EXECUTED
* the mounted file system.
*/
node->info.directory.mt_fs = mt_entry;
return 0;
}
00044da0 <IMFS_print_jnode>:
* This routine prints the contents of the specified jnode.
*/
void IMFS_print_jnode(
IMFS_jnode_t *the_jnode
)
{
44da0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
44da4: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED
* This routine prints the contents of the specified jnode.
*/
void IMFS_print_jnode(
IMFS_jnode_t *the_jnode
)
{
44daa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
44dac: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
* This routine prints the contents of the specified jnode.
*/
void IMFS_print_jnode(
IMFS_jnode_t *the_jnode
)
{
44db0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
44db4: 486a 000c pea %a2@(12) <== NOT EXECUTED 44db8: 4eb9 0005 33e4 jsr 533e4 <fputs> <== NOT EXECUTED
switch( the_jnode->type ) {
44dbe: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 44dc2: 508f addql #8,%sp <== NOT EXECUTED 44dc4: 7207 moveq #7,%d1 <== NOT EXECUTED 44dc6: b280 cmpl %d0,%d1 <== NOT EXECUTED 44dc8: 6424 bccs 44dee <IMFS_print_jnode+0x4e> <== NOT EXECUTED
case IMFS_FIFO:
fprintf(stdout, " FIFO not printed\n" );
return;
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
44dca: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44dcc: 4879 0006 2f6b pea 62f6b <IntUartPollCallbacks.6307+0x75> <== NOT EXECUTED 44dd2: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44dd8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ddc: 4eb9 0005 3296 jsr 53296 <fprintf> <== NOT EXECUTED
return;
}
puts("");
}
44de2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
fprintf(stdout, " FIFO not printed\n" );
return;
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
44de6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
puts("");
}
44dea: 4e5e unlk %fp <== NOT EXECUTED 44dec: 4e75 rts <== NOT EXECUTED
)
{
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
switch( the_jnode->type ) {
44dee: 323b 0a08 movew %pc@(44df8 <IMFS_print_jnode+0x58>,%d0:l:2),%d1<== NOT EXECUTED 44df2: 48c1 extl %d1 <== NOT EXECUTED 44df4: 4efb 1802 jmp %pc@(44df8 <IMFS_print_jnode+0x58>,%d1:l)<== NOT EXECUTED 44df8: ffd2 0177722 <== NOT EXECUTED 44dfa: 003a 072 <== NOT EXECUTED 44dfc: 0066 0146 <== NOT EXECUTED 44dfe: 0010 020 <== NOT EXECUTED 44e00: 0010 020 <== NOT EXECUTED 44e02: 009e 00d2 010a oril #13762826,%d6 <== NOT EXECUTED
case IMFS_HARD_LINK:
fprintf(stdout, " links not printed\n" );
return;
case IMFS_SYM_LINK:
fprintf(stdout, " links not printed\n" );
44e08: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44e0e: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e12: 4878 0013 pea 13 <INVALID_OPERATION+0x3> <== NOT EXECUTED 44e16: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44e1a: 4879 0006 2f44 pea 62f44 <IntUartPollCallbacks.6307+0x4e> <== NOT EXECUTED 44e20: 4eb9 0005 3f54 jsr 53f54 <fwrite> <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
}
44e26: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
fprintf(stdout, " links not printed\n" );
return;
case IMFS_SYM_LINK:
fprintf(stdout, " links not printed\n" );
return;
44e2a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
}
44e2e: 4e5e unlk %fp <== NOT EXECUTED 44e30: 4e75 rts <== NOT EXECUTED
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
switch( the_jnode->type ) {
case IMFS_DIRECTORY:
fprintf(stdout, "/" );
44e32: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44e38: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e3c: 4878 002f pea 2f <OPER2+0x1b> <== NOT EXECUTED 44e40: 4eb9 0005 3314 jsr 53314 <fputc> <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
}
44e46: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44e4a: 203c 0006 361e movel #407070,%d0 <== NOT EXECUTED
fprintf(stdout, "%s", the_jnode->name );
switch( the_jnode->type ) {
case IMFS_DIRECTORY:
fprintf(stdout, "/" );
break;
44e50: 508f addql #8,%sp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44e52: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
44e56: 4e5e unlk %fp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44e58: 4ef9 0005 4c76 jmp 54c76 <puts> <== NOT EXECUTED
case IMFS_DIRECTORY:
fprintf(stdout, "/" );
break;
case IMFS_DEVICE:
fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",
44e5e: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 44e62: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 44e66: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44e6c: 4879 0006 2f16 pea 62f16 <IntUartPollCallbacks.6307+0x20> <== NOT EXECUTED 44e72: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e76: 4eb9 0005 3296 jsr 53296 <fprintf> <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
}
44e7c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44e80: 203c 0006 361e movel #407070,%d0 <== NOT EXECUTED
break;
case IMFS_DEVICE:
fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",
the_jnode->info.device.major, the_jnode->info.device.minor );
break;
44e86: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44e8a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
44e8e: 4e5e unlk %fp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44e90: 4ef9 0005 4c76 jmp 54c76 <puts> <== NOT EXECUTED
the_jnode->info.file.indirect,
the_jnode->info.file.doubly_indirect,
the_jnode->info.file.triply_indirect
);
#else
fprintf(stdout, " (file %" PRId32 ")",
44e96: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 44e9a: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44ea0: 4879 0006 2f38 pea 62f38 <IntUartPollCallbacks.6307+0x42> <== NOT EXECUTED 44ea6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44eaa: 4eb9 0005 3296 jsr 53296 <fprintf> <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
}
44eb0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44eb4: 203c 0006 361e movel #407070,%d0 <== NOT EXECUTED
);
#else
fprintf(stdout, " (file %" PRId32 ")",
(uint32_t)the_jnode->info.file.size );
#endif
break;
44eba: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44ebe: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
44ec2: 4e5e unlk %fp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44ec4: 4ef9 0005 4c76 jmp 54c76 <puts> <== 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)",
44eca: 2f2a 0054 movel %a2@(84),%sp@- <== NOT EXECUTED 44ece: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 44ed2: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44ed8: 4879 0006 2f29 pea 62f29 <IntUartPollCallbacks.6307+0x33> <== NOT EXECUTED 44ede: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ee2: 4eb9 0005 3296 jsr 53296 <fprintf> <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
}
44ee8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44eec: 203c 0006 361e movel #407070,%d0 <== NOT EXECUTED
case IMFS_LINEAR_FILE:
fprintf(stdout, " (file %" PRId32 " %p)",
(uint32_t)the_jnode->info.linearfile.size,
the_jnode->info.linearfile.direct
);
break;
44ef2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44ef6: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
44efa: 4e5e unlk %fp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44efc: 4ef9 0005 4c76 jmp 54c76 <puts> <== NOT EXECUTED
case IMFS_SYM_LINK:
fprintf(stdout, " links not printed\n" );
return;
case IMFS_FIFO:
fprintf(stdout, " FIFO not printed\n" );
44f02: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44f08: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44f0c: 4878 0012 pea 12 <INVALID_OPERATION+0x2> <== NOT EXECUTED 44f10: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44f14: 4879 0006 2f58 pea 62f58 <IntUartPollCallbacks.6307+0x62> <== NOT EXECUTED 44f1a: 4eb9 0005 3f54 jsr 53f54 <fwrite> <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
}
44f20: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
fprintf(stdout, " links not printed\n" );
return;
case IMFS_FIFO:
fprintf(stdout, " FIFO not printed\n" );
return;
44f24: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
}
44f28: 4e5e unlk %fp <== NOT EXECUTED
0004245c <IMFS_readlink>:
int IMFS_readlink(
rtems_filesystem_location_info_t *loc,
char *buf, /* OUT */
size_t bufsize
)
{
4245c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
IMFS_jnode_t *node;
int i;
node = loc->node_access;
42460: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int IMFS_readlink(
rtems_filesystem_location_info_t *loc,
char *buf, /* OUT */
size_t bufsize
)
{
42464: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 42468: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 4246c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
IMFS_jnode_t *node;
int i;
node = loc->node_access;
42470: 2450 moveal %a0@,%a2 <== NOT EXECUTED
IMFS_assert( node->type == IMFS_SYM_LINK );
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
42472: 672a beqs 4249e <IMFS_readlink+0x42> <== NOT EXECUTED 42474: 206a 004c moveal %a2@(76),%a0 <== NOT EXECUTED 42478: 1210 moveb %a0@,%d1 <== NOT EXECUTED 4247a: 6722 beqs 4249e <IMFS_readlink+0x42> <== NOT EXECUTED 4247c: 91c8 subal %a0,%a0 <== NOT EXECUTED 4247e: 4280 clrl %d0 <== NOT EXECUTED 42480: 5280 addql #1,%d0 <== NOT EXECUTED
buf[i] = node->info.sym_link.name[i];
42482: 1781 8800 moveb %d1,%a3@(00000000,%a0:l) <== NOT EXECUTED
node = loc->node_access;
IMFS_assert( node->type == IMFS_SYM_LINK );
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
42486: 2040 moveal %d0,%a0 <== NOT EXECUTED 42488: b480 cmpl %d0,%d2 <== NOT EXECUTED 4248a: 630a blss 42496 <IMFS_readlink+0x3a> <== NOT EXECUTED 4248c: 226a 004c moveal %a2@(76),%a1 <== NOT EXECUTED 42490: 1231 0800 moveb %a1@(00000000,%d0:l),%d1 <== NOT EXECUTED 42494: 66ea bnes 42480 <IMFS_readlink+0x24> <== NOT EXECUTED
buf[i] = node->info.sym_link.name[i];
return i;
}
42496: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 4249a: 4e5e unlk %fp <== NOT EXECUTED 4249c: 4e75 rts <== NOT EXECUTED
node = loc->node_access;
IMFS_assert( node->type == IMFS_SYM_LINK );
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
4249e: 4280 clrl %d0 <== NOT EXECUTED
buf[i] = node->info.sym_link.name[i];
return i;
}
424a0: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 424a4: 4e5e unlk %fp <== NOT EXECUTED
000424a8 <IMFS_rename>:
rtems_filesystem_location_info_t *old_parent_loc, /* IN */
rtems_filesystem_location_info_t *old_loc, /* IN */
rtems_filesystem_location_info_t *new_parent_loc, /* IN */
const char *new_name /* IN */
)
{
424a8: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
IMFS_jnode_t *new_parent;
the_jnode = old_loc->node_access;
424ac: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
rtems_filesystem_location_info_t *old_parent_loc, /* IN */
rtems_filesystem_location_info_t *old_loc, /* IN */
rtems_filesystem_location_info_t *new_parent_loc, /* IN */
const char *new_name /* IN */
)
{
424b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
IMFS_jnode_t *new_parent;
the_jnode = old_loc->node_access;
strncpy( the_jnode->name, new_name, IMFS_NAME_MAX );
424b2: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED 424b6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
)
{
IMFS_jnode_t *the_jnode;
IMFS_jnode_t *new_parent;
the_jnode = old_loc->node_access;
424ba: 2450 moveal %a0@,%a2 <== NOT EXECUTED
strncpy( the_jnode->name, new_name, IMFS_NAME_MAX );
424bc: 486a 000c pea %a2@(12) <== NOT EXECUTED 424c0: 4eb9 0004 fd7c jsr 4fd7c <strncpy> <== NOT EXECUTED
if ( the_jnode->Parent != NULL )
424c6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 424ca: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 424ce: 670a beqs 424da <IMFS_rename+0x32> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
424d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 424d2: 4eb9 0004 6f1c jsr 46f1c <_Chain_Extract> <== NOT EXECUTED 424d8: 588f addql #4,%sp <== NOT EXECUTED
rtems_chain_extract( (rtems_chain_node *) the_jnode );
new_parent = new_parent_loc->node_access;
424da: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 424de: 2050 moveal %a0@,%a0 <== NOT EXECUTED
the_jnode->Parent = new_parent;
424e0: 2548 0008 movel %a0,%a2@(8) <== 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 );
424e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 424e6: 4868 004c pea %a0@(76) <== NOT EXECUTED 424ea: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &new_parent->info.directory.Entries, &the_jnode->Node );
/*
* Update the time.
*/
IMFS_update_ctime( the_jnode );
424f0: 42a7 clrl %sp@- <== NOT EXECUTED 424f2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 424f6: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 424fc: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
}
42502: 4280 clrl %d0 <== NOT EXECUTED 42504: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 42508: 4e5e unlk %fp <== NOT EXECUTED
0004ac50 <IMFS_rmnod>:
int IMFS_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4ac50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ac54: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4ac58: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access;
4ac5a: 2410 movel %a0@,%d2 <== NOT EXECUTED
IMFS_create_orphan( jnode );
4ac5c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ac5e: 4eb9 0004 ab74 jsr 4ab74 <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( jnode );
4ac64: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ac66: 4eb9 0004 abb8 jsr 4abb8 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4ac6c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4ac70: 4280 clrl %d0 <== NOT EXECUTED 4ac72: 4e5e unlk %fp <== NOT EXECUTED
...
0004ac78 <IMFS_stat>:
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4ac78: 7007 moveq #7,%d0
int IMFS_stat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4ac7a: 4e56 0000 linkw %fp,#0 4ac7e: 206e 000c moveal %fp@(12),%a0 4ac82: 2f0a movel %a2,%sp@- 4ac84: 246e 0008 moveal %fp@(8),%a2
IMFS_fs_info_t *fs_info;
IMFS_jnode_t *the_jnode;
IMFS_device_t *io;
the_jnode = loc->node_access;
4ac88: 2252 moveal %a2@,%a1
switch ( the_jnode->type ) {
4ac8a: b0a9 0048 cmpl %a1@(72),%d0
4ac8e: 6418 bccs 4aca8 <IMFS_stat+0x30> <== ALWAYS TAKEN
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4ac90: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
}
4ac96: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4ac9a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ac9c: 70ff moveq #-1,%d0 <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
}
4ac9e: 4e5e unlk %fp <== NOT EXECUTED
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4aca0: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
}
4aca6: 4e75 rts <== NOT EXECUTED
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4aca8: 2029 0048 movel %a1@(72),%d0 4acac: d080 addl %d0,%d0 4acae: 303b 0808 movew %pc@(4acb8 <IMFS_stat+0x40>,%d0:l),%d0 4acb2: 48c0 extl %d0 4acb4: 4efb 0802 jmp %pc@(4acb8 <IMFS_stat+0x40>,%d0:l)
4acb8: ffd8 0177730 <== NOT EXECUTED 4acba: ffd8 0177730 <== NOT EXECUTED 4acbc: 00c2 bitrev %d2 <== NOT EXECUTED 4acbe: ffd8 0177730 <== NOT EXECUTED 4acc0: 0010 020 <== NOT EXECUTED 4acc2: 006a 0152 <== NOT EXECUTED 4acc4: 006a 0152 <== NOT EXECUTED 4acc6: 0010 020 <== NOT EXECUTED
/*
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
4acc8: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
4accc: 4280 clrl %d0 <== NOT EXECUTED 4acce: 4281 clrl %d1 <== NOT EXECUTED
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
4acd0: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
4acd4: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4acd8: 2141 0022 movel %d1,%a0@(34) <== NOT EXECUTED
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
4acdc: 2212 movel %a2@,%d1 <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
4acde: 4280 clrl %d0 <== NOT EXECUTED
*/
fs_info = loc->mt_entry->fs_info;
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
buf->st_mode = the_jnode->st_mode;
4ace0: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4ace6: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino;
4acec: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4acf2: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4acf8: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
4acfe: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4ad04: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4ad0a: 2169 0044 0036 movel %a1@(68),%a0@(54) <== NOT EXECUTED
/* * The device number of the IMFS is the major number and the minor is the * instance. */ fs_info = loc->mt_entry->fs_info; buf->st_dev =
4ad10: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4ad16: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
}
4ad1a: 246e fffc moveal %fp@(-4),%a2 4ad1e: 4e5e unlk %fp 4ad20: 4e75 rts
/*
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
4ad22: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED
buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
break;
case IMFS_LINEAR_FILE:
case IMFS_MEMORY_FILE:
buf->st_size = the_jnode->info.file.size;
4ad26: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 4ad2a: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
4ad2e: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED
buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
break;
case IMFS_LINEAR_FILE:
case IMFS_MEMORY_FILE:
buf->st_size = the_jnode->info.file.size;
4ad32: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4ad36: 2141 0022 movel %d1,%a0@(34) <== NOT EXECUTED
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
4ad3a: 2212 movel %a2@,%d1 <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
4ad3c: 4280 clrl %d0 <== NOT EXECUTED
*/
fs_info = loc->mt_entry->fs_info;
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
buf->st_mode = the_jnode->st_mode;
4ad3e: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4ad44: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino;
4ad4a: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4ad50: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4ad56: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
4ad5c: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4ad62: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4ad68: 2169 0044 0036 movel %a1@(68),%a0@(54) <== NOT EXECUTED
/* * The device number of the IMFS is the major number and the minor is the * instance. */ fs_info = loc->mt_entry->fs_info; buf->st_dev =
4ad6e: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4ad74: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED 4ad78: 60a0 bras 4ad1a <IMFS_stat+0xa2> <== NOT EXECUTED
/*
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
4ad7a: 246a 0010 moveal %a2@(16),%a2
switch ( the_jnode->type ) {
case IMFS_DEVICE:
io = &the_jnode->info.device;
buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
4ad7e: 2029 0050 movel %a1@(80),%d0
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
4ad82: 246a 0034 moveal %a2@(52),%a2
switch ( the_jnode->type ) {
case IMFS_DEVICE:
io = &the_jnode->info.device;
buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
4ad86: 2169 004c 0016 movel %a1@(76),%a0@(22)
* The device number of the IMFS is the major number and the minor is the
* instance.
*/
fs_info = loc->mt_entry->fs_info;
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
4ad8c: 2212 movel %a2@,%d1
buf->st_mode = the_jnode->st_mode;
4ad8e: 2169 002e 000c movel %a1@(46),%a0@(12)
buf->st_nlink = the_jnode->st_nlink;
4ad94: 3169 0032 0010 movew %a1@(50),%a0@(16)
buf->st_ino = the_jnode->st_ino;
4ad9a: 2169 0034 0008 movel %a1@(52),%a0@(8)
buf->st_uid = the_jnode->st_uid;
4ada0: 3169 0038 0012 movew %a1@(56),%a0@(18)
buf->st_gid = the_jnode->st_gid;
4ada6: 3169 003a 0014 movew %a1@(58),%a0@(20)
buf->st_atime = the_jnode->stat_atime;
4adac: 2169 003c 0026 movel %a1@(60),%a0@(38)
buf->st_mtime = the_jnode->stat_mtime;
4adb2: 2169 0040 002e movel %a1@(64),%a0@(46)
buf->st_ctime = the_jnode->stat_ctime;
4adb8: 2169 0044 0036 movel %a1@(68),%a0@(54)
switch ( the_jnode->type ) {
case IMFS_DEVICE:
io = &the_jnode->info.device;
buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
4adbe: 2140 001a movel %d0,%a0@(26)
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
4adc2: 4280 clrl %d0
/* * The device number of the IMFS is the major number and the minor is the * instance. */ fs_info = loc->mt_entry->fs_info; buf->st_dev =
4adc4: 20bc 0000 fffe movel #65534,%a0@ 4adca: 2141 0004 movel %d1,%a0@(4) 4adce: 6000 ff4a braw 4ad1a <IMFS_stat+0xa2>
...
0004250c <IMFS_symlink>:
int IMFS_symlink(
rtems_filesystem_location_info_t *parent_loc,
const char *link_name,
const char *node_name
)
{
4250c: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 42510: 2f03 movel %d3,%sp@- <== NOT EXECUTED
int i;
/*
* Remove any separators at the end of the string.
*/
IMFS_get_token( node_name, strlen( node_name ), new_name, &i );
42512: 260e movel %fp,%d3 <== NOT EXECUTED 42514: 0683 ffff ffc7 addil #-57,%d3 <== NOT EXECUTED
int IMFS_symlink(
rtems_filesystem_location_info_t *parent_loc,
const char *link_name,
const char *node_name
)
{
4251a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4251c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
int i;
/*
* Remove any separators at the end of the string.
*/
IMFS_get_token( node_name, strlen( node_name ), new_name, &i );
42520: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42522: 4eb9 0004 fd64 jsr 4fd64 <strlen> <== NOT EXECUTED 42528: 588f addql #4,%sp <== NOT EXECUTED 4252a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4252e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 42530: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42532: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42534: 4eb9 0004 aa94 jsr 4aa94 <IMFS_get_token> <== NOT EXECUTED
/*
* Duplicate link name
*/
info.sym_link.name = strdup(link_name);
4253a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4253e: 4eb9 0004 f8d4 jsr 4f8d4 <strdup> <== NOT EXECUTED
if (info.sym_link.name == NULL) {
42544: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
IMFS_get_token( node_name, strlen( node_name ), new_name, &i );
/*
* Duplicate link name
*/
info.sym_link.name = strdup(link_name);
42548: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
if (info.sym_link.name == NULL) {
4254c: 6730 beqs 4257e <IMFS_symlink+0x72> <== NOT EXECUTED
* was ONLY passed a NULL when we created the root node. We * added a new IMFS_create_root_node() so this path no longer * existed. The result was simpler code which should not have * this path. */ new_node = IMFS_create_node(
4254e: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 42552: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED 42558: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4255a: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED 4255e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 42562: 4eb9 0004 9f5e jsr 49f5e <IMFS_create_node> <== NOT EXECUTED
new_name,
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
&info
);
if (new_node == NULL) {
42568: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4256c: 4a80 tstl %d0 <== NOT EXECUTED 4256e: 6728 beqs 42598 <IMFS_symlink+0x8c> <== NOT EXECUTED
free(info.sym_link.name);
rtems_set_errno_and_return_minus_one(ENOMEM);
}
return 0;
}
42570: 242e ffbc movel %fp@(-68),%d2 <== NOT EXECUTED
if (new_node == NULL) {
free(info.sym_link.name);
rtems_set_errno_and_return_minus_one(ENOMEM);
}
return 0;
42574: 4280 clrl %d0 <== NOT EXECUTED
}
42576: 262e ffc0 movel %fp@(-64),%d3 <== NOT EXECUTED 4257a: 4e5e unlk %fp <== NOT EXECUTED 4257c: 4e75 rts <== NOT EXECUTED
/*
* Duplicate link name
*/
info.sym_link.name = strdup(link_name);
if (info.sym_link.name == NULL) {
rtems_set_errno_and_return_minus_one(ENOMEM);
4257e: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 42584: 740c moveq #12,%d2 <== NOT EXECUTED 42586: 2040 moveal %d0,%a0 <== NOT EXECUTED 42588: 70ff moveq #-1,%d0 <== NOT EXECUTED 4258a: 2082 movel %d2,%a0@ <== NOT EXECUTED
free(info.sym_link.name);
rtems_set_errno_and_return_minus_one(ENOMEM);
}
return 0;
}
4258c: 242e ffbc movel %fp@(-68),%d2 <== NOT EXECUTED 42590: 262e ffc0 movel %fp@(-64),%d3 <== NOT EXECUTED 42594: 4e5e unlk %fp <== NOT EXECUTED 42596: 4e75 rts <== NOT EXECUTED
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
&info
);
if (new_node == NULL) {
free(info.sym_link.name);
42598: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED 4259c: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOMEM);
425a2: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
}
return 0;
}
425a8: 242e ffbc movel %fp@(-68),%d2 <== NOT EXECUTED
&info
);
if (new_node == NULL) {
free(info.sym_link.name);
rtems_set_errno_and_return_minus_one(ENOMEM);
425ac: 2040 moveal %d0,%a0 <== NOT EXECUTED 425ae: 720c moveq #12,%d1 <== NOT EXECUTED 425b0: 588f addql #4,%sp <== NOT EXECUTED 425b2: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return 0;
}
425b4: 262e ffc0 movel %fp@(-64),%d3 <== NOT EXECUTED 425b8: 4e5e unlk %fp <== NOT EXECUTED
&info
);
if (new_node == NULL) {
free(info.sym_link.name);
rtems_set_errno_and_return_minus_one(ENOMEM);
425ba: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return 0;
}
...
000425c0 <IMFS_unlink>:
/*
* If this is the last last pointer to the node
* free the node.
*/
if ( node->type == IMFS_HARD_LINK ) {
425c0: 7003 moveq #3,%d0 <== NOT EXECUTED
int IMFS_unlink(
rtems_filesystem_location_info_t *parentloc, /* IN */
rtems_filesystem_location_info_t *loc /* IN */
)
{
425c2: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 425c6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 425ca: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 425ce: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
IMFS_jnode_t *node;
rtems_filesystem_location_info_t the_link;
int result = 0;
node = loc->node_access;
425d2: 2652 moveal %a2@,%a3 <== NOT EXECUTED
/*
* If this is the last last pointer to the node
* free the node.
*/
if ( node->type == IMFS_HARD_LINK ) {
425d4: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 425d8: 671a beqs 425f4 <IMFS_unlink+0x34> <== NOT EXECUTED
/*
* Now actually free the node we were asked to free.
*/
result = (*loc->handlers->rmnod_h)( parentloc, loc );
425da: 2f0a movel %a2,%sp@- <== NOT EXECUTED 425dc: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED 425e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 425e2: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED 425e6: 4e90 jsr %a0@ <== NOT EXECUTED
return result;
425e8: 508f addql #8,%sp <== NOT EXECUTED
}
425ea: 4cee 0c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a3 <== NOT EXECUTED 425f0: 4e5e unlk %fp <== NOT EXECUTED 425f2: 4e75 rts <== NOT EXECUTED
* free the node.
*/
if ( node->type == IMFS_HARD_LINK ) {
if ( !node->info.hard_link.link_node )
425f4: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED 425f8: 6700 0090 beqw 4268a <IMFS_unlink+0xca> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_link = *loc;
425fc: 41ea 0004 lea %a2@(4),%a0 <== NOT EXECUTED
the_link.node_access = node->info.hard_link.link_node;
IMFS_Set_handlers( &the_link );
42600: 260e movel %fp,%d3 <== NOT EXECUTED 42602: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED
/*
* If removing the last hard link to a node, then we need
* to remove the node that is a link and the node itself.
*/
if ( node->info.hard_link.link_node->st_nlink == 1)
42608: 7801 moveq #1,%d4 <== NOT EXECUTED
if ( node->type == IMFS_HARD_LINK ) {
if ( !node->info.hard_link.link_node )
rtems_set_errno_and_return_minus_one( EINVAL );
the_link = *loc;
4260a: 2d58 ffe8 movel %a0@+,%fp@(-24) <== NOT EXECUTED 4260e: 2d58 ffec movel %a0@+,%fp@(-20) <== NOT EXECUTED 42612: 2d58 fff0 movel %a0@+,%fp@(-16) <== NOT EXECUTED 42616: 2d50 fff4 movel %a0@,%fp@(-12) <== NOT EXECUTED
the_link.node_access = node->info.hard_link.link_node;
IMFS_Set_handlers( &the_link );
4261a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
if ( !node->info.hard_link.link_node )
rtems_set_errno_and_return_minus_one( EINVAL );
the_link = *loc;
the_link.node_access = node->info.hard_link.link_node;
4261c: 2d40 ffe4 movel %d0,%fp@(-28) <== NOT EXECUTED
IMFS_Set_handlers( &the_link );
42620: 4eb9 0004 a190 jsr 4a190 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* If removing the last hard link to a node, then we need
* to remove the node that is a link and the node itself.
*/
if ( node->info.hard_link.link_node->st_nlink == 1)
42626: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED 4262a: 4281 clrl %d1 <== NOT EXECUTED 4262c: 588f addql #4,%sp <== NOT EXECUTED 4262e: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED 42632: 3200 movew %d0,%d1 <== NOT EXECUTED 42634: b881 cmpl %d1,%d4 <== NOT EXECUTED 42636: 6730 beqs 42668 <IMFS_unlink+0xa8> <== NOT EXECUTED
if ( result != 0 )
return -1;
}
else
{
node->info.hard_link.link_node->st_nlink --;
42638: 5380 subql #1,%d0 <== NOT EXECUTED 4263a: 3140 0032 movew %d0,%a0@(50) <== NOT EXECUTED
IMFS_update_ctime( node->info.hard_link.link_node );
4263e: 42a7 clrl %sp@- <== NOT EXECUTED 42640: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 42644: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4264a: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED 4264e: 508f addql #8,%sp <== NOT EXECUTED 42650: 216e fff8 0044 movel %fp@(-8),%a0@(68) <== NOT EXECUTED
/*
* Now actually free the node we were asked to free.
*/
result = (*loc->handlers->rmnod_h)( parentloc, loc );
42656: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42658: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED 4265c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4265e: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED 42662: 4e90 jsr %a0@ <== NOT EXECUTED
return result;
42664: 508f addql #8,%sp <== NOT EXECUTED 42666: 6082 bras 425ea <IMFS_unlink+0x2a> <== NOT EXECUTED
* to remove the node that is a link and the node itself.
*/
if ( node->info.hard_link.link_node->st_nlink == 1)
{
result = (*the_link.handlers->rmnod_h)( parentloc, &the_link );
42668: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4266a: 206e ffec moveal %fp@(-20),%a0 <== NOT EXECUTED 4266e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42670: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED 42674: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 )
42676: 508f addql #8,%sp <== NOT EXECUTED 42678: 4a80 tstl %d0 <== NOT EXECUTED 4267a: 6700 ff5e beqw 425da <IMFS_unlink+0x1a> <== NOT EXECUTED
return -1;
4267e: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
result = (*loc->handlers->rmnod_h)( parentloc, loc );
return result;
}
42680: 4cee 0c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a3 <== NOT EXECUTED 42686: 4e5e unlk %fp <== NOT EXECUTED 42688: 4e75 rts <== NOT EXECUTED
*/
if ( node->type == IMFS_HARD_LINK ) {
if ( !node->info.hard_link.link_node )
rtems_set_errno_and_return_minus_one( EINVAL );
4268a: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 42690: 7216 moveq #22,%d1 <== NOT EXECUTED 42692: 2040 moveal %d0,%a0 <== NOT EXECUTED 42694: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
result = (*loc->handlers->rmnod_h)( parentloc, loc );
return result;
}
42696: 4cee 0c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a3 <== NOT EXECUTED
*/
if ( node->type == IMFS_HARD_LINK ) {
if ( !node->info.hard_link.link_node )
rtems_set_errno_and_return_minus_one( EINVAL );
4269c: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
result = (*loc->handlers->rmnod_h)( parentloc, loc );
return result;
}
4269e: 4e5e unlk %fp <== NOT EXECUTED
...
000426a4 <IMFS_unmount>:
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
426a4: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <rtems/seterr.h>
int IMFS_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
426a6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 426aa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
IMFS_jnode_t *node;
node = mt_entry->mt_point_node.node_access;
426ae: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
426b2: b0a8 0048 cmpl %a0@(72),%d0 <== NOT EXECUTED 426b6: 6610 bnes 426c8 <IMFS_unmount+0x24> <== NOT EXECUTED
/*
* Did the node indicate that there was a directory mounted here?
*/
if ( node->info.directory.mt_fs == NULL )
426b8: 4aa8 0058 tstl %a0@(88) <== NOT EXECUTED 426bc: 671c beqs 426da <IMFS_unmount+0x36> <== NOT EXECUTED
/*
* Set the mt_fs pointer to indicate that there is no longer
* a file system mounted to this point.
*/
node->info.directory.mt_fs = NULL;
426be: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED
return 0;
426c2: 4280 clrl %d0 <== NOT EXECUTED
}
426c4: 4e5e unlk %fp <== NOT EXECUTED 426c6: 4e75 rts <== NOT EXECUTED
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
426c8: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 426ce: 7214 moveq #20,%d1 <== NOT EXECUTED 426d0: 2040 moveal %d0,%a0 <== NOT EXECUTED 426d2: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
node->info.directory.mt_fs = NULL;
return 0;
}
426d4: 4e5e unlk %fp <== NOT EXECUTED
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
426d6: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
node->info.directory.mt_fs = NULL;
return 0;
}
426d8: 4e75 rts <== NOT EXECUTED
/*
* Did the node indicate that there was a directory mounted here?
*/
if ( node->info.directory.mt_fs == NULL )
rtems_set_errno_and_return_minus_one( EINVAL ); /* XXX */
426da: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 426e0: 7216 moveq #22,%d1 <== NOT EXECUTED 426e2: 2040 moveal %d0,%a0 <== NOT EXECUTED 426e4: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
node->info.directory.mt_fs = NULL;
return 0;
}
426e6: 4e5e unlk %fp <== NOT EXECUTED
/*
* Did the node indicate that there was a directory mounted here?
*/
if ( node->info.directory.mt_fs == NULL )
rtems_set_errno_and_return_minus_one( EINVAL ); /* XXX */
426e8: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
node->info.directory.mt_fs = NULL;
return 0;
}
000426ec <IMFS_utime>:
int IMFS_utime(
rtems_filesystem_location_info_t *pathloc, /* IN */
time_t actime, /* IN */
time_t modtime /* IN */
)
{
426ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 426f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 426f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
426f6: 2450 moveal %a0@,%a2 <== NOT EXECUTED
the_jnode->stat_atime = actime;
426f8: 256e 000c 003c movel %fp@(12),%a2@(60) <== NOT EXECUTED
the_jnode->stat_mtime = modtime;
426fe: 256e 0010 0040 movel %fp@(16),%a2@(64) <== NOT EXECUTED
the_jnode->stat_ctime = time( NULL );
42704: 42a7 clrl %sp@- <== NOT EXECUTED 42706: 4eb9 0005 202c jsr 5202c <time> <== NOT EXECUTED 4270c: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
return 0;
}
42710: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 42714: 4280 clrl %d0 <== NOT EXECUTED 42716: 4e5e unlk %fp <== NOT EXECUTED
...
00042f5c <RTEMS_Malloc_Initialize>:
void RTEMS_Malloc_Initialize(
void *heap_begin,
uintptr_t heap_size,
size_t sbrk_amount
)
{
42f5c: 4e56 fff4 linkw %fp,#-12
/*
* If configured, initialize the statistics support
*/
if ( rtems_malloc_statistics_helpers != NULL ) {
42f60: 2079 0005 eac6 moveal 5eac6 <rtems_malloc_statistics_helpers>,%a0
void RTEMS_Malloc_Initialize(
void *heap_begin,
uintptr_t heap_size,
size_t sbrk_amount
)
{
42f66: 48d7 001c moveml %d2-%d4,%sp@ 42f6a: 242e 0008 movel %fp@(8),%d2 42f6e: 262e 000c movel %fp@(12),%d3 42f72: 282e 0010 movel %fp@(16),%d4
/*
* If configured, initialize the statistics support
*/
if ( rtems_malloc_statistics_helpers != NULL ) {
42f76: 4a88 tstl %a0
42f78: 6704 beqs 42f7e <RTEMS_Malloc_Initialize+0x22>
(*rtems_malloc_statistics_helpers->initialize)();
42f7a: 2050 moveal %a0@,%a0 42f7c: 4e90 jsr %a0@
}
/*
* Initialize the garbage collection list to start with nothing on it.
*/
malloc_deferred_frees_initialize();
42f7e: 4eb9 0004 2ee0 jsr 42ee0 <malloc_deferred_frees_initialize>
/*
* Initialize the optional sbrk support for extending the heap
*/
if ( rtems_malloc_sbrk_helpers != NULL ) {
42f84: 2079 0005 eaca moveal 5eaca <rtems_malloc_sbrk_helpers>,%a0 42f8a: 4a88 tstl %a0
42f8c: 670e beqs 42f9c <RTEMS_Malloc_Initialize+0x40>
heap_begin = (*rtems_malloc_sbrk_helpers->initialize)(
42f8e: 2f04 movel %d4,%sp@-
heap_begin,
sbrk_amount
);
heap_size = (uintptr_t) sbrk_amount;
42f90: 2604 movel %d4,%d3
/*
* Initialize the optional sbrk support for extending the heap
*/
if ( rtems_malloc_sbrk_helpers != NULL ) {
heap_begin = (*rtems_malloc_sbrk_helpers->initialize)(
42f92: 2f02 movel %d2,%sp@- 42f94: 2050 moveal %a0@,%a0 42f96: 4e90 jsr %a0@
42f98: 508f addql #8,%sp <== NOT EXECUTED 42f9a: 2400 movel %d0,%d2 <== NOT EXECUTED
* of the time under UNIX because zero'ing memory when it is first
* given to a process eliminates the chance of a process seeing data
* left over from another process. This would be a security violation.
*/
if (
42f9c: 4a39 0005 eac4 tstb 5eac4 <rtems_unified_work_area>
42fa2: 6624 bnes 42fc8 <RTEMS_Malloc_Initialize+0x6c>
!rtems_unified_work_area
&& rtems_configuration_get_do_zero_of_workspace()
42fa4: 4a39 0005 e40c tstb 5e40c <Configuration+0x28>
42faa: 6642 bnes 42fee <RTEMS_Malloc_Initialize+0x92>
void *area_begin,
uintptr_t area_size,
uintptr_t page_size
)
{
return _Heap_Initialize( heap, area_begin, area_size, page_size );
42fac: 4878 0004 pea 4 <CONTEXT_ARG> 42fb0: 2f03 movel %d3,%sp@- 42fb2: 2f02 movel %d2,%sp@- 42fb4: 2f39 0005 e340 movel 5e340 <RTEMS_Malloc_Heap>,%sp@- 42fba: 4eb9 0004 75fa jsr 475fa <_Heap_Initialize>
RTEMS_Malloc_Heap,
heap_begin,
heap_size,
CPU_HEAP_ALIGNMENT
);
if ( status == 0 ) {
42fc0: 4fef 0010 lea %sp@(16),%sp 42fc4: 4a80 tstl %d0
42fc6: 675a beqs 43022 <RTEMS_Malloc_Initialize+0xc6>
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
}
}
MSBUMP( space_available, _Protected_heap_Get_size(RTEMS_Malloc_Heap) );
42fc8: 2f39 0005 e340 movel 5e340 <RTEMS_Malloc_Heap>,%sp@- 42fce: 2439 0005 fb4c movel 5fb4c <rtems_malloc_statistics>,%d2 42fd4: 4eb9 0004 813c jsr 4813c <_Protected_heap_Get_size> 42fda: 588f addql #4,%sp 42fdc: d082 addl %d2,%d0
}
42fde: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4
if ( status == 0 ) {
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
}
}
MSBUMP( space_available, _Protected_heap_Get_size(RTEMS_Malloc_Heap) );
42fe4: 23c0 0005 fb4c movel %d0,5fb4c <rtems_malloc_statistics>
}
42fea: 4e5e unlk %fp 42fec: 4e75 rts
if (
!rtems_unified_work_area
&& rtems_configuration_get_do_zero_of_workspace()
) {
memset( heap_begin, 0, heap_size );
42fee: 2f03 movel %d3,%sp@- 42ff0: 42a7 clrl %sp@- 42ff2: 2f02 movel %d2,%sp@- 42ff4: 4eb9 0004 f228 jsr 4f228 <memset>
* Unfortunately we cannot use assert if this fails because if this
* has failed we do not have a heap and if we do not have a heap
* STDIO cannot work because there will be no buffers.
*/
if ( !rtems_unified_work_area ) {
42ffa: 4fef 000c lea %sp@(12),%sp 42ffe: 4a39 0005 eac4 tstb 5eac4 <rtems_unified_work_area>
43004: 66c2 bnes 42fc8 <RTEMS_Malloc_Initialize+0x6c> <== NEVER TAKEN
43006: 4878 0004 pea 4 <CONTEXT_ARG> 4300a: 2f03 movel %d3,%sp@- 4300c: 2f02 movel %d2,%sp@- 4300e: 2f39 0005 e340 movel 5e340 <RTEMS_Malloc_Heap>,%sp@- 43014: 4eb9 0004 75fa jsr 475fa <_Heap_Initialize>
RTEMS_Malloc_Heap,
heap_begin,
heap_size,
CPU_HEAP_ALIGNMENT
);
if ( status == 0 ) {
4301a: 4fef 0010 lea %sp@(16),%sp 4301e: 4a80 tstl %d0
43020: 66a6 bnes 42fc8 <RTEMS_Malloc_Initialize+0x6c> <== ALWAYS TAKEN
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
43022: 4878 001a pea 1a <OPER2+0x6> 43026: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred>
000425d0 <Stack_check_Dump_threads_usage>:
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
425d0: 70ff moveq #-1,%d0 <== NOT EXECUTED
static rtems_printk_plugin_t print_handler;
void Stack_check_Dump_threads_usage(
Thread_Control *the_thread
)
{
425d2: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 425d6: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 425da: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
425de: b08a cmpl %a2,%d0 <== NOT EXECUTED 425e0: 6700 015e beqw 42740 <Stack_check_Dump_threads_usage+0x170><== NOT EXECUTED
current = 0;
} else
#endif
{
stack = &the_thread->Start.Initial_stack;
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
425e4: 282a 00fe movel %a2@(254),%d4 <== NOT EXECUTED
the_thread = 0;
current = 0;
} else
#endif
{
stack = &the_thread->Start.Initial_stack;
425e8: 47ea 00be lea %a2@(190),%a3 <== NOT EXECUTED
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
425ec: 206a 00c2 moveal %a2@(194),%a0 <== NOT EXECUTED
}
low = Stack_check_usable_stack_start(stack);
size = Stack_check_usable_stack_size(stack);
425f0: 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++)
425f2: 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);
425f4: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
{
stack = &the_thread->Start.Initial_stack;
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
}
low = Stack_check_usable_stack_start(stack);
425fa: 2608 movel %a0,%d3 <== NOT EXECUTED 425fc: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
/*
* start at lower memory and find first word that does not
* match pattern
*/
base += PATTERN_SIZE_WORDS;
42602: 2243 moveal %d3,%a1 <== NOT EXECUTED 42604: 43e9 0010 lea %a1@(16),%a1 <== NOT EXECUTED
for (ebase = base + length; base < ebase; base++)
42608: c082 andl %d2,%d0 <== NOT EXECUTED 4260a: d089 addl %a1,%d0 <== NOT EXECUTED 4260c: b089 cmpl %a1,%d0 <== NOT EXECUTED 4260e: 6300 00ba blsw 426ca <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
if (*base != U32_PATTERN)
42612: 223c a5a5 a5a5 movel #-1515870811,%d1 <== NOT EXECUTED 42618: b291 cmpl %a1@,%d1 <== NOT EXECUTED 4261a: 6600 013e bnew 4275a <Stack_check_Dump_threads_usage+0x18a><== NOT EXECUTED
* Try to print out how much stack was actually used by the task.
*/
static void *print_context;
static rtems_printk_plugin_t print_handler;
void Stack_check_Dump_threads_usage(
4261e: 41e8 0024 lea %a0@(36),%a0 <== NOT EXECUTED
* match pattern
*/
base += PATTERN_SIZE_WORDS;
for (ebase = base + length; base < ebase; base++)
if (*base != U32_PATTERN)
42622: 2208 movel %a0,%d1 <== 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++)
42624: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 42626: 6400 00a2 bccw 426ca <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
if (*base != U32_PATTERN)
4262a: 227c a5a5 a5a5 moveal #-1515870811,%a1 <== NOT EXECUTED 42630: b3d8 cmpal %a0@+,%a1 <== NOT EXECUTED 42632: 67ee beqs 42622 <Stack_check_Dump_threads_usage+0x52><== NOT EXECUTED
low = Stack_check_usable_stack_start(stack);
size = Stack_check_usable_stack_size(stack);
high_water_mark = Stack_check_find_high_water_mark(low, size);
if ( high_water_mark )
42634: 4a81 tstl %d1 <== NOT EXECUTED 42636: 6700 0092 beqw 426ca <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
used = Stack_check_Calculate_used( low, size, high_water_mark );
4263a: d682 addl %d2,%d3 <== NOT EXECUTED 4263c: 9681 subl %d1,%d3 <== NOT EXECUTED
else
used = 0;
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
4263e: 4a8a tstl %a2 <== NOT EXECUTED 42640: 6700 0090 beqw 426d2 <Stack_check_Dump_threads_usage+0x102><== NOT EXECUTED
#endif
{
(*print_handler)(
42644: 486e fffb pea %fp@(-5) <== NOT EXECUTED 42648: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 4264c: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 42650: 2879 0006 222c moveal 6222c <print_handler>,%a4 <== NOT EXECUTED 42656: 4eb9 0004 8afc jsr 48afc <rtems_object_get_name> <== NOT EXECUTED 4265c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4265e: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 42662: 4879 0005 fbec pea 5fbec <IntUartPollCallbacks.6307+0x20> <== NOT EXECUTED 42668: 2f39 0006 2228 movel 62228 <print_context>,%sp@- <== NOT EXECUTED 4266e: 4e94 jsr %a4@ <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
42670: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
#endif
{
(*print_handler)(
42674: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
42678: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4267a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
4267c: 2013 movel %a3@,%d0 <== NOT EXECUTED 4267e: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
42680: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 42684: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42686: 4879 0005 fc07 pea 5fc07 <IntUartPollCallbacks.6307+0x3b> <== NOT EXECUTED 4268c: 2f39 0006 2228 movel 62228 <print_context>,%sp@- <== NOT EXECUTED 42692: 2079 0006 222c moveal 6222c <print_handler>,%a0 <== NOT EXECUTED 42698: 4e90 jsr %a0@ <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
4269a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4269e: 4ab9 0006 2230 tstl 62230 <Stack_check_Initialized> <== NOT EXECUTED 426a4: 677a beqs 42720 <Stack_check_Dump_threads_usage+0x150><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
426a6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 426a8: 4879 0005 fc32 pea 5fc32 <IntUartPollCallbacks.6307+0x66> <== NOT EXECUTED 426ae: 2f39 0006 2228 movel 62228 <print_context>,%sp@- <== NOT EXECUTED 426b4: 2079 0006 222c moveal 6222c <print_handler>,%a0 <== NOT EXECUTED 426ba: 4e90 jsr %a0@ <== NOT EXECUTED 426bc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
426c0: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED 426c6: 4e5e unlk %fp <== NOT EXECUTED 426c8: 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;
426ca: 4283 clrl %d3 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
426cc: 4a8a tstl %a2 <== NOT EXECUTED 426ce: 6600 ff74 bnew 42644 <Stack_check_Dump_threads_usage+0x74><== 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 );
426d2: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 426d6: 4879 0005 fbf9 pea 5fbf9 <IntUartPollCallbacks.6307+0x2d> <== NOT EXECUTED 426dc: 2f39 0006 2228 movel 62228 <print_context>,%sp@- <== NOT EXECUTED 426e2: 2079 0006 222c moveal 6222c <print_handler>,%a0 <== NOT EXECUTED 426e8: 4e90 jsr %a0@ <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
426ea: 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 );
426ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
#endif
(*print_handler)(
426f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 426f4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
426f6: 2013 movel %a3@,%d0 <== NOT EXECUTED 426f8: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
426fa: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 426fe: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42700: 4879 0005 fc07 pea 5fc07 <IntUartPollCallbacks.6307+0x3b> <== NOT EXECUTED 42706: 2f39 0006 2228 movel 62228 <print_context>,%sp@- <== NOT EXECUTED 4270c: 2079 0006 222c moveal 6222c <print_handler>,%a0 <== NOT EXECUTED 42712: 4e90 jsr %a0@ <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
42714: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 42718: 4ab9 0006 2230 tstl 62230 <Stack_check_Initialized> <== NOT EXECUTED 4271e: 6686 bnes 426a6 <Stack_check_Dump_threads_usage+0xd6><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
42720: 4879 0005 fc25 pea 5fc25 <IntUartPollCallbacks.6307+0x59> <== NOT EXECUTED 42726: 2f39 0006 2228 movel 62228 <print_context>,%sp@- <== NOT EXECUTED 4272c: 2079 0006 222c moveal 6222c <print_handler>,%a0 <== NOT EXECUTED 42732: 4e90 jsr %a0@ <== NOT EXECUTED 42734: 508f addql #8,%sp <== NOT EXECUTED
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
}
}
42736: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4273c: 4e5e unlk %fp <== NOT EXECUTED 4273e: 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)
42740: 2079 0006 2a48 moveal 62a48 <Stack_check_Interrupt_stack+0x4>,%a0<== NOT EXECUTED 42746: 4a88 tstl %a0 <== NOT EXECUTED 42748: 6700 ff76 beqw 426c0 <Stack_check_Dump_threads_usage+0xf0><== NOT EXECUTED
return;
stack = &Stack_check_Interrupt_stack;
4274c: 47f9 0006 2a44 lea 62a44 <Stack_check_Interrupt_stack>,%a3 <== NOT EXECUTED
the_thread = 0;
current = 0;
42752: 4284 clrl %d4 <== 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;
42754: 95ca subal %a2,%a2 <== NOT EXECUTED 42756: 6000 fe98 braw 425f0 <Stack_check_Dump_threads_usage+0x20><== NOT EXECUTED
* match pattern
*/
base += PATTERN_SIZE_WORDS;
for (ebase = base + length; base < ebase; base++)
if (*base != U32_PATTERN)
4275a: 2209 movel %a1,%d1 <== NOT EXECUTED 4275c: 6000 fed6 braw 42634 <Stack_check_Dump_threads_usage+0x64><== NOT EXECUTED
00042760 <Stack_check_Initialize>:
/*
* Stack_check_Initialize
*/
void Stack_check_Initialize( void )
{
42760: 4e56 0000 linkw %fp,#0
static uint32_t pattern[ 4 ] = {
0xFEEDF00D, 0x0BAD0D06, /* FEED FOOD to BAD DOG */
0xDEADF00D, 0x600D0D06 /* DEAD FOOD but GOOD DOG */
};
if ( Stack_check_Initialized )
42764: 4ab9 0006 2230 tstl 62230 <Stack_check_Initialized>
4276a: 666a bnes 427d6 <Stack_check_Initialize+0x76>
/*
* 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) {
4276c: 2039 0006 3098 movel 63098 <_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 ];
42772: 223c feed f00d movel #-17960947,%d1 42778: 23c1 0006 2a34 movel %d1,62a34 <Stack_check_Pattern> 4277e: 223c 0bad 0d06 movel #195890438,%d1 42784: 23c1 0006 2a38 movel %d1,62a38 <Stack_check_Pattern+0x4> 4278a: 223c dead f00d movel #-559026163,%d1 42790: 23c1 0006 2a3c movel %d1,62a3c <Stack_check_Pattern+0x8> 42796: 223c 600d 0d06 movel #1611468038,%d1 4279c: 23c1 0006 2a40 movel %d1,62a40 <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) {
427a2: 4a80 tstl %d0
427a4: 6728 beqs 427ce <Stack_check_Initialize+0x6e> <== NEVER TAKEN
427a6: 2239 0006 309c movel 6309c <_Per_CPU_Information+0x4>,%d1
427ac: 6720 beqs 427ce <Stack_check_Initialize+0x6e> <== ALWAYS TAKEN
Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;
Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
427ae: 9280 subl %d0,%d1 <== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
427b0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 427b2: 4878 00a5 pea a5 <DBL_MANT_DIG+0x70> <== NOT EXECUTED
* 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;
427b6: 23c0 0006 2a48 movel %d0,62a48 <Stack_check_Interrupt_stack+0x4><== NOT EXECUTED
Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
427bc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
* 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 -
427be: 23c1 0006 2a44 movel %d1,62a44 <Stack_check_Interrupt_stack><== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
427c4: 4eb9 0005 1e20 jsr 51e20 <memset> <== NOT EXECUTED 427ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
#endif
Stack_check_Initialized = 1;
427ce: 7001 moveq #1,%d0 427d0: 23c0 0006 2230 movel %d0,62230 <Stack_check_Initialized>
}
427d6: 4e5e unlk %fp <== NOT EXECUTED
0004284c <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)
{
4284c: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 42850: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern_area(stack);
char name [32];
printk("BLOWN STACK!!!\n");
42854: 4879 0005 fc38 pea 5fc38 <IntUartPollCallbacks.6307+0x6c> <== NOT EXECUTED 4285a: 47f9 0004 4788 lea 44788 <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)
{
42860: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack; void *pattern_area = Stack_check_Get_pattern_area(stack);
42864: 286a 00c2 moveal %a2@(194),%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)
{
42868: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern_area(stack);
char name [32];
printk("BLOWN STACK!!!\n");
4286c: 4e93 jsr %a3@ <== NOT EXECUTED
printk("task control block: 0x%08" PRIxPTR "\n", running);
4286e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42870: 4879 0005 fc48 pea 5fc48 <IntUartPollCallbacks.6307+0x7c> <== NOT EXECUTED 42876: 4e93 jsr %a3@ <== NOT EXECUTED
printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
42878: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 4287c: 4879 0005 fc65 pea 5fc65 <IntUartPollCallbacks.6307+0x99> <== NOT EXECUTED 42882: 4e93 jsr %a3@ <== NOT EXECUTED
printk(
42884: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 42888: 4879 0005 fc77 pea 5fc77 <IntUartPollCallbacks.6307+0xab> <== NOT EXECUTED 4288e: 4e93 jsr %a3@ <== NOT EXECUTED
"task name: 0x%08" PRIx32 "\n",
running->Object.name.name_u32
);
printk(
42890: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED 42894: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED 42898: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 4289c: 4eb9 0004 8afc jsr 48afc <rtems_object_get_name> <== NOT EXECUTED 428a2: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 428a6: 2e80 movel %d0,%sp@ <== NOT EXECUTED 428a8: 4879 0005 fc8b pea 5fc8b <IntUartPollCallbacks.6307+0xbf> <== NOT EXECUTED 428ae: 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)
428b0: 206a 00c2 moveal %a2@(194),%a0 <== NOT EXECUTED 428b4: 202a 00be movel %a2@(190),%d0 <== NOT EXECUTED
);
printk(
"task name string: %s\n",
rtems_object_get_name(running->Object.id, sizeof(name), name)
);
printk(
428b8: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 428bc: 2f08 movel %a0,%sp@- <== NOT EXECUTED 428be: 2f00 movel %d0,%sp@- <== NOT EXECUTED 428c0: 4879 0005 fca1 pea 5fca1 <IntUartPollCallbacks.6307+0xd5> <== NOT EXECUTED 428c6: 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) {
428c8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 428cc: 4a02 tstb %d2 <== NOT EXECUTED 428ce: 670a beqs 428da <Stack_check_report_blown_task+0x8e><== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal_error_occurred(0x81);
428d0: 4878 0081 pea 81 <DBL_MANT_DIG+0x4c> <== NOT EXECUTED 428d4: 4eb9 0004 9414 jsr 49414 <rtems_fatal_error_occurred> <== NOT EXECUTED
(unsigned long) stack->size,
stack->area,
((char *) stack->area + stack->size)
);
if (!pattern_ok) {
printk(
428da: 486c 0018 pea %a4@(24) <== NOT EXECUTED 428de: 486c 0008 pea %a4@(8) <== NOT EXECUTED 428e2: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 428e6: 4879 0005 fcd2 pea 5fcd2 <IntUartPollCallbacks.6307+0x106> <== NOT EXECUTED 428ec: 4e93 jsr %a3@ <== NOT EXECUTED 428ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal_error_occurred(0x81);
428f2: 4878 0081 pea 81 <DBL_MANT_DIG+0x4c> <== NOT EXECUTED 428f6: 4eb9 0004 9414 jsr 49414 <rtems_fatal_error_occurred> <== NOT EXECUTED
0004c8b0 <TOD_MICROSECONDS_TO_TICKS>:
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4c8b0: 41f9 0006 3d90 lea 63d90 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
4c8b6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (microseconds / rtems_configuration_get_microseconds_per_tick()); }
4c8ba: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c8be: 4e5e unlk %fp <== NOT EXECUTED 4c8c0: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
...
00047ffc <TOD_MILLISECONDS_TO_TICKS>:
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
47ffc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
48000: 2039 0005 f9b0 movel 5f9b0 <Configuration+0xc>,%d0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
48006: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
48008: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 4800e: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
}
48012: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 48016: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED 4801a: 2002 movel %d2,%d0 <== NOT EXECUTED 4801c: 241f movel %sp@+,%d2 <== NOT EXECUTED 4801e: 4e5e unlk %fp <== NOT EXECUTED
...
0004e698 <TOD_TICKS_PER_SECOND_method>:
uint32_t TOD_TICKS_PER_SECOND_method(void)
{
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4e698: 41f9 0005 e3f0 lea 5e3f0 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/config.h>
#include <rtems/score/tod.h>
uint32_t TOD_TICKS_PER_SECOND_method(void)
{
4e69e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4e6a2: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 4e6a8: 4e5e unlk %fp <== NOT EXECUTED 4e6aa: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00046eb0 <_API_Mutex_Unlock>:
#include <rtems/score/apimutex.h>
void _API_Mutex_Unlock(
API_Mutex_Control *the_mutex
)
{
46eb0: 4e56 0000 linkw %fp,#0
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46eb4: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0 46eba: 5280 addql #1,%d0 46ebc: 206e 0008 moveal %fp@(8),%a0 46ec0: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
_CORE_mutex_Surrender(
46ec6: 42a7 clrl %sp@- 46ec8: 2f28 0008 movel %a0@(8),%sp@- 46ecc: 4868 0010 pea %a0@(16) 46ed0: 4eb9 0004 71b8 jsr 471b8 <_CORE_mutex_Surrender>
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46ed6: 4fef 000c lea %sp@(12),%sp
}
46eda: 4e5e unlk %fp
_CORE_mutex_Surrender(
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46edc: 4ef9 0004 86e6 jmp 486e6 <_Thread_Enable_dispatch>
...
00046d8a <_API_extensions_Run_postdriver>:
*
* _API_extensions_Run_postdriver
*/
void _API_extensions_Run_postdriver( void )
{
46d8a: 4e56 0000 linkw %fp,#0 46d8e: 2f0a movel %a2,%sp@-
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _API_extensions_List.first ;
46d90: 2479 0005 fe0e moveal 5fe0e <_API_extensions_List>,%a2 46d96: b5fc 0005 fe12 cmpal #392722,%a2
46d9c: 6710 beqs 46dae <_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)();
46d9e: 206a 0008 moveal %a2@(8),%a0 46da2: 4e90 jsr %a0@
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _API_extensions_List.first ;
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
46da4: 2452 moveal %a2@,%a2
void _API_extensions_Run_postdriver( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _API_extensions_List.first ;
46da6: b5fc 0005 fe12 cmpal #392722,%a2
46dac: 66f0 bnes 46d9e <_API_extensions_Run_postdriver+0x14>
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
if ( the_extension->postdriver_hook )
#endif
(*the_extension->postdriver_hook)();
}
}
46dae: 246e fffc moveal %fp@(-4),%a2
46db2: 4e5e unlk %fp <== NOT EXECUTED
00046db6 <_API_extensions_Run_postswitch>:
*
* _API_extensions_Run_postswitch
*/
void _API_extensions_Run_postswitch( void )
{
46db6: 4e56 0000 linkw %fp,#0 46dba: 2f0a movel %a2,%sp@-
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _API_extensions_List.first ;
46dbc: 2479 0005 fe0e moveal 5fe0e <_API_extensions_List>,%a2 46dc2: b5fc 0005 fe12 cmpal #392722,%a2
46dc8: 6718 beqs 46de2 <_API_extensions_Run_postswitch+0x2c><== NEVER TAKEN
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
46dca: 2f39 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%sp@- 46dd0: 206a 000c moveal %a2@(12),%a0 46dd4: 4e90 jsr %a0@
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _API_extensions_List.first ;
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
46dd6: 2452 moveal %a2@,%a2
void _API_extensions_Run_postswitch( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _API_extensions_List.first ;
46dd8: 588f addql #4,%sp 46dda: b5fc 0005 fe12 cmpal #392722,%a2
46de0: 66e8 bnes 46dca <_API_extensions_Run_postswitch+0x14>
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46de2: 246e fffc moveal %fp@(-4),%a2 46de6: 4e5e unlk %fp
...
00050b00 <_Barrier_Translate_core_barrier_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( the_barrier_status > CORE_BARRIER_STATUS_LAST )
return RTEMS_INTERNAL_ERROR;
#endif
return _Barrier_Translate_core_barrier_return_code_[the_barrier_status];
50b00: 41f9 0006 0fb0 lea 60fb0 <_Barrier_Translate_core_barrier_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Barrier_Translate_core_barrier_return_code (
CORE_barrier_Status the_barrier_status
)
{
50b06: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_barrier_status > CORE_BARRIER_STATUS_LAST )
return RTEMS_INTERNAL_ERROR;
#endif
return _Barrier_Translate_core_barrier_return_code_[the_barrier_status];
}
50b0a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 50b0e: 4e5e unlk %fp <== NOT EXECUTED 50b10: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004938c <_CORE_RWLock_Initialize>:
void _CORE_RWLock_Initialize(
CORE_RWLock_Control *the_rwlock,
CORE_RWLock_Attributes *the_rwlock_attributes
)
{
4938c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49390: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
the_rwlock->number_of_waiting_threads = 0;
*/
the_rwlock->number_of_readers = 0;
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
_Thread_queue_Initialize(
49394: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
CORE_RWLock_Control *the_rwlock,
CORE_RWLock_Attributes *the_rwlock_attributes
)
{
the_rwlock->Attributes = *the_rwlock_attributes;
49398: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
the_rwlock->number_of_waiting_threads = 0;
*/
the_rwlock->number_of_readers = 0;
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
_Thread_queue_Initialize(
4939c: 2f3c 0002 0000 movel #131072,%sp@- <== NOT EXECUTED
CORE_RWLock_Control *the_rwlock,
CORE_RWLock_Attributes *the_rwlock_attributes
)
{
the_rwlock->Attributes = *the_rwlock_attributes;
493a2: 2151 0040 movel %a1@,%a0@(64) <== NOT EXECUTED
the_rwlock->number_of_waiting_threads = 0;
*/
the_rwlock->number_of_readers = 0;
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
_Thread_queue_Initialize(
493a6: 42a7 clrl %sp@- <== NOT EXECUTED
the_rwlock->Attributes = *the_rwlock_attributes;
/*
the_rwlock->number_of_waiting_threads = 0;
*/
the_rwlock->number_of_readers = 0;
493a8: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
493ac: 42a8 0044 clrl %a0@(68) <== NOT EXECUTED
_Thread_queue_Initialize(
493b0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 493b2: 4eb9 0004 b390 jsr 4b390 <_Thread_queue_Initialize> <== NOT EXECUTED 493b8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
&the_rwlock->Wait_queue,
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_RWLOCK,
CORE_RWLOCK_TIMEOUT
);
}
493bc: 4e5e unlk %fp <== NOT EXECUTED
000493c0 <_CORE_RWLock_Obtain_for_reading>:
* If unlocked, then OK to read.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
493c0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_RWLock_API_mp_support_callout api_rwlock_mp_support
)
{
493c6: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 493ca: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 493ce: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 493d2: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 493d6: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED 493da: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED
ISR_Level level; Thread_Control *executing = _Thread_Executing;
493de: 2679 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
* If unlocked, then OK to read.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
493e4: 40c2 movew %sr,%d2 <== NOT EXECUTED 493e6: 8082 orl %d2,%d0 <== NOT EXECUTED 493e8: 46c0 movew %d0,%sr <== NOT EXECUTED
switch ( the_rwlock->current_state ) {
493ea: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 493ee: 661a bnes 4940a <_CORE_RWLock_Obtain_for_reading+0x4a><== NOT EXECUTED
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
493f0: 7001 moveq #1,%d0 <== NOT EXECUTED
the_rwlock->number_of_readers += 1;
493f2: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
*/
_ISR_Disable( level );
switch ( the_rwlock->current_state ) {
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
493f6: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
the_rwlock->number_of_readers += 1; _ISR_Enable( level );
493fa: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
493fc: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49400: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 49406: 4e5e unlk %fp <== NOT EXECUTED 49408: 4e75 rts <== NOT EXECUTED
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
switch ( the_rwlock->current_state ) {
4940a: 7201 moveq #1,%d1 <== NOT EXECUTED 4940c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4940e: 674e beqs 4945e <_CORE_RWLock_Obtain_for_reading+0x9e><== NOT EXECUTED
/*
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
49410: 4a03 tstb %d3 <== NOT EXECUTED 49412: 6612 bnes 49426 <_CORE_RWLock_Obtain_for_reading+0x66><== NOT EXECUTED
_ISR_Enable( level );
49414: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
49416: 7202 moveq #2,%d1 <== NOT EXECUTED 49418: 2741 0034 movel %d1,%a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4941c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 49422: 4e5e unlk %fp <== NOT EXECUTED 49424: 4e75 rts <== NOT EXECUTED 49426: 7001 moveq #1,%d0 <== NOT EXECUTED 49428: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
/*
* We need to wait to enter this critical section
*/
_Thread_queue_Enter_critical_section( &the_rwlock->Wait_queue );
executing->Wait.queue = &the_rwlock->Wait_queue;
4942c: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED
executing->Wait.id = id;
49430: 2745 0020 movel %d5,%a3@(32) <== NOT EXECUTED
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
49434: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
49438: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
_ISR_Enable( level );
4943c: 46c2 movew %d2,%sr <== NOT EXECUTED
_Thread_queue_Enqueue_with_handler(
4943e: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 49442: 223c 0004 95ec movel #300524,%d1 <== NOT EXECUTED 49448: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4944c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
_ISR_Enable( level );
_Thread_queue_Enqueue_with_handler(
49452: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49456: 4e5e unlk %fp <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
_ISR_Enable( level );
_Thread_queue_Enqueue_with_handler(
49458: 4ef9 0004 af4c jmp 4af4c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
return;
case CORE_RWLOCK_LOCKED_FOR_READING: {
Thread_Control *waiter;
waiter = _Thread_queue_First( &the_rwlock->Wait_queue );
4945e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49460: 4eb9 0004 b2ec jsr 4b2ec <_Thread_queue_First> <== NOT EXECUTED
if ( !waiter ) {
49466: 588f addql #4,%sp <== NOT EXECUTED 49468: 4a80 tstl %d0 <== NOT EXECUTED 4946a: 66a4 bnes 49410 <_CORE_RWLock_Obtain_for_reading+0x50><== NOT EXECUTED
the_rwlock->number_of_readers += 1;
4946c: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
_ISR_Enable( level );
49470: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
49472: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49476: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4947c: 4e5e unlk %fp <== NOT EXECUTED
00049480 <_CORE_RWLock_Obtain_for_writing>:
* Otherwise, we have to block.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
49480: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_RWLock_API_mp_support_callout api_rwlock_mp_support
)
{
49486: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4948a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4948e: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 49492: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 49496: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
ISR_Level level; Thread_Control *executing = _Thread_Executing;
4949a: 2279 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_RWLock_API_mp_support_callout api_rwlock_mp_support
)
{
494a0: 142e 0013 moveb %fp@(19),%d2 <== NOT EXECUTED
* Otherwise, we have to block.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
494a4: 40c1 movew %sr,%d1 <== NOT EXECUTED 494a6: 8081 orl %d1,%d0 <== NOT EXECUTED 494a8: 46c0 movew %d0,%sr <== NOT EXECUTED
switch ( the_rwlock->current_state ) {
494aa: 4aa8 0044 tstl %a0@(68) <== NOT EXECUTED 494ae: 6614 bnes 494c4 <_CORE_RWLock_Obtain_for_writing+0x44><== NOT EXECUTED
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;
494b0: 7002 moveq #2,%d0 <== NOT EXECUTED 494b2: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
_ISR_Enable( level );
494b6: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
494b8: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
494bc: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 494c0: 4e5e unlk %fp <== NOT EXECUTED 494c2: 4e75 rts <== NOT EXECUTED
/*
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
494c4: 4a02 tstb %d2 <== NOT EXECUTED 494c6: 6610 bnes 494d8 <_CORE_RWLock_Obtain_for_writing+0x58><== NOT EXECUTED
_ISR_Enable( level );
494c8: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
494ca: 7002 moveq #2,%d0 <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
494cc: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
_ISR_Enable( level );
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
494d0: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
494d4: 4e5e unlk %fp <== NOT EXECUTED 494d6: 4e75 rts <== NOT EXECUTED 494d8: 7001 moveq #1,%d0 <== NOT EXECUTED 494da: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
/*
* We need to wait to enter this critical section
*/
_Thread_queue_Enter_critical_section( &the_rwlock->Wait_queue );
executing->Wait.queue = &the_rwlock->Wait_queue;
494de: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
494e2: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
494e6: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
494ea: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
494ee: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue_with_handler(
494f0: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 494f4: 203c 0004 95ec movel #300524,%d0 <== NOT EXECUTED 494fa: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
494fe: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
_ISR_Enable( level );
_Thread_queue_Enqueue_with_handler(
49502: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49506: 4e5e unlk %fp <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
_ISR_Enable( level );
_Thread_queue_Enqueue_with_handler(
49508: 4ef9 0004 af4c jmp 4af4c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
...
00049510 <_CORE_RWLock_Release>:
* Otherwise, we have to block.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
49510: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
CORE_RWLock_Status _CORE_RWLock_Release(
CORE_RWLock_Control *the_rwlock
)
{
49516: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level; Thread_Control *executing = _Thread_Executing;
4951a: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
CORE_RWLock_Status _CORE_RWLock_Release(
CORE_RWLock_Control *the_rwlock
)
{
49520: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 49524: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
* Otherwise, we have to block.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
49528: 40c1 movew %sr,%d1 <== NOT EXECUTED 4952a: 8081 orl %d1,%d0 <== NOT EXECUTED 4952c: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){
4952e: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 49532: 6700 0090 beqw 495c4 <_CORE_RWLock_Release+0xb4> <== NOT EXECUTED
_ISR_Enable( level );
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
return CORE_RWLOCK_SUCCESSFUL;
}
if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
49536: 7401 moveq #1,%d2 <== NOT EXECUTED 49538: b480 cmpl %d0,%d2 <== NOT EXECUTED 4953a: 676e beqs 495aa <_CORE_RWLock_Release+0x9a> <== NOT EXECUTED
return CORE_RWLOCK_SUCCESSFUL;
}
}
/* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
4953c: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
/*
* Implicitly transition to "unlocked" and find another thread interested
* in obtaining this rwlock.
*/
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
49540: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
49544: 46c1 movew %d1,%sr <== NOT EXECUTED
next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );
49546: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49548: 4eb9 0004 addc jsr 4addc <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( next ) {
4954e: 588f addql #4,%sp <== NOT EXECUTED 49550: 4a80 tstl %d0 <== NOT EXECUTED 49552: 674a beqs 4959e <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED
if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
49554: 7201 moveq #1,%d1 <== NOT EXECUTED 49556: 2040 moveal %d0,%a0 <== NOT EXECUTED 49558: b2a8 0030 cmpl %a0@(48),%d1 <== NOT EXECUTED 4955c: 677c beqs 495da <_CORE_RWLock_Release+0xca> <== NOT EXECUTED
/*
* Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING
*/
the_rwlock->number_of_readers += 1;
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
4955e: 7201 moveq #1,%d1 <== NOT EXECUTED
}
/*
* Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING
*/
the_rwlock->number_of_readers += 1;
49560: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED 49564: 47f9 0004 b2ec lea 4b2ec <_Thread_queue_First>,%a3 <== NOT EXECUTED
next = _Thread_queue_First( &the_rwlock->Wait_queue );
if ( !next ||
next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
return CORE_RWLOCK_SUCCESSFUL;
the_rwlock->number_of_readers += 1;
_Thread_queue_Extract( &the_rwlock->Wait_queue, next );
4956a: 49f9 0004 b19c lea 4b19c <_Thread_queue_Extract>,%a4 <== NOT EXECUTED
/*
* Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING
*/
the_rwlock->number_of_readers += 1;
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
49570: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED
/*
* Now see if more readers can be let go.
*/
while ( 1 ) {
next = _Thread_queue_First( &the_rwlock->Wait_queue );
49574: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49576: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !next ||
49578: 588f addql #4,%sp <== NOT EXECUTED 4957a: 4a80 tstl %d0 <== NOT EXECUTED 4957c: 6720 beqs 4959e <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED 4957e: 7401 moveq #1,%d2 <== NOT EXECUTED 49580: 2040 moveal %d0,%a0 <== NOT EXECUTED 49582: b4a8 0030 cmpl %a0@(48),%d2 <== NOT EXECUTED 49586: 6716 beqs 4959e <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED
next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
return CORE_RWLOCK_SUCCESSFUL;
the_rwlock->number_of_readers += 1;
49588: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
_Thread_queue_Extract( &the_rwlock->Wait_queue, next );
4958c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4958e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49590: 4e94 jsr %a4@ <== NOT EXECUTED
}
49592: 508f addql #8,%sp <== NOT EXECUTED
/*
* Now see if more readers can be let go.
*/
while ( 1 ) {
next = _Thread_queue_First( &the_rwlock->Wait_queue );
49594: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49596: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !next ||
49598: 588f addql #4,%sp <== NOT EXECUTED 4959a: 4a80 tstl %d0 <== NOT EXECUTED 4959c: 66e0 bnes 4957e <_CORE_RWLock_Release+0x6e> <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
4959e: 4280 clrl %d0 <== NOT EXECUTED 495a0: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 495a6: 4e5e unlk %fp <== NOT EXECUTED 495a8: 4e75 rts <== NOT EXECUTED
_ISR_Enable( level );
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
return CORE_RWLOCK_SUCCESSFUL;
}
if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
the_rwlock->number_of_readers -= 1;
495aa: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 495ae: 5380 subql #1,%d0 <== NOT EXECUTED 495b0: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
if ( the_rwlock->number_of_readers != 0 ) {
495b4: 6786 beqs 4953c <_CORE_RWLock_Release+0x2c> <== NOT EXECUTED
/* must be unlocked again */
_ISR_Enable( level );
495b6: 46c1 movew %d1,%sr <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
495b8: 4280 clrl %d0 <== NOT EXECUTED 495ba: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 495c0: 4e5e unlk %fp <== NOT EXECUTED 495c2: 4e75 rts <== NOT EXECUTED
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){
_ISR_Enable( level );
495c4: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
495c6: 103c 0002 moveb #2,%d0 <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
495ca: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
*/
_ISR_Disable( level );
if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){
_ISR_Enable( level );
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
495d0: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
495d4: 4280 clrl %d0 <== NOT EXECUTED 495d6: 4e5e unlk %fp <== NOT EXECUTED 495d8: 4e75 rts <== NOT EXECUTED
next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );
if ( next ) {
if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;
495da: 7002 moveq #2,%d0 <== NOT EXECUTED 495dc: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
495e0: 4280 clrl %d0 <== NOT EXECUTED 495e2: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 495e8: 4e5e unlk %fp <== NOT EXECUTED
000495ec <_CORE_RWLock_Timeout>:
void _CORE_RWLock_Timeout(
Objects_Id id,
void *ignored
)
{
495ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
495f0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 495f4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 495f8: 4eb9 0004 aa20 jsr 4aa20 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
495fe: 508f addql #8,%sp <== NOT EXECUTED 49600: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49604: 6618 bnes 4961e <_CORE_RWLock_Timeout+0x32> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_queue_Process_timeout( the_thread );
49606: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49608: 4eb9 0004 b428 jsr 4b428 <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4960e: 588f addql #4,%sp <== NOT EXECUTED 49610: 2039 0006 2b00 movel 62b00 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 49616: 5380 subql #1,%d0 <== NOT EXECUTED 49618: 23c0 0006 2b00 movel %d0,62b00 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
4961e: 4e5e unlk %fp <== NOT EXECUTED
...
0004d75c <_CORE_barrier_Release>:
#else
Objects_Id id __attribute__((unused)),
CORE_barrier_API_mp_support_callout api_barrier_mp_support __attribute__((unused))
#endif
)
{
4d75c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4d760: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4d764: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4d768: 47f9 0004 9dc0 lea 49dc0 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t count;
count = 0;
4d76e: 4282 clrl %d2 <== NOT EXECUTED
while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) {
4d770: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d772: 4e93 jsr %a3@ <== NOT EXECUTED 4d774: 588f addql #4,%sp <== NOT EXECUTED 4d776: 4a80 tstl %d0 <== NOT EXECUTED 4d778: 670c beqs 4d786 <_CORE_barrier_Release+0x2a> <== NOT EXECUTED 4d77a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_barrier_mp_support) ( the_thread, id );
#endif
count++;
4d77c: 5282 addql #1,%d2 <== NOT EXECUTED
{
Thread_Control *the_thread;
uint32_t count;
count = 0;
while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) {
4d77e: 4e93 jsr %a3@ <== NOT EXECUTED 4d780: 588f addql #4,%sp <== NOT EXECUTED 4d782: 4a80 tstl %d0 <== NOT EXECUTED 4d784: 66f4 bnes 4d77a <_CORE_barrier_Release+0x1e> <== NOT EXECUTED
#endif
count++;
}
the_barrier->number_of_waiting_threads = 0;
return count;
}
4d786: 2002 movel %d2,%d0 <== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_barrier_mp_support) ( the_thread, id );
#endif
count++;
}
the_barrier->number_of_waiting_threads = 0;
4d788: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
return count; }
4d78c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4d792: 4e5e unlk %fp <== NOT EXECUTED
...
00048264 <_CORE_barrier_Wait>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
48264: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_barrier_API_mp_support_callout api_barrier_mp_support
)
{
4826a: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
4826e: 2279 0006 19d0 moveal 619d0 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_barrier_API_mp_support_callout api_barrier_mp_support
)
{
48274: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 48278: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
4827c: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_barrier_API_mp_support_callout api_barrier_mp_support
)
{
48280: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 48284: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 48288: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
4828c: 40c1 movew %sr,%d1 <== NOT EXECUTED 4828e: 8081 orl %d1,%d0 <== NOT EXECUTED 48290: 46c0 movew %d0,%sr <== NOT EXECUTED
the_barrier->number_of_waiting_threads++;
48292: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 48296: 5280 addql #1,%d0 <== NOT EXECUTED 48298: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
4829c: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED 482a0: 6606 bnes 482a8 <_CORE_barrier_Wait+0x44> <== NOT EXECUTED
if ( the_barrier->number_of_waiting_threads ==
482a2: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED 482a6: 672e beqs 482d6 <_CORE_barrier_Wait+0x72> <== NOT EXECUTED
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;
482a8: 7001 moveq #1,%d0 <== NOT EXECUTED 482aa: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
return;
}
}
_Thread_queue_Enter_critical_section( &the_barrier->Wait_queue );
executing->Wait.queue = &the_barrier->Wait_queue;
482ae: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
482b2: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
482b6: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
482b8: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 482bc: 203c 0004 a2f8 movel #303864,%d0 <== NOT EXECUTED 482c2: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
482c6: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
_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 );
482ca: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
482ce: 4e5e unlk %fp <== NOT EXECUTED
_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 );
482d0: 4ef9 0004 9f30 jmp 49f30 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_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;
482d6: 7001 moveq #1,%d0 <== NOT EXECUTED 482d8: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
482dc: 46c1 movew %d1,%sr <== NOT EXECUTED
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
482de: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED 482e2: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED
executing->Wait.queue = &the_barrier->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
}
482e6: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
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 );
482ea: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
executing->Wait.queue = &the_barrier->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
}
482ee: 4e5e unlk %fp <== NOT EXECUTED
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 );
482f0: 4ef9 0004 d75c jmp 4d75c <_CORE_barrier_Release> <== NOT EXECUTED
...
00059d54 <_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
)
{
59d54: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 59d58: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 59d5c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 59d60: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 59d64: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 59d68: 2a2e 001c movel %fp@(28),%d5 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t number_broadcasted;
Thread_Wait_information *waitp;
if ( size > the_message_queue->maximum_message_size ) {
59d6c: b4ab 004c cmpl %a3@(76),%d2 <== NOT EXECUTED 59d70: 6262 bhis 59dd4 <_CORE_message_queue_Broadcast+0x80><== NOT EXECUTED
* 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 ) {
59d72: 4aab 0048 tstl %a3@(72) <== NOT EXECUTED 59d76: 664c bnes 59dc4 <_CORE_message_queue_Broadcast+0x70><== NOT EXECUTED
/* * There must be no pending messages if there is a thread waiting to * receive a message. */ number_broadcasted = 0; while ((the_thread =
59d78: 2f0b movel %a3,%sp@- <== NOT EXECUTED 59d7a: 49f9 0005 c660 lea 5c660 <_Thread_queue_Dequeue>,%a4 <== NOT EXECUTED
* 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 ) {
59d80: 4283 clrl %d3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
59d82: 4bf9 0006 2bf4 lea 62bf4 <memcpy>,%a5 <== NOT EXECUTED
/* * There must be no pending messages if there is a thread waiting to * receive a message. */ number_broadcasted = 0; while ((the_thread =
59d88: 4e94 jsr %a4@ <== NOT EXECUTED 59d8a: 588f addql #4,%sp <== NOT EXECUTED 59d8c: 2440 moveal %d0,%a2 <== NOT EXECUTED 59d8e: 4a80 tstl %d0 <== NOT EXECUTED 59d90: 6722 beqs 59db4 <_CORE_message_queue_Broadcast+0x60><== NOT EXECUTED 59d92: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {
waitp = &the_thread->Wait;
number_broadcasted += 1;
59d94: 5283 addql #1,%d3 <== NOT EXECUTED 59d96: 2f04 movel %d4,%sp@- <== NOT EXECUTED 59d98: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 59d9c: 4e95 jsr %a5@ <== NOT EXECUTED
buffer,
waitp->return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
59d9e: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 59da2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 59da6: 2082 movel %d2,%a0@ <== NOT EXECUTED
/* * There must be no pending messages if there is a thread waiting to * receive a message. */ number_broadcasted = 0; while ((the_thread =
59da8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 59daa: 4e94 jsr %a4@ <== NOT EXECUTED 59dac: 588f addql #4,%sp <== NOT EXECUTED 59dae: 2440 moveal %d0,%a2 <== NOT EXECUTED 59db0: 4a80 tstl %d0 <== NOT EXECUTED 59db2: 66de bnes 59d92 <_CORE_message_queue_Broadcast+0x3e><== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_message_queue_mp_support) ( the_thread, id );
#endif
}
*count = number_broadcasted;
59db4: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59db6: 4280 clrl %d0 <== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_message_queue_mp_support) ( the_thread, id );
#endif
}
*count = number_broadcasted;
59db8: 2083 movel %d3,%a0@ <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; }
59dba: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 59dc0: 4e5e unlk %fp <== NOT EXECUTED 59dc2: 4e75 rts <== NOT EXECUTED
* 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;
59dc4: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59dc6: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59dc8: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
* 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;
59dce: 4290 clrl %a0@ <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59dd0: 4e5e unlk %fp <== NOT EXECUTED 59dd2: 4e75 rts <== NOT EXECUTED
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;
59dd4: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59dd6: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 59ddc: 4e5e unlk %fp <== NOT EXECUTED
0004e508 <_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
)
{
4e508: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e50c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
4e50e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4e512: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
void _CORE_message_queue_Close(
CORE_message_queue_Control *the_message_queue,
Thread_queue_Flush_callout remote_extract_callout,
uint32_t status
)
{
4e516: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
4e51a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e51c: 4eb9 0005 0798 jsr 50798 <_Thread_queue_Flush> <== NOT EXECUTED
* 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 )
4e522: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4e526: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED 4e52a: 6612 bnes 4e53e <_CORE_message_queue_Close+0x36> <== NOT EXECUTED
(void) _CORE_message_queue_Flush_support( the_message_queue );
(void) _Workspace_Free( the_message_queue->message_buffers );
4e52c: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED
}
4e532: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e536: 4e5e unlk %fp <== NOT EXECUTED
*/
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 );
4e538: 4ef9 0005 15b6 jmp 515b6 <_Workspace_Free> <== NOT EXECUTED
* 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 );
4e53e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e540: 4eb9 0004 e55c jsr 4e55c <_CORE_message_queue_Flush_support><== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
4e546: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED
* 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 );
4e54c: 588f addql #4,%sp <== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
}
4e54e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e552: 4e5e unlk %fp <== NOT EXECUTED
*/
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 );
4e554: 4ef9 0005 15b6 jmp 515b6 <_Workspace_Free> <== NOT EXECUTED
...
00059e34 <_CORE_message_queue_Flush>:
*/
uint32_t _CORE_message_queue_Flush(
CORE_message_queue_Control *the_message_queue
)
{
59e34: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 59e38: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( the_message_queue->number_of_pending_messages != 0 )
59e3c: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED 59e40: 6606 bnes 59e48 <_CORE_message_queue_Flush+0x14> <== NOT EXECUTED
return _CORE_message_queue_Flush_support( the_message_queue );
else
return 0;
}
59e42: 4280 clrl %d0 <== NOT EXECUTED 59e44: 4e5e unlk %fp <== NOT EXECUTED 59e46: 4e75 rts <== NOT EXECUTED 59e48: 4e5e unlk %fp <== NOT EXECUTED
uint32_t _CORE_message_queue_Flush(
CORE_message_queue_Control *the_message_queue
)
{
if ( the_message_queue->number_of_pending_messages != 0 )
return _CORE_message_queue_Flush_support( the_message_queue );
59e4a: 4ef9 0005 9e50 jmp 59e50 <_CORE_message_queue_Flush_support><== NOT EXECUTED
0004e55c <_CORE_message_queue_Flush_support>:
*
* For now, though, we are very happy to have a small routine with
* fixed execution time that only deals with pending messages.
*/
_ISR_Disable( level );
4e55c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
uint32_t _CORE_message_queue_Flush_support(
CORE_message_queue_Control *the_message_queue
)
{
4e562: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4e566: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4e56a: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
*
* For now, though, we are very happy to have a small routine with
* fixed execution time that only deals with pending messages.
*/
_ISR_Disable( level );
4e56e: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e570: 8081 orl %d1,%d0 <== NOT EXECUTED 4e572: 46c0 movew %d0,%sr <== NOT EXECUTED
inactive_first = the_message_queue->Inactive_messages.first;
message_queue_first = the_message_queue->Pending_messages.first;
4e574: 2668 0050 moveal %a0@(80),%a3 <== NOT EXECUTED
the_message_queue->Inactive_messages.first = message_queue_first;
message_queue_last->next = inactive_first;
inactive_first->previous = message_queue_last;
message_queue_first->previous =
_Chain_Head( &the_message_queue->Inactive_messages );
4e578: 49e8 0068 lea %a0@(104),%a4 <== NOT EXECUTED
* For now, though, we are very happy to have a small routine with
* fixed execution time that only deals with pending messages.
*/
_ISR_Disable( level );
inactive_first = the_message_queue->Inactive_messages.first;
4e57c: 2468 0068 moveal %a0@(104),%a2 <== NOT EXECUTED
message_queue_first = the_message_queue->Pending_messages.first;
message_queue_last = the_message_queue->Pending_messages.last;
4e580: 2268 0058 moveal %a0@(88),%a1 <== NOT EXECUTED
message_queue_first->previous =
_Chain_Head( &the_message_queue->Inactive_messages );
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
count = the_message_queue->number_of_pending_messages;
4e584: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
_ISR_Disable( level );
inactive_first = the_message_queue->Inactive_messages.first;
message_queue_first = the_message_queue->Pending_messages.first;
message_queue_last = the_message_queue->Pending_messages.last;
the_message_queue->Inactive_messages.first = message_queue_first;
4e588: 214b 0068 movel %a3,%a0@(104) <== NOT EXECUTED
message_queue_last->next = inactive_first;
inactive_first->previous = message_queue_last;
4e58c: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
inactive_first = the_message_queue->Inactive_messages.first;
message_queue_first = the_message_queue->Pending_messages.first;
message_queue_last = the_message_queue->Pending_messages.last;
the_message_queue->Inactive_messages.first = message_queue_first;
message_queue_last->next = inactive_first;
4e590: 228a movel %a2,%a1@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4e592: 43e8 0054 lea %a0@(84),%a1 <== NOT EXECUTED
inactive_first->previous = message_queue_last;
message_queue_first->previous =
_Chain_Head( &the_message_queue->Inactive_messages );
4e596: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
4e59a: 49e8 0050 lea %a0@(80),%a4 <== NOT EXECUTED 4e59e: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED 4e5a2: 214c 0058 movel %a4,%a0@(88) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
4e5a6: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED
count = the_message_queue->number_of_pending_messages;
the_message_queue->number_of_pending_messages = 0;
4e5aa: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
4e5ae: 46c1 movew %d1,%sr <== NOT EXECUTED
return count; }
4e5b0: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED 4e5b4: 4e5e unlk %fp <== NOT EXECUTED
00050170 <_CORE_message_queue_Initialize>:
/*
* Round size up to multiple of a pointer for chain init and
* check for overflow on adding overhead to each message.
*/
allocated_message_size = maximum_message_size;
if (allocated_message_size & (sizeof(uint32_t) - 1)) {
50170: 7203 moveq #3,%d1 <== NOT EXECUTED
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
)
{
50172: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 50176: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED 5017a: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 5017e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 50182: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
/*
* Round size up to multiple of a pointer for chain init and
* check for overflow on adding overhead to each message.
*/
allocated_message_size = maximum_message_size;
if (allocated_message_size & (sizeof(uint32_t) - 1)) {
50186: c280 andl %d0,%d1 <== NOT EXECUTED
)
{
size_t message_buffering_required;
size_t allocated_message_size;
the_message_queue->maximum_pending_messages = maximum_pending_messages;
50188: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED
the_message_queue->number_of_pending_messages = 0;
5018c: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
the_message_queue->maximum_message_size = maximum_message_size;
50190: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
50194: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
50198: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED
/*
* Round size up to multiple of a pointer for chain init and
* check for overflow on adding overhead to each message.
*/
allocated_message_size = maximum_message_size;
if (allocated_message_size & (sizeof(uint32_t) - 1)) {
5019c: 4a81 tstl %d1 <== NOT EXECUTED 5019e: 6718 beqs 501b8 <_CORE_message_queue_Initialize+0x48><== NOT EXECUTED
allocated_message_size += sizeof(uint32_t);
501a0: 2200 movel %d0,%d1 <== NOT EXECUTED 501a2: 5881 addql #4,%d1 <== NOT EXECUTED
allocated_message_size &= ~(sizeof(uint32_t) - 1);
501a4: 76fc moveq #-4,%d3 <== NOT EXECUTED 501a6: c283 andl %d3,%d1 <== NOT EXECUTED
}
if (allocated_message_size < maximum_message_size)
501a8: b280 cmpl %d0,%d1 <== NOT EXECUTED 501aa: 640e bccs 501ba <_CORE_message_queue_Initialize+0x4a><== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
501ac: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
return false;
501b2: 4200 clrb %d0 <== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
501b4: 4e5e unlk %fp <== NOT EXECUTED 501b6: 4e75 rts <== NOT EXECUTED
/*
* Round size up to multiple of a pointer for chain init and
* check for overflow on adding overhead to each message.
*/
allocated_message_size = maximum_message_size;
if (allocated_message_size & (sizeof(uint32_t) - 1)) {
501b8: 2200 movel %d0,%d1 <== NOT EXECUTED
/*
* Calculate how much total memory is required for message buffering and
* check for overflow on the multiplication.
*/
message_buffering_required = (size_t) maximum_pending_messages *
(allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
501ba: 2601 movel %d1,%d3 <== NOT EXECUTED 501bc: 0683 0000 0014 addil #20,%d3 <== NOT EXECUTED
/*
* Calculate how much total memory is required for message buffering and
* check for overflow on the multiplication.
*/
message_buffering_required = (size_t) maximum_pending_messages *
501c2: 2003 movel %d3,%d0 <== NOT EXECUTED 501c4: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
(allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
if (message_buffering_required < allocated_message_size)
501c8: b280 cmpl %d0,%d1 <== NOT EXECUTED 501ca: 62e0 bhis 501ac <_CORE_message_queue_Initialize+0x3c><== NOT EXECUTED
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
_Workspace_Allocate( message_buffering_required );
501cc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 501ce: 4eb9 0005 3166 jsr 53166 <_Workspace_Allocate> <== NOT EXECUTED
if (the_message_queue->message_buffers == 0)
501d4: 588f addql #4,%sp <== NOT EXECUTED
return false;
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
501d6: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
501da: 67d0 beqs 501ac <_CORE_message_queue_Initialize+0x3c><== NOT EXECUTED
/*
* Initialize the pool of inactive messages, pending messages,
* and set of waiting threads.
*/
_Chain_Initialize (
501dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 501de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 501e0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 501e2: 486a 0068 pea %a2@(104) <== NOT EXECUTED 501e6: 4eb9 0005 5a08 jsr 55a08 <_Chain_Initialize> <== NOT EXECUTED
allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
);
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
_Thread_queue_Initialize(
501ec: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED 501f0: 7001 moveq #1,%d0 <== NOT EXECUTED 501f2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 501f6: b090 cmpl %a0@,%d0 <== NOT EXECUTED 501f8: 57c0 seq %d0 <== NOT EXECUTED 501fa: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b> <== NOT EXECUTED 501fe: 49c0 extbl %d0 <== NOT EXECUTED 50200: 4480 negl %d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
50202: 41ea 0054 lea %a2@(84),%a0 <== NOT EXECUTED 50206: 2f00 movel %d0,%sp@- <== NOT EXECUTED 50208: 2548 0050 movel %a0,%a2@(80) <== NOT EXECUTED
the_message_queue->message_buffers,
(size_t) maximum_pending_messages,
allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
);
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
5020c: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
50210: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED 50214: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED
_Thread_queue_Initialize(
50218: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5021a: 4eb9 0005 24a4 jsr 524a4 <_Thread_queue_Initialize> <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
50220: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
50224: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
5022a: 7001 moveq #1,%d0 <== NOT EXECUTED
}
5022c: 4e5e unlk %fp <== NOT EXECUTED
00055a6c <_CORE_message_queue_Insert_message>:
void _CORE_message_queue_Insert_message(
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message,
CORE_message_queue_Submit_types submit_type
)
{
55a6c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 55a70: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 55a74: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 55a78: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 55a7c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 55a80: 2340 0008 movel %d0,%a1@(8) <== NOT EXECUTED
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
else
_CORE_message_queue_Prepend_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
#else
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) {
55a84: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 55a8a: 677a beqs 55b06 <_CORE_message_queue_Insert_message+0x9a><== NOT EXECUTED
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
55a8c: 0c80 8000 0000 cmpil #-2147483648,%d0 <== NOT EXECUTED 55a92: 6700 00a8 beqw 55b3c <_CORE_message_queue_Insert_message+0xd0><== NOT EXECUTED 55a96: 2208 movel %a0,%d1 <== NOT EXECUTED 55a98: 0681 0000 0054 addil #84,%d1 <== NOT EXECUTED
Chain_Control *the_header;
int the_priority;
the_priority = _CORE_message_queue_Get_message_priority(the_message);
the_header = &the_message_queue->Pending_messages;
the_node = the_header->first;
55a9e: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED
while ( !_Chain_Is_tail( the_header, the_node ) ) {
55aa2: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 55aa4: 670c beqs 55ab2 <_CORE_message_queue_Insert_message+0x46><== NOT EXECUTED
this_message = (CORE_message_queue_Buffer_control *) the_node;
this_priority = _CORE_message_queue_Get_message_priority(this_message);
if ( this_priority <= the_priority ) {
55aa6: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED 55aaa: 6d06 blts 55ab2 <_CORE_message_queue_Insert_message+0x46><== NOT EXECUTED
the_node = the_node->next;
55aac: 2452 moveal %a2@,%a2 <== NOT EXECUTED
int the_priority;
the_priority = _CORE_message_queue_Get_message_priority(the_message);
the_header = &the_message_queue->Pending_messages;
the_node = the_header->first;
while ( !_Chain_Is_tail( the_header, the_node ) ) {
55aae: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 55ab0: 66f4 bnes 55aa6 <_CORE_message_queue_Insert_message+0x3a><== NOT EXECUTED
the_node = the_node->next;
continue;
}
break;
}
_ISR_Disable( level );
55ab2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55ab8: 40c1 movew %sr,%d1 <== NOT EXECUTED 55aba: 8081 orl %d1,%d0 <== NOT EXECUTED 55abc: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55abe: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55ac2: 2400 movel %d0,%d2 <== NOT EXECUTED 55ac4: 5282 addql #1,%d2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55ac6: 4a80 tstl %d0 <== NOT EXECUTED 55ac8: 57c0 seq %d0 <== NOT EXECUTED
break;
}
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
_Chain_Insert_unprotected( the_node->previous, &the_message->Node );
55aca: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55ace: 4480 negl %d0 <== NOT EXECUTED
}
break;
}
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
55ad0: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
55ad4: 2652 moveal %a2@,%a3 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
55ad6: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
before_node = after_node->next; after_node->next = the_node;
55ada: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->next = before_node; before_node->previous = the_node;
55adc: 2749 0004 movel %a1,%a3@(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;
55ae0: 228b movel %a3,%a1@ <== NOT EXECUTED
_Chain_Insert_unprotected( the_node->previous, &the_message->Node );
_ISR_Enable( level );
55ae2: 46c1 movew %d1,%sr <== NOT EXECUTED
/*
* According to POSIX, does this happen before or after the message
* is actually enqueued. It is logical to think afterwards, because
* the message is actually in the queue at this point.
*/
if ( notify && the_message_queue->notify_handler )
55ae4: 4a00 tstb %d0 <== NOT EXECUTED 55ae6: 6716 beqs 55afe <_CORE_message_queue_Insert_message+0x92><== NOT EXECUTED 55ae8: 2268 0060 moveal %a0@(96),%a1 <== NOT EXECUTED 55aec: 4a89 tstl %a1 <== NOT EXECUTED 55aee: 670e beqs 55afe <_CORE_message_queue_Insert_message+0x92><== NOT EXECUTED
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
55af0: 2d68 0064 0008 movel %a0@(100),%fp@(8) <== NOT EXECUTED
#endif }
55af6: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 55afa: 4e5e unlk %fp <== NOT EXECUTED
* According to POSIX, does this happen before or after the message
* is actually enqueued. It is logical to think afterwards, because
* the message is actually in the queue at this point.
*/
if ( notify && the_message_queue->notify_handler )
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
55afc: 4ed1 jmp %a1@ <== NOT EXECUTED
#endif }
55afe: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 55b02: 4e5e unlk %fp <== NOT EXECUTED 55b04: 4e75 rts <== NOT EXECUTED
else
_CORE_message_queue_Prepend_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
#else
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) {
_ISR_Disable( level );
55b06: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55b0c: 40c1 movew %sr,%d1 <== NOT EXECUTED 55b0e: 8081 orl %d1,%d0 <== NOT EXECUTED 55b10: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55b12: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55b16: 2400 movel %d0,%d2 <== NOT EXECUTED 55b18: 5282 addql #1,%d2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
55b1a: 45e8 0054 lea %a0@(84),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55b1e: 4a80 tstl %d0 <== NOT EXECUTED 55b20: 57c0 seq %d0 <== NOT EXECUTED
_ISR_Enable( level );
#else
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) {
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
55b22: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55b26: 4480 negl %d0 <== NOT EXECUTED 55b28: 228a movel %a2,%a1@ <== NOT EXECUTED
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
55b2a: 2468 0058 moveal %a0@(88),%a2 <== NOT EXECUTED
the_chain->last = the_node;
55b2e: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED
old_last_node->next = the_node;
55b32: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last_node;
55b34: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) {
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
55b38: 46c1 movew %d1,%sr <== NOT EXECUTED 55b3a: 60a8 bras 55ae4 <_CORE_message_queue_Insert_message+0x78><== NOT EXECUTED
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
_ISR_Disable( level );
55b3c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55b42: 40c1 movew %sr,%d1 <== NOT EXECUTED 55b44: 8081 orl %d1,%d0 <== NOT EXECUTED 55b46: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55b48: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55b4c: 2400 movel %d0,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Prepend_unprotected (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message
)
{
_Chain_Prepend_unprotected(
55b4e: 45e8 0050 lea %a0@(80),%a2 <== NOT EXECUTED 55b52: 5282 addql #1,%d2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55b54: 4a80 tstl %d0 <== NOT EXECUTED 55b56: 57c0 seq %d0 <== NOT EXECUTED
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
55b58: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
55b5c: 2652 moveal %a2@,%a3 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55b5e: 4480 negl %d0 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
55b60: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
before_node = after_node->next; after_node->next = the_node;
55b64: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->next = before_node; before_node->previous = the_node;
55b66: 2749 0004 movel %a1,%a3@(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;
55b6a: 228b movel %a3,%a1@ <== NOT EXECUTED
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
_CORE_message_queue_Prepend_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
55b6c: 46c1 movew %d1,%sr <== NOT EXECUTED 55b6e: 6000 ff74 braw 55ae4 <_CORE_message_queue_Insert_message+0x78><== NOT EXECUTED
...
00050230 <_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 );
50230: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
50236: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
5023a: 2279 0006 a134 moveal 6a134 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
50240: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 50244: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 50248: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 5024c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 50250: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 50254: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED 50258: 142e 001b moveb %fp@(27),%d2 <== NOT EXECUTED
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;
5025c: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Disable( level );
50260: 40c1 movew %sr,%d1 <== NOT EXECUTED 50262: 8081 orl %d1,%d0 <== NOT EXECUTED 50264: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
50266: 200a movel %a2,%d0 <== NOT EXECUTED 50268: 0680 0000 0054 addil #84,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
5026e: 266a 0050 moveal %a2@(80),%a3 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
50272: b08b cmpl %a3,%d0 <== NOT EXECUTED 50274: 6700 0088 beqw 502fe <_CORE_message_queue_Seize+0xce> <== NOT EXECUTED
{
Chain_Node *return_node;
Chain_Node *new_first;
return_node = the_chain->first;
new_first = return_node->next;
50278: 2253 moveal %a3@,%a1 <== NOT EXECUTED
CORE_message_queue_Buffer_control *_CORE_message_queue_Get_pending_message (
CORE_message_queue_Control *the_message_queue
)
{
return (CORE_message_queue_Buffer_control *)
_Chain_Get_unprotected( &the_message_queue->Pending_messages );
5027a: 49ea 0050 lea %a2@(80),%a4 <== NOT EXECUTED
the_chain->first = new_first;
5027e: 2549 0050 movel %a1,%a2@(80) <== NOT EXECUTED 50282: 234c 0004 movel %a4,%a1@(4) <== NOT EXECUTED
the_message = _CORE_message_queue_Get_pending_message( the_message_queue );
if ( the_message != NULL ) {
the_message_queue->number_of_pending_messages -= 1;
50286: 53aa 0048 subql #1,%a2@(72) <== NOT EXECUTED
_ISR_Enable( level );
5028a: 46c1 movew %d1,%sr <== NOT EXECUTED
*size_p = the_message->Contents.size;
_Thread_Executing->Wait.count =
5028c: 2279 0006 a134 moveal 6a134 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
the_message = _CORE_message_queue_Get_pending_message( the_message_queue );
if ( the_message != NULL ) {
the_message_queue->number_of_pending_messages -= 1;
_ISR_Enable( level );
*size_p = the_message->Contents.size;
50292: 20ab 000c movel %a3@(12),%a0@ <== NOT EXECUTED
_Thread_Executing->Wait.count =
_CORE_message_queue_Get_message_priority( the_message );
_CORE_message_queue_Copy_buffer(
the_message->Contents.buffer,
50296: 240b movel %a3,%d2 <== NOT EXECUTED 50298: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
if ( the_message != NULL ) {
the_message_queue->number_of_pending_messages -= 1;
_ISR_Enable( level );
*size_p = the_message->Contents.size;
_Thread_Executing->Wait.count =
5029e: 236b 0008 0024 movel %a3@(8),%a1@(36) <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
502a4: 49f9 0005 8814 lea 58814 <memcpy>,%a4 <== NOT EXECUTED 502aa: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 502ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED 502ae: 2f03 movel %d3,%sp@- <== NOT EXECUTED 502b0: 4e94 jsr %a4@ <== NOT EXECUTED
* is not, then we can go ahead and free the buffer.
*
* NOTE: If we note that the queue was not full before this receive,
* then we can avoid this dequeue.
*/
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
502b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 502b4: 4eb9 0005 2078 jsr 52078 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( !the_thread ) {
502ba: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
* is not, then we can go ahead and free the buffer.
*
* NOTE: If we note that the queue was not full before this receive,
* then we can avoid this dequeue.
*/
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
502be: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !the_thread ) {
502c0: 4a80 tstl %d0 <== NOT EXECUTED 502c2: 6700 0088 beqw 5034c <_CORE_message_queue_Seize+0x11c><== NOT EXECUTED
*/
_CORE_message_queue_Set_message_priority(
the_message,
the_thread->Wait.count
);
the_message->Contents.size = (size_t) the_thread->Wait.option;
502c6: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED
CORE_message_queue_Buffer_control *the_message,
int priority
)
{
#if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
the_message->priority = priority;
502ca: 2768 0024 0008 movel %a0@(36),%a3@(8) <== NOT EXECUTED 502d0: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
502d4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 502d6: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED 502da: 2f02 movel %d2,%sp@- <== NOT EXECUTED 502dc: 4e94 jsr %a4@ <== NOT EXECUTED
the_thread->Wait.return_argument_second.immutable_object,
the_message->Contents.buffer,
the_message->Contents.size
);
_CORE_message_queue_Insert_message(
502de: 2d6b 0008 0010 movel %a3@(8),%fp@(16) <== NOT EXECUTED 502e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 502e8: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 502ec: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
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 );
}
502f0: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 502f6: 4e5e unlk %fp <== NOT EXECUTED
the_thread->Wait.return_argument_second.immutable_object,
the_message->Contents.buffer,
the_message->Contents.size
);
_CORE_message_queue_Insert_message(
502f8: 4ef9 0005 5a6c jmp 55a6c <_CORE_message_queue_Insert_message><== NOT EXECUTED
return;
}
#endif
}
if ( !wait ) {
502fe: 4a02 tstb %d2 <== NOT EXECUTED 50300: 6612 bnes 50314 <_CORE_message_queue_Seize+0xe4> <== NOT EXECUTED
_ISR_Enable( level );
50302: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
50304: 7004 moveq #4,%d0 <== NOT EXECUTED
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 );
}
50306: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
#endif
}
if ( !wait ) {
_ISR_Enable( level );
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
5030c: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
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 );
}
50310: 4e5e unlk %fp <== NOT EXECUTED 50312: 4e75 rts <== NOT EXECUTED
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;
50314: 7001 moveq #1,%d0 <== NOT EXECUTED 50316: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
}
_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;
5031a: 2343 002c movel %d3,%a1@(44) <== NOT EXECUTED
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;
5031e: 234a 0044 movel %a2,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
50322: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
executing->Wait.return_argument_second.mutable_object = buffer; executing->Wait.return_argument = size_p;
50326: 2348 0028 movel %a0,%a1@(40) <== NOT EXECUTED
/* Wait.count will be filled in with the message priority */ _ISR_Enable( level );
5032a: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
5032c: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED 50330: 49f9 0005 25b0 lea 525b0 <_Thread_queue_Timeout>,%a4 <== NOT EXECUTED 50336: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 5033a: 2d4c 0010 movel %a4,%fp@(16) <== NOT EXECUTED
}
5033e: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 50344: 4e5e unlk %fp <== NOT EXECUTED
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 );
50346: 4ef9 0005 21e8 jmp 521e8 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
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 );
5034c: 45ea 0068 lea %a2@(104),%a2 <== NOT EXECUTED 50350: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 50354: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
50358: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 5035e: 4e5e unlk %fp <== NOT EXECUTED 50360: 4ef9 0005 00a4 jmp 500a4 <_Chain_Append> <== NOT EXECUTED
...
00050368 <_CORE_message_queue_Submit>:
#endif
CORE_message_queue_Submit_types submit_type,
bool wait,
Watchdog_Interval timeout
)
{
50368: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 5036c: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 50370: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 50374: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 50378: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED 5037c: 162e 0023 moveb %fp@(35),%d3 <== NOT EXECUTED
CORE_message_queue_Buffer_control *the_message;
Thread_Control *the_thread;
if ( size > the_message_queue->maximum_message_size ) {
50380: b4aa 004c cmpl %a2@(76),%d2 <== NOT EXECUTED 50384: 6228 bhis 503ae <_CORE_message_queue_Submit+0x46><== NOT EXECUTED
}
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
50386: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 5038a: 672e beqs 503ba <_CORE_message_queue_Submit+0x52><== NOT EXECUTED
/*
* No one waiting on the message queue at this time, so attempt to
* queue the message up for a future receive.
*/
if ( the_message_queue->number_of_pending_messages <
5038c: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED 50390: 6500 00ba bcsw 5044c <_CORE_message_queue_Submit+0xe4><== NOT EXECUTED
/*
* No message buffers were available so we may need to return an
* overflow error or block the sender until the message is placed
* on the queue.
*/
if ( !wait ) {
50394: 4a03 tstb %d3 <== NOT EXECUTED 50396: 6700 00f4 beqw 5048c <_CORE_message_queue_Submit+0x124><== NOT EXECUTED
/*
* Do NOT block on a send if the caller is in an ISR. It is
* deadly to block in an ISR.
*/
if ( _ISR_Is_in_progress() ) {
5039a: 4ab9 0006 a130 tstl 6a130 <_Per_CPU_Information+0x8> <== NOT EXECUTED 503a0: 6754 beqs 503f6 <_CORE_message_queue_Submit+0x8e><== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
503a2: 7003 moveq #3,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
503a4: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 503aa: 4e5e unlk %fp <== NOT EXECUTED 503ac: 4e75 rts <== NOT EXECUTED
{
CORE_message_queue_Buffer_control *the_message;
Thread_Control *the_thread;
if ( size > the_message_queue->maximum_message_size ) {
return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
503ae: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
503b0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 503b6: 4e5e unlk %fp <== NOT EXECUTED 503b8: 4e75 rts <== NOT EXECUTED
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
503ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 503bc: 4eb9 0005 2078 jsr 52078 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( the_thread ) {
503c2: 588f addql #4,%sp <== NOT EXECUTED
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
503c4: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( the_thread ) {
503c6: 4a80 tstl %d0 <== NOT EXECUTED 503c8: 6700 00ce beqw 50498 <_CORE_message_queue_Submit+0x130><== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
503cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 503ce: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 503d2: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED 503d6: 4eb9 0005 8814 jsr 58814 <memcpy> <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_thread->Wait.return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
503dc: 206b 0028 moveal %a3@(40),%a0 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_message_queue_mp_support) ( the_thread, id );
#endif
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
503e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 503e4: 4280 clrl %d0 <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_thread->Wait.return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
503e6: 2082 movel %d2,%a0@ <== NOT EXECUTED
the_thread->Wait.count = (uint32_t) submit_type;
503e8: 2744 0024 movel %d4,%a3@(36) <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
503ec: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 503f2: 4e5e unlk %fp <== NOT EXECUTED 503f4: 4e75 rts <== NOT EXECUTED
* Thus the unusual choice to open a new scope and declare
* it as a variable. Doing this emphasizes how dangerous it
* would be to use this variable prior to here.
*/
{
Thread_Control *executing = _Thread_Executing;
503f6: 2079 0006 a134 moveal 6a134 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
503fc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 50402: 40c1 movew %sr,%d1 <== NOT EXECUTED 50404: 8081 orl %d1,%d0 <== NOT EXECUTED 50406: 46c0 movew %d0,%sr <== NOT EXECUTED 50408: 7001 moveq #1,%d0 <== NOT EXECUTED 5040a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
_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.immutable_object = buffer;
5040e: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
executing->Wait.queue = &the_message_queue->Wait_queue;
executing->Wait.id = id;
50412: 216e 0014 0020 movel %fp@(20),%a0@(32) <== NOT EXECUTED
Thread_Control *executing = _Thread_Executing;
ISR_Level level;
_ISR_Disable( level );
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
executing->Wait.queue = &the_message_queue->Wait_queue;
50418: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.return_argument_second.immutable_object = buffer;
5041c: 2140 002c movel %d0,%a0@(44) <== NOT EXECUTED
executing->Wait.option = (uint32_t) size;
50420: 2142 0030 movel %d2,%a0@(48) <== NOT EXECUTED
executing->Wait.count = submit_type;
50424: 2144 0024 movel %d4,%a0@(36) <== NOT EXECUTED
_ISR_Enable( level );
50428: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
5042a: 4879 0005 25b0 pea 525b0 <_Thread_queue_Timeout> <== NOT EXECUTED 50430: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED 50434: 2f0a movel %a2,%sp@- <== NOT EXECUTED 50436: 4eb9 0005 21e8 jsr 521e8 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
5043c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 50440: 7007 moveq #7,%d0 <== NOT EXECUTED
#endif }
50442: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 50448: 4e5e unlk %fp <== NOT EXECUTED 5044a: 4e75 rts <== NOT EXECUTED
_CORE_message_queue_Allocate_message_buffer (
CORE_message_queue_Control *the_message_queue
)
{
return (CORE_message_queue_Buffer_control *)
_Chain_Get( &the_message_queue->Inactive_messages );
5044c: 486a 0068 pea %a2@(104) <== NOT EXECUTED 50450: 4eb9 0005 0104 jsr 50104 <_Chain_Get> <== NOT EXECUTED 50456: 2640 moveal %d0,%a3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
50458: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5045a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5045e: 486b 0010 pea %a3@(16) <== NOT EXECUTED 50462: 4eb9 0005 8814 jsr 58814 <memcpy> <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_message->Contents.buffer,
size
);
the_message->Contents.size = size;
50468: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
CORE_message_queue_Buffer_control *the_message,
int priority
)
{
#if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
the_message->priority = priority;
5046c: 2744 0008 movel %d4,%a3@(8) <== NOT EXECUTED
_CORE_message_queue_Set_message_priority( the_message, submit_type );
_CORE_message_queue_Insert_message(
50470: 2f04 movel %d4,%sp@- <== NOT EXECUTED 50472: 2f0b movel %a3,%sp@- <== NOT EXECUTED 50474: 2f0a movel %a2,%sp@- <== NOT EXECUTED 50476: 4eb9 0005 5a6c jsr 55a6c <_CORE_message_queue_Insert_message><== NOT EXECUTED
the_message_queue,
the_message,
submit_type
);
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
5047c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 50480: 4280 clrl %d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50482: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 50488: 4e5e unlk %fp <== NOT EXECUTED 5048a: 4e75 rts <== NOT EXECUTED
* No message buffers were available so we may need to return an
* overflow error or block the sender until the message is placed
* on the queue.
*/
if ( !wait ) {
return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
5048c: 7002 moveq #2,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
5048e: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 50494: 4e5e unlk %fp <== NOT EXECUTED 50496: 4e75 rts <== NOT EXECUTED
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
if ( the_thread ) {
50498: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
/*
* No one waiting on the message queue at this time, so attempt to
* queue the message up for a future receive.
*/
if ( the_message_queue->number_of_pending_messages <
5049c: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED 504a0: 6400 fef2 bccw 50394 <_CORE_message_queue_Submit+0x2c><== NOT EXECUTED 504a4: 60a6 bras 5044c <_CORE_message_queue_Submit+0xe4><== NOT EXECUTED
...
00046f8c <_CORE_mutex_Initialize>:
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46f8c: 4e56 0000 linkw %fp,#0 46f90: 206e 0008 moveal %fp@(8),%a0 46f94: 2f0a movel %a2,%sp@- 46f96: 246e 000c moveal %fp@(12),%a2
/* Add this to the RTEMS environment later ?????????
rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||
initial_lock == CORE_MUTEX_UNLOCKED );
*/
the_mutex->Attributes = *the_mutex_attributes;
46f9a: 224a moveal %a2,%a1 46f9c: 2159 0040 movel %a1@+,%a0@(64) 46fa0: 2159 0044 movel %a1@+,%a0@(68) 46fa4: 2159 0048 movel %a1@+,%a0@(72)
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46fa8: 202e 0010 movel %fp@(16),%d0
/* Add this to the RTEMS environment later ?????????
rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||
initial_lock == CORE_MUTEX_UNLOCKED );
*/
the_mutex->Attributes = *the_mutex_attributes;
46fac: 3151 004c movew %a1@,%a0@(76)
the_mutex->lock = initial_lock;
46fb0: 2140 004e movel %d0,%a0@(78)
the_mutex->blocked_count = 0;
46fb4: 42a8 0056 clrl %a0@(86)
if ( initial_lock == CORE_MUTEX_LOCKED ) {
46fb8: 4a80 tstl %d0
46fba: 6654 bnes 47010 <_CORE_mutex_Initialize+0x84>
the_mutex->nest_count = 1;
the_mutex->holder = _Thread_Executing;
46fbc: 2279 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a1
the_mutex->Attributes = *the_mutex_attributes;
the_mutex->lock = initial_lock;
the_mutex->blocked_count = 0;
if ( initial_lock == CORE_MUTEX_LOCKED ) {
the_mutex->nest_count = 1;
46fc2: 7201 moveq #1,%d1
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
46fc4: 2169 0008 005e movel %a1@(8),%a0@(94)
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
46fca: 2028 0046 movel %a0@(70),%d0
the_mutex->Attributes = *the_mutex_attributes;
the_mutex->lock = initial_lock;
the_mutex->blocked_count = 0;
if ( initial_lock == CORE_MUTEX_LOCKED ) {
the_mutex->nest_count = 1;
46fce: 2141 0052 movel %d1,%a0@(82)
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
46fd2: 123c 0002 moveb #2,%d1
the_mutex->lock = initial_lock;
the_mutex->blocked_count = 0;
if ( initial_lock == CORE_MUTEX_LOCKED ) {
the_mutex->nest_count = 1;
the_mutex->holder = _Thread_Executing;
46fd6: 2149 005a movel %a1,%a0@(90)
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
46fda: b280 cmpl %d0,%d1
46fdc: 6762 beqs 47040 <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
46fde: 123c 0003 moveb #3,%d1 46fe2: b280 cmpl %d0,%d1
46fe4: 675a beqs 47040 <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46fe6: 4aaa 0006 tstl %a2@(6) 46fea: 56c0 sne %d0 46fec: 4878 0005 pea 5 <COMPARE> 46ff0: 49c0 extbl %d0 46ff2: 4878 0400 pea 400 <D_BIAS+0x2> 46ff6: 4480 negl %d0 46ff8: 2f00 movel %d0,%sp@- 46ffa: 2f08 movel %a0,%sp@- 46ffc: 4eb9 0004 8ef4 jsr 48ef4 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
47002: 4fef 0010 lea %sp@(16),%sp 47006: 4280 clrl %d0
}
47008: 246e fffc moveal %fp@(-4),%a2 4700c: 4e5e unlk %fp 4700e: 4e75 rts
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
47010: 4aaa 0006 tstl %a2@(6) 47014: 56c0 sne %d0
#endif
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
47016: 42a8 0052 clrl %a0@(82)
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
4701a: 49c0 extbl %d0 4701c: 4480 negl %d0
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
4701e: 42a8 005a clrl %a0@(90)
the_mutex->holder_id = 0;
47022: 42a8 005e clrl %a0@(94)
}
_Thread_queue_Initialize(
47026: 4878 0005 pea 5 <COMPARE> 4702a: 4878 0400 pea 400 <D_BIAS+0x2> 4702e: 2f00 movel %d0,%sp@- 47030: 2f08 movel %a0,%sp@- 47032: 4eb9 0004 8ef4 jsr 48ef4 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
47038: 4fef 0010 lea %sp@(16),%sp 4703c: 4280 clrl %d0 4703e: 60c8 bras 47008 <_CORE_mutex_Initialize+0x7c>
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
if ( _Thread_Executing->current_priority <
47040: 2028 004a movel %a0@(74),%d0 <== NOT EXECUTED 47044: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED 47048: 6228 bhis 47072 <_CORE_mutex_Initialize+0xe6> <== NOT EXECUTED
_Chain_Prepend_unprotected( &_Thread_Executing->lock_mutex,
&the_mutex->queue.lock_queue );
the_mutex->queue.priority_before = _Thread_Executing->current_priority;
#endif
_Thread_Executing->resource_count++;
4704a: 52a9 001c addql #1,%a1@(28) <== NOT EXECUTED
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
4704e: 4aaa 0006 tstl %a2@(6) <== NOT EXECUTED 47052: 56c0 sne %d0 <== NOT EXECUTED 47054: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 47058: 49c0 extbl %d0 <== NOT EXECUTED 4705a: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED 4705e: 4480 negl %d0 <== NOT EXECUTED 47060: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47062: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47064: 4eb9 0004 8ef4 jsr 48ef4 <_Thread_queue_Initialize> <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
4706a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4706e: 4280 clrl %d0 <== NOT EXECUTED 47070: 6096 bras 47008 <_CORE_mutex_Initialize+0x7c> <== NOT EXECUTED
}
47072: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
if ( _Thread_Executing->current_priority <
the_mutex->Attributes.priority_ceiling )
return CORE_MUTEX_STATUS_CEILING_VIOLATED;
47076: 7006 moveq #6,%d0 <== NOT EXECUTED
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47078: 4e5e unlk %fp <== NOT EXECUTED
00047108 <_CORE_mutex_Seize>:
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
47108: 4e56 0000 linkw %fp,#0
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
4710c: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
47112: 2f0a movel %a2,%sp@- 47114: 246e 0008 moveal %fp@(8),%a2 47118: 2f02 movel %d2,%sp@- 4711a: 142e 0013 moveb %fp@(19),%d2
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
4711e: 4a80 tstl %d0
47120: 6704 beqs 47126 <_CORE_mutex_Seize+0x1e>
47122: 4a02 tstb %d2
47124: 6634 bnes 4715a <_CORE_mutex_Seize+0x52> <== ALWAYS TAKEN
47126: 486e 0018 pea %fp@(24) 4712a: 2f0a movel %a2,%sp@- 4712c: 4eb9 0004 c4a8 jsr 4c4a8 <_CORE_mutex_Seize_interrupt_trylock> 47132: 508f addql #8,%sp 47134: 4a80 tstl %d0
47136: 6716 beqs 4714e <_CORE_mutex_Seize+0x46>
47138: 4a02 tstb %d2
4713a: 6636 bnes 47172 <_CORE_mutex_Seize+0x6a> <== ALWAYS TAKEN
4713c: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED 47140: 46c0 movew %d0,%sr <== NOT EXECUTED 47142: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47148: 7001 moveq #1,%d0 <== NOT EXECUTED 4714a: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
}
4714e: 242e fff8 movel %fp@(-8),%d2 47152: 246e fffc moveal %fp@(-4),%a2 47156: 4e5e unlk %fp 47158: 4e75 rts
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
4715a: 7001 moveq #1,%d0 4715c: b0b9 0005 fdfa cmpl 5fdfa <_System_state_Current>,%d0
47162: 64c2 bccs 47126 <_CORE_mutex_Seize+0x1e>
47164: 4878 0012 pea 12 <INVALID_OPERATION+0x2> 47168: 42a7 clrl %sp@- 4716a: 42a7 clrl %sp@- 4716c: 4eb9 0004 785c jsr 4785c <_Internal_error_Occurred>
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;
47172: 7001 moveq #1,%d0 47174: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 4717a: 2540 0030 movel %d0,%a2@(48) 4717e: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0 47184: 5280 addql #1,%d0 47186: 216e 000c 0020 movel %fp@(12),%a0@(32) 4718c: 214a 0044 movel %a2,%a0@(68) 47190: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level> 47196: 202e 0018 movel %fp@(24),%d0 4719a: 46c0 movew %d0,%sr 4719c: 2f2e 0014 movel %fp@(20),%sp@- 471a0: 2f0a movel %a2,%sp@- 471a2: 4eb9 0004 707c jsr 4707c <_CORE_mutex_Seize_interrupt_blocking>
}
471a8: 242e fff8 movel %fp@(-8),%d2
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
471ac: 508f addql #8,%sp
}
471ae: 246e fffc moveal %fp@(-4),%a2 471b2: 4e5e unlk %fp
...
0004707c <_CORE_mutex_Seize_interrupt_blocking>:
)
{
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
4707c: 7002 moveq #2,%d0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
4707e: 4e56 0000 linkw %fp,#0
Thread_Control *executing;
executing = _Thread_Executing;
47082: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
47088: 2f0a movel %a2,%sp@- 4708a: 246e 0008 moveal %fp@(8),%a2 4708e: 2f02 movel %d2,%sp@- 47090: 242e 000c movel %fp@(12),%d2
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
47094: b0aa 0046 cmpl %a2@(70),%d0
47098: 6728 beqs 470c2 <_CORE_mutex_Seize_interrupt_blocking+0x46>
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
4709a: 4879 0004 9000 pea 49000 <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
470a0: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470a4: 2f02 movel %d2,%sp@- 470a6: 2f0a movel %a2,%sp@- 470a8: 4eb9 0004 8c38 jsr 48c38 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
470ae: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470b2: 4fef 000c lea %sp@(12),%sp
}
470b6: 246e fffc moveal %fp@(-4),%a2 470ba: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470bc: 4ef9 0004 86e6 jmp 486e6 <_Thread_Enable_dispatch>
{
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
if ( the_mutex->holder->current_priority > executing->current_priority ) {
470c2: 226a 005a moveal %a2@(90),%a1 470c6: 2028 0014 movel %a0@(20),%d0 470ca: b0a9 0014 cmpl %a1@(20),%d0
470ce: 64ca bccs 4709a <_CORE_mutex_Seize_interrupt_blocking+0x1e><== NEVER TAKEN
_Thread_Change_priority(
470d0: 42a7 clrl %sp@- 470d2: 2f00 movel %d0,%sp@- 470d4: 2f09 movel %a1,%sp@- 470d6: 4eb9 0004 81b4 jsr 481b4 <_Thread_Change_priority> 470dc: 4fef 000c lea %sp@(12),%sp
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470e0: 4879 0004 9000 pea 49000 <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
470e6: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470ea: 2f02 movel %d2,%sp@- 470ec: 2f0a movel %a2,%sp@- 470ee: 4eb9 0004 8c38 jsr 48c38 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
470f4: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470f8: 4fef 000c lea %sp@(12),%sp
}
470fc: 246e fffc moveal %fp@(-4),%a2 47100: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
47102: 4ef9 0004 86e6 jmp 486e6 <_Thread_Enable_dispatch>
0004c4a8 <_CORE_mutex_Seize_interrupt_trylock>:
#if defined(__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__)
int _CORE_mutex_Seize_interrupt_trylock(
CORE_mutex_Control *the_mutex,
ISR_Level *level_p
)
{
4c4a8: 4e56 0000 linkw %fp,#0
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
4c4ac: 2279 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a1 4c4b2: 2f0a movel %a2,%sp@- 4c4b4: 206e 0008 moveal %fp@(8),%a0 4c4b8: 2f02 movel %d2,%sp@- 4c4ba: 246e 000c moveal %fp@(12),%a2
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
4c4be: 42a9 0034 clrl %a1@(52)
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
4c4c2: 4aa8 004e tstl %a0@(78)
4c4c6: 673a beqs 4c502 <_CORE_mutex_Seize_interrupt_trylock+0x5a>
the_mutex->lock = CORE_MUTEX_LOCKED;
the_mutex->holder = executing;
the_mutex->holder_id = executing->Object.id;
the_mutex->nest_count = 1;
4c4c8: 7201 moveq #1,%d1
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
the_mutex->lock = CORE_MUTEX_LOCKED;
the_mutex->holder = executing;
the_mutex->holder_id = executing->Object.id;
4c4ca: 2169 0008 005e movel %a1@(8),%a0@(94)
return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p ); }
4c4d0: 2028 0046 movel %a0@(70),%d0
the_mutex->nest_count = 1;
4c4d4: 2141 0052 movel %d1,%a0@(82)
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
4c4d8: 123c 0002 moveb #2,%d1
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
the_mutex->lock = CORE_MUTEX_LOCKED;
4c4dc: 42a8 004e clrl %a0@(78)
the_mutex->holder = executing;
4c4e0: 2149 005a movel %a1,%a0@(90)
the_mutex->holder_id = executing->Object.id;
the_mutex->nest_count = 1;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
4c4e4: b280 cmpl %d0,%d1
4c4e6: 672e beqs 4c516 <_CORE_mutex_Seize_interrupt_trylock+0x6e>
4c4e8: 123c 0003 moveb #3,%d1 4c4ec: b280 cmpl %d0,%d1
4c4ee: 674e beqs 4c53e <_CORE_mutex_Seize_interrupt_trylock+0x96><== NEVER TAKEN
executing->resource_count++;
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4c4f0: 2012 movel %a2@,%d0 4c4f2: 46c0 movew %d0,%sr
return 0;
4c4f4: 4280 clrl %d0 4c4f6: 242e fff8 movel %fp@(-8),%d2 4c4fa: 246e fffc moveal %fp@(-4),%a2 4c4fe: 4e5e unlk %fp 4c500: 4e75 rts
/*
* At this point, we know the mutex was not available. If this thread
* is the thread that has locked the mutex, let's see if we are allowed
* to nest access.
*/
if ( _Thread_Is_executing( the_mutex->holder ) ) {
4c502: b3e8 005a cmpal %a0@(90),%a1
4c506: 671a beqs 4c522 <_CORE_mutex_Seize_interrupt_trylock+0x7a>
4c508: 242e fff8 movel %fp@(-8),%d2
/*
* The mutex is not available and the caller must deal with the possibility
* of blocking.
*/
return 1;
4c50c: 7001 moveq #1,%d0 4c50e: 246e fffc moveal %fp@(-4),%a2 4c512: 4e5e unlk %fp 4c514: 4e75 rts
_Chain_Prepend_unprotected( &executing->lock_mutex,
&the_mutex->queue.lock_queue );
the_mutex->queue.priority_before = executing->current_priority;
#endif
executing->resource_count++;
4c516: 52a9 001c addql #1,%a1@(28)
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4c51a: 2012 movel %a2@,%d0 4c51c: 46c0 movew %d0,%sr
return 0;
4c51e: 4280 clrl %d0 4c520: 60d4 bras 4c4f6 <_CORE_mutex_Seize_interrupt_trylock+0x4e>
* At this point, we know the mutex was not available. If this thread
* is the thread that has locked the mutex, let's see if we are allowed
* to nest access.
*/
if ( _Thread_Is_executing( the_mutex->holder ) ) {
switch ( the_mutex->Attributes.lock_nesting_behavior ) {
4c522: 2028 0040 movel %a0@(64),%d0
4c526: 6658 bnes 4c580 <_CORE_mutex_Seize_interrupt_trylock+0xd8><== ALWAYS TAKEN
case CORE_MUTEX_NESTING_ACQUIRES:
the_mutex->nest_count++;
4c528: 52a8 0052 addql #1,%a0@(82) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c52c: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c52e: 46c0 movew %d0,%sr <== NOT EXECUTED 4c530: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c534: 4280 clrl %d0 <== NOT EXECUTED 4c536: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c53a: 4e5e unlk %fp <== NOT EXECUTED 4c53c: 4e75 rts <== NOT EXECUTED
_Chain_Prepend_unprotected( &executing->lock_mutex,
&the_mutex->queue.lock_queue );
the_mutex->queue.priority_before = executing->current_priority;
#endif
executing->resource_count++;
4c53e: 2429 001c movel %a1@(28),%d2 <== NOT EXECUTED 4c542: 2002 movel %d2,%d0 <== NOT EXECUTED 4c544: 5280 addql #1,%d0 <== NOT EXECUTED 4c546: 2340 001c movel %d0,%a1@(28) <== NOT EXECUTED
*/
{
Priority_Control ceiling;
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
4c54a: 2228 004a movel %a0@(74),%d1 <== NOT EXECUTED
current = executing->current_priority;
4c54e: 2029 0014 movel %a1@(20),%d0 <== NOT EXECUTED
if ( current == ceiling ) {
4c552: b081 cmpl %d1,%d0 <== NOT EXECUTED 4c554: 6700 0082 beqw 4c5d8 <_CORE_mutex_Seize_interrupt_trylock+0x130><== NOT EXECUTED
_ISR_Enable( *level_p );
return 0;
}
if ( current > ceiling ) {
4c558: 6244 bhis 4c59e <_CORE_mutex_Seize_interrupt_trylock+0xf6><== NOT EXECUTED
);
_Thread_Enable_dispatch();
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4c55a: 7206 moveq #6,%d1 <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4c55c: 7001 moveq #1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4c55e: 2341 0034 movel %d1,%a1@(52) <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4c562: 2140 004e movel %d0,%a0@(78) <== NOT EXECUTED
the_mutex->nest_count = 0; /* undo locking above */
4c566: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
executing->resource_count--; /* undo locking above */
4c56a: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c56e: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c570: 46c0 movew %d0,%sr <== NOT EXECUTED 4c572: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c576: 4280 clrl %d0 <== NOT EXECUTED 4c578: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c57c: 4e5e unlk %fp <== NOT EXECUTED 4c57e: 4e75 rts <== NOT EXECUTED
* At this point, we know the mutex was not available. If this thread
* is the thread that has locked the mutex, let's see if we are allowed
* to nest access.
*/
if ( _Thread_Is_executing( the_mutex->holder ) ) {
switch ( the_mutex->Attributes.lock_nesting_behavior ) {
4c580: 7201 moveq #1,%d1 4c582: b280 cmpl %d0,%d1
4c584: 6682 bnes 4c508 <_CORE_mutex_Seize_interrupt_trylock+0x60><== ALWAYS TAKEN
case CORE_MUTEX_NESTING_ACQUIRES:
the_mutex->nest_count++;
_ISR_Enable( *level_p );
return 0;
case CORE_MUTEX_NESTING_IS_ERROR:
executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED;
4c586: 7002 moveq #2,%d0 <== NOT EXECUTED 4c588: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c58c: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c58e: 46c0 movew %d0,%sr <== NOT EXECUTED 4c590: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c594: 4280 clrl %d0 <== NOT EXECUTED 4c596: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c59a: 4e5e unlk %fp <== NOT EXECUTED 4c59c: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4c59e: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4c5a4: 5280 addql #1,%d0 <== NOT EXECUTED 4c5a6: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
return 0;
}
if ( current > ceiling ) {
_Thread_Disable_dispatch();
_ISR_Enable( *level_p );
4c5ac: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c5ae: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_Change_priority(
4c5b0: 42a7 clrl %sp@- <== NOT EXECUTED 4c5b2: 2f28 004a movel %a0@(74),%sp@- <== NOT EXECUTED 4c5b6: 2f28 005a movel %a0@(90),%sp@- <== NOT EXECUTED 4c5ba: 4eb9 0004 81b4 jsr 481b4 <_Thread_Change_priority> <== NOT EXECUTED
the_mutex->holder,
the_mutex->Attributes.priority_ceiling,
false
);
_Thread_Enable_dispatch();
4c5c0: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED 4c5c6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c5ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
4c5ce: 4280 clrl %d0 <== NOT EXECUTED 4c5d0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c5d4: 4e5e unlk %fp <== NOT EXECUTED 4c5d6: 4e75 rts <== NOT EXECUTED
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
current = executing->current_priority;
if ( current == ceiling ) {
_ISR_Enable( *level_p );
4c5d8: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c5da: 46c0 movew %d0,%sr <== NOT EXECUTED 4c5dc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c5e0: 4280 clrl %d0 <== NOT EXECUTED 4c5e2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c5e6: 4e5e unlk %fp <== NOT EXECUTED
...
000471b8 <_CORE_mutex_Surrender>:
#else
Objects_Id id __attribute__((unused)),
CORE_mutex_API_mp_support_callout api_mutex_mp_support __attribute__((unused))
#endif
)
{
471b8: 4e56 0000 linkw %fp,#0 471bc: 2f0a movel %a2,%sp@- 471be: 246e 0008 moveal %fp@(8),%a2
Thread_Control *the_thread;
Thread_Control *holder;
holder = the_mutex->holder;
471c2: 206a 005a moveal %a2@(90),%a0
* allowed when the mutex in quetion is FIFO or simple Priority
* discipline. But Priority Ceiling or Priority Inheritance mutexes
* must be released by the thread which acquired them.
*/
if ( the_mutex->Attributes.only_owner_release ) {
471c6: 4a2a 0044 tstb %a2@(68)
471ca: 6712 beqs 471de <_CORE_mutex_Surrender+0x26>
if ( !_Thread_Is_executing( holder ) )
471cc: b1f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a0
471d2: 670a beqs 471de <_CORE_mutex_Surrender+0x26> <== ALWAYS TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471d4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
* must be released by the thread which acquired them.
*/
if ( the_mutex->Attributes.only_owner_release ) {
if ( !_Thread_Is_executing( holder ) )
return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
471d8: 7003 moveq #3,%d0 <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471da: 4e5e unlk %fp <== NOT EXECUTED 471dc: 4e75 rts <== NOT EXECUTED
return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
}
/* XXX already unlocked -- not right status */
if ( !the_mutex->nest_count )
471de: 202a 0052 movel %a2@(82),%d0
471e2: 6758 beqs 4723c <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
return CORE_MUTEX_STATUS_SUCCESSFUL;
the_mutex->nest_count--;
471e4: 5380 subql #1,%d0 471e6: 2540 0052 movel %d0,%a2@(82)
if ( the_mutex->nest_count != 0 ) {
471ea: 6650 bnes 4723c <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471ec: 202a 0046 movel %a2@(70),%d0
/*
* Formally release the mutex before possibly transferring it to a
* blocked thread.
*/
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
471f0: 7202 moveq #2,%d1 471f2: b280 cmpl %d0,%d1
471f4: 6750 beqs 47246 <_CORE_mutex_Surrender+0x8e>
471f6: 123c 0003 moveb #3,%d1 471fa: b280 cmpl %d0,%d1
471fc: 6748 beqs 47246 <_CORE_mutex_Surrender+0x8e> <== NEVER TAKEN
if ( holder->resource_count == 0 &&
holder->real_priority != holder->current_priority ) {
_Thread_Change_priority( holder, holder->real_priority, true );
}
}
the_mutex->holder = NULL;
471fe: 42aa 005a clrl %a2@(90)
the_mutex->holder_id = 0;
47202: 42aa 005e clrl %a2@(94)
/*
* Now we check if another thread was waiting for this mutex. If so,
* transfer the mutex to that thread.
*/
if ( ( the_thread = _Thread_queue_Dequeue( &the_mutex->Wait_queue ) ) ) {
47206: 2f0a movel %a2,%sp@- 47208: 4eb9 0004 8ac8 jsr 48ac8 <_Thread_queue_Dequeue> 4720e: 588f addql #4,%sp 47210: 2040 moveal %d0,%a0 47212: 4a80 tstl %d0 47214: 6700 0090 beqw 472a6 <_CORE_mutex_Surrender+0xee>
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
47218: 7201 moveq #1,%d1
} else
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
4721a: 2568 0008 005e movel %a0@(8),%a2@(94)
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
47220: 202a 0046 movel %a2@(70),%d0
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
47224: 2541 0052 movel %d1,%a2@(82)
switch ( the_mutex->Attributes.discipline ) {
47228: 123c 0002 moveb #2,%d1
} else
#endif
{
the_mutex->holder = the_thread;
4722c: 2548 005a movel %a0,%a2@(90)
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
47230: b280 cmpl %d0,%d1
47232: 6764 beqs 47298 <_CORE_mutex_Surrender+0xe0> <== ALWAYS TAKEN
47234: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 47238: b280 cmpl %d0,%d1 <== NOT EXECUTED 4723a: 6734 beqs 47270 <_CORE_mutex_Surrender+0xb8> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4723c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47240: 4280 clrl %d0 <== NOT EXECUTED
}
47242: 4e5e unlk %fp <== NOT EXECUTED 47244: 4e75 rts <== NOT EXECUTED
_CORE_mutex_Pop_priority( the_mutex, holder );
if ( pop_status != CORE_MUTEX_STATUS_SUCCESSFUL )
return pop_status;
holder->resource_count--;
47246: 2028 001c movel %a0@(28),%d0 4724a: 5380 subql #1,%d0 4724c: 2140 001c movel %d0,%a0@(28)
/*
* Whether or not someone is waiting for the mutex, an
* inherited priority must be lowered if this is the last
* mutex (i.e. resource) this task has.
*/
if ( holder->resource_count == 0 &&
47250: 66ac bnes 471fe <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
47252: 2028 0018 movel %a0@(24),%d0
/*
* Whether or not someone is waiting for the mutex, an
* inherited priority must be lowered if this is the last
* mutex (i.e. resource) this task has.
*/
if ( holder->resource_count == 0 &&
47256: b0a8 0014 cmpl %a0@(20),%d0
4725a: 67a2 beqs 471fe <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
_Thread_Change_priority( holder, holder->real_priority, true );
4725c: 4878 0001 pea 1 <ADD> 47260: 2f00 movel %d0,%sp@- 47262: 2f08 movel %a0,%sp@- 47264: 4eb9 0004 81b4 jsr 481b4 <_Thread_Change_priority> 4726a: 4fef 000c lea %sp@(12),%sp 4726e: 608e bras 471fe <_CORE_mutex_Surrender+0x46>
the_thread->resource_count++;
break;
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
_CORE_mutex_Push_priority( the_mutex, the_thread );
the_thread->resource_count++;
if (the_mutex->Attributes.priority_ceiling <
47270: 202a 004a movel %a2@(74),%d0 <== NOT EXECUTED
_CORE_mutex_Push_priority( the_mutex, the_thread );
the_thread->resource_count++;
break;
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
_CORE_mutex_Push_priority( the_mutex, the_thread );
the_thread->resource_count++;
47274: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED
if (the_mutex->Attributes.priority_ceiling <
47278: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 4727c: 64be bccs 4723c <_CORE_mutex_Surrender+0x84> <== NOT EXECUTED
the_thread->current_priority){
_Thread_Change_priority(
4727e: 42a7 clrl %sp@- <== NOT EXECUTED 47280: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47282: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47284: 4eb9 0004 81b4 jsr 481b4 <_Thread_Change_priority> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4728a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
_CORE_mutex_Push_priority( the_mutex, the_thread );
the_thread->resource_count++;
if (the_mutex->Attributes.priority_ceiling <
the_thread->current_priority){
_Thread_Change_priority(
4728e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47292: 4280 clrl %d0 <== NOT EXECUTED
}
47294: 4e5e unlk %fp <== NOT EXECUTED 47296: 4e75 rts <== NOT EXECUTED
47298: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
4729c: 4280 clrl %d0
case CORE_MUTEX_DISCIPLINES_FIFO:
case CORE_MUTEX_DISCIPLINES_PRIORITY:
break;
case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT:
_CORE_mutex_Push_priority( the_mutex, the_thread );
the_thread->resource_count++;
4729e: 52a8 001c addql #1,%a0@(28)
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
472a2: 4e5e unlk %fp 472a4: 4e75 rts
}
break;
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
472a6: 7001 moveq #1,%d0 472a8: 2540 004e movel %d0,%a2@(78)
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
472ac: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
472b0: 4200 clrb %d0
}
472b2: 4e5e unlk %fp
...
000504a4 <_CORE_semaphore_Seize>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
_ISR_Disable( level );
504a4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
bool wait,
Watchdog_Interval timeout
)
{
504aa: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
504ae: 2279 0006 5428 moveal 65428 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
bool wait,
Watchdog_Interval timeout
)
{
504b4: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 504b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 504bc: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 504c0: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 504c4: 142e 0013 moveb %fp@(19),%d2 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
504c8: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Disable( level );
504cc: 40c1 movew %sr,%d1 <== NOT EXECUTED 504ce: 8081 orl %d1,%d0 <== NOT EXECUTED 504d0: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count != 0 ) {
504d2: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 504d6: 6642 bnes 5051a <_CORE_semaphore_Seize+0x76> <== NOT EXECUTED
/*
* If the semaphore was not available and the caller was not willing
* to block, then return immediately with a status indicating that
* the semaphore was not available and the caller never blocked.
*/
if ( !wait ) {
504d8: 4a02 tstb %d2 <== NOT EXECUTED 504da: 6610 bnes 504ec <_CORE_semaphore_Seize+0x48> <== NOT EXECUTED
_ISR_Enable( level );
504dc: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
504de: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); }
504e0: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
* to block, then return immediately with a status indicating that
* the semaphore was not available and the caller never blocked.
*/
if ( !wait ) {
_ISR_Enable( level );
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
504e4: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); }
504e8: 4e5e unlk %fp <== NOT EXECUTED 504ea: 4e75 rts <== NOT EXECUTED 504ec: 7001 moveq #1,%d0 <== NOT EXECUTED 504ee: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
/* * If the semaphore is not available and the caller is willing to * block, then we now block the caller with optional timeout. */ _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue;
504f2: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
504f6: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
504fa: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
504fc: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 50500: 203c 0004 c7c0 movel #313280,%d0 <== NOT EXECUTED 50506: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5050a: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
*/ _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
5050e: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
50512: 4e5e unlk %fp <== NOT EXECUTED
*/ _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
50514: 4ef9 0004 c3f8 jmp 4c3f8 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
_ISR_Disable( level );
if ( the_semaphore->count != 0 ) {
the_semaphore->count -= 1;
5051a: 5380 subql #1,%d0 <== NOT EXECUTED 5051c: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
50520: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); }
50522: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 50526: 4e5e unlk %fp <== NOT EXECUTED
...
0004730c <_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
)
{
4730c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47310: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47312: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
47316: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47318: 4eb9 0004 8ac8 jsr 48ac8 <_Thread_queue_Dequeue> <== NOT EXECUTED 4731e: 588f addql #4,%sp <== NOT EXECUTED 47320: 4a80 tstl %d0 <== NOT EXECUTED 47322: 670a beqs 4732e <_CORE_semaphore_Surrender+0x22> <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
47324: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
47328: 4280 clrl %d0 <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
4732a: 4e5e unlk %fp <== NOT EXECUTED 4732c: 4e75 rts <== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_semaphore_mp_support) ( the_thread, id );
#endif
} else {
_ISR_Disable( level );
4732e: 303c 0700 movew #1792,%d0 <== NOT EXECUTED 47332: 40c1 movew %sr,%d1 <== NOT EXECUTED 47334: 8081 orl %d1,%d0 <== NOT EXECUTED 47336: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
47338: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4733c: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED 47340: 6412 bccs 47354 <_CORE_semaphore_Surrender+0x48> <== NOT EXECUTED
the_semaphore->count += 1;
47342: 5280 addql #1,%d0 <== NOT EXECUTED 47344: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
47348: 4280 clrl %d0 <== NOT EXECUTED
_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 );
4734a: 46c1 movew %d1,%sr <== NOT EXECUTED
}
return status;
}
4734c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47350: 4e5e unlk %fp <== NOT EXECUTED 47352: 4e75 rts <== NOT EXECUTED
} else {
_ISR_Disable( level );
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
the_semaphore->count += 1;
else
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
47354: 7004 moveq #4,%d0 <== NOT EXECUTED
_ISR_Enable( level );
47356: 46c1 movew %d1,%sr <== NOT EXECUTED 47358: 60f2 bras 4734c <_CORE_semaphore_Surrender+0x40> <== NOT EXECUTED
...
00047dcc <_CORE_spinlock_Initialize>:
void _CORE_spinlock_Initialize(
CORE_spinlock_Control *the_spinlock,
CORE_spinlock_Attributes *the_spinlock_attributes
)
{
47dcc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47dd0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47dd4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
the_spinlock->Attributes = *the_spinlock_attributes;
the_spinlock->lock = 0;
the_spinlock->users = 0;
the_spinlock->holder = 0;
}
47dd8: 4e5e unlk %fp <== NOT EXECUTED
CORE_spinlock_Control *the_spinlock,
CORE_spinlock_Attributes *the_spinlock_attributes
)
{
the_spinlock->Attributes = *the_spinlock_attributes;
47dda: 2091 movel %a1@,%a0@ <== NOT EXECUTED
the_spinlock->lock = 0;
47ddc: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
the_spinlock->users = 0;
47de0: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
the_spinlock->holder = 0;
47de4: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
}
...
00047dec <_CORE_spinlock_Release>:
CORE_spinlock_Control *the_spinlock
)
{
ISR_Level level;
_ISR_Disable( level );
47dec: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
CORE_spinlock_Status _CORE_spinlock_Release(
CORE_spinlock_Control *the_spinlock
)
{
47df2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47df6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
47dfa: 40c1 movew %sr,%d1 <== NOT EXECUTED 47dfc: 8081 orl %d1,%d0 <== NOT EXECUTED 47dfe: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* It must locked before it can be unlocked.
*/
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
47e00: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 47e04: 660a bnes 47e10 <_CORE_spinlock_Release+0x24> <== NOT EXECUTED
_ISR_Enable( level );
47e06: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_NOT_LOCKED;
47e08: 103c 0006 moveb #6,%d0 <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
the_spinlock->holder = 0;
_ISR_Enable( level );
return CORE_SPINLOCK_SUCCESSFUL;
}
47e0c: 4e5e unlk %fp <== NOT EXECUTED 47e0e: 4e75 rts <== NOT EXECUTED
}
/*
* It must locked by the current thread before it can be unlocked.
*/
if ( the_spinlock->holder != _Thread_Executing->Object.id ) {
47e10: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED 47e14: 2279 0006 129c moveal 6129c <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 47e1a: b0a9 0008 cmpl %a1@(8),%d0 <== NOT EXECUTED 47e1e: 6708 beqs 47e28 <_CORE_spinlock_Release+0x3c> <== NOT EXECUTED
_ISR_Enable( level );
47e20: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_NOT_HOLDER;
47e22: 7002 moveq #2,%d0 <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
the_spinlock->holder = 0;
_ISR_Enable( level );
return CORE_SPINLOCK_SUCCESSFUL;
}
47e24: 4e5e unlk %fp <== NOT EXECUTED 47e26: 4e75 rts <== NOT EXECUTED
}
/*
* Let it be unlocked.
*/
the_spinlock->users -= 1;
47e28: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 47e2c: 5380 subql #1,%d0 <== NOT EXECUTED 47e2e: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
47e32: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
the_spinlock->holder = 0;
47e36: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
_ISR_Enable( level );
47e3a: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_SUCCESSFUL;
47e3c: 4280 clrl %d0 <== NOT EXECUTED
}
47e3e: 4e5e unlk %fp <== NOT EXECUTED
...
00047e44 <_CORE_spinlock_Wait>:
ISR_Level level;
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout;
#endif
_ISR_Disable( level );
47e44: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
CORE_spinlock_Status _CORE_spinlock_Wait(
CORE_spinlock_Control *the_spinlock,
bool wait,
Watchdog_Interval timeout
)
{
47e4a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47e4e: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 47e52: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47e56: 162e 000f moveb %fp@(15),%d3 <== NOT EXECUTED
ISR_Level level;
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout;
#endif
_ISR_Disable( level );
47e5a: 40c2 movew %sr,%d2 <== NOT EXECUTED 47e5c: 8082 orl %d2,%d0 <== NOT EXECUTED 47e5e: 46c0 movew %d0,%sr <== NOT EXECUTED 47e60: 2202 movel %d2,%d1 <== NOT EXECUTED
if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) &&
47e62: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47e66: 7801 moveq #1,%d4 <== NOT EXECUTED 47e68: b880 cmpl %d0,%d4 <== NOT EXECUTED 47e6a: 6762 beqs 47ece <_CORE_spinlock_Wait+0x8a> <== NOT EXECUTED
(the_spinlock->holder == _Thread_Executing->Object.id) ) {
_ISR_Enable( level );
return CORE_SPINLOCK_HOLDER_RELOCKING;
}
the_spinlock->users += 1;
47e6c: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 47e70: 5280 addql #1,%d0 <== NOT EXECUTED 47e72: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
for ( ;; ) {
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
47e76: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47e7a: 6730 beqs 47eac <_CORE_spinlock_Wait+0x68> <== NOT EXECUTED
}
/*
* Spinlock is unavailable. If not willing to wait, return.
*/
if ( !wait ) {
47e7c: 4a03 tstb %d3 <== NOT EXECUTED 47e7e: 676c beqs 47eec <_CORE_spinlock_Wait+0xa8> <== NOT EXECUTED 47e80: 47f9 0004 920e lea 4920e <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
/* Another thread could get dispatched here */
/* Reenter the critical sections so we can attempt the lock again. */
_Thread_Disable_dispatch();
_ISR_Disable( level );
47e86: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED
*
* A spinlock cannot be deleted while it is being used so we are
* safe from deletion.
*/
_ISR_Enable( level );
47e8c: 46c1 movew %d1,%sr <== NOT EXECUTED
/* An ISR could occur here */
_Thread_Enable_dispatch();
47e8e: 4e93 jsr %a3@ <== NOT EXECUTED 47e90: 2039 0006 0e0c movel 60e0c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47e96: 5280 addql #1,%d0 <== NOT EXECUTED 47e98: 23c0 0006 0e0c movel %d0,60e0c <_Thread_Dispatch_disable_level><== NOT EXECUTED
/* Another thread could get dispatched here */
/* Reenter the critical sections so we can attempt the lock again. */
_Thread_Disable_dispatch();
_ISR_Disable( level );
47e9e: 2002 movel %d2,%d0 <== NOT EXECUTED 47ea0: 40c1 movew %sr,%d1 <== NOT EXECUTED 47ea2: 8081 orl %d1,%d0 <== NOT EXECUTED 47ea4: 46c0 movew %d0,%sr <== NOT EXECUTED
_ISR_Enable( level );
return CORE_SPINLOCK_HOLDER_RELOCKING;
}
the_spinlock->users += 1;
for ( ;; ) {
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
47ea6: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47eaa: 66e0 bnes 47e8c <_CORE_spinlock_Wait+0x48> <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_LOCKED;
the_spinlock->holder = _Thread_Executing->Object.id;
47eac: 2079 0006 129c moveal 6129c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
return CORE_SPINLOCK_HOLDER_RELOCKING;
}
the_spinlock->users += 1;
for ( ;; ) {
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
the_spinlock->lock = CORE_SPINLOCK_LOCKED;
47eb2: 7001 moveq #1,%d0 <== NOT EXECUTED 47eb4: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
the_spinlock->holder = _Thread_Executing->Object.id;
47eb8: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 47ebc: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
_ISR_Enable( level );
47ec0: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_SUCCESSFUL;
47ec2: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47ec4: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47eca: 4e5e unlk %fp <== NOT EXECUTED 47ecc: 4e75 rts <== NOT EXECUTED
Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout;
#endif
_ISR_Disable( level );
if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) &&
(the_spinlock->holder == _Thread_Executing->Object.id) ) {
47ece: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 47ed2: 2079 0006 129c moveal 6129c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout;
#endif
_ISR_Disable( level );
if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) &&
47ed8: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 47edc: 668e bnes 47e6c <_CORE_spinlock_Wait+0x28> <== NOT EXECUTED
(the_spinlock->holder == _Thread_Executing->Object.id) ) {
_ISR_Enable( level );
47ede: 46c2 movew %d2,%sr <== NOT EXECUTED
return CORE_SPINLOCK_HOLDER_RELOCKING;
47ee0: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47ee2: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47ee8: 4e5e unlk %fp <== NOT EXECUTED 47eea: 4e75 rts <== NOT EXECUTED
/*
* Spinlock is unavailable. If not willing to wait, return.
*/
if ( !wait ) {
the_spinlock->users -= 1;
47eec: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 47ef0: 5380 subql #1,%d0 <== NOT EXECUTED 47ef2: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
_ISR_Enable( level );
47ef6: 46c2 movew %d2,%sr <== NOT EXECUTED
return CORE_SPINLOCK_UNAVAILABLE;
47ef8: 7005 moveq #5,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47efa: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47f00: 4e5e unlk %fp <== NOT EXECUTED
00047678 <_Chain_Append_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
47678: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Append_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
4767e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47682: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 47686: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47688: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4768c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
4768e: 40c2 movew %sr,%d2 <== NOT EXECUTED 47690: 8082 orl %d2,%d0 <== NOT EXECUTED 47692: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
47694: 2209 movel %a1,%d1 <== NOT EXECUTED 47696: 5881 addql #4,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
47698: b291 cmpl %a1@,%d1 <== NOT EXECUTED 4769a: 57c0 seq %d0 <== NOT EXECUTED
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
4769c: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
476a0: 4480 negl %d0 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
476a2: 2081 movel %d1,%a0@ <== NOT EXECUTED
old_last_node = the_chain->last; the_chain->last = the_node;
476a4: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
old_last_node->next = the_node;
476a8: 2488 movel %a0,%a2@ <== NOT EXECUTED
the_node->previous = old_last_node;
476aa: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
was_empty = _Chain_Append_with_empty_check_unprotected( chain, node ); _ISR_Enable( level );
476ae: 46c2 movew %d2,%sr <== NOT EXECUTED
return was_empty;
}
476b0: 241f movel %sp@+,%d2 <== NOT EXECUTED 476b2: 245f moveal %sp@+,%a2 <== NOT EXECUTED 476b4: 4e5e unlk %fp <== NOT EXECUTED
00047718 <_Chain_Get_with_empty_check>:
)
{
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
47718: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Get_with_empty_check(
Chain_Control *chain,
Chain_Node **node
)
{
4771e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47722: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 47726: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4772a: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
4772e: 40c1 movew %sr,%d1 <== NOT EXECUTED 47730: 8081 orl %d1,%d0 <== NOT EXECUTED 47732: 46c0 movew %d0,%sr <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node **the_node
)
{
bool is_empty_now = true;
Chain_Node *first = the_chain->first;
47734: 204a moveal %a2,%a0 <== NOT EXECUTED 47736: 2258 moveal %a0@+,%a1 <== NOT EXECUTED
if ( first != _Chain_Tail( the_chain ) ) {
47738: b1c9 cmpal %a1,%a0 <== NOT EXECUTED 4773a: 671a beqs 47756 <_Chain_Get_with_empty_check+0x3e><== NOT EXECUTED
Chain_Node *new_first = first->next;
4773c: 2651 moveal %a1@,%a3 <== NOT EXECUTED
the_chain->first = new_first;
new_first->previous = _Chain_Head( the_chain );
*the_node = first;
is_empty_now = new_first == _Chain_Tail( the_chain );
4773e: b7c8 cmpal %a0,%a3 <== NOT EXECUTED 47740: 57c0 seq %d0 <== NOT EXECUTED
Chain_Node *first = the_chain->first;
if ( first != _Chain_Tail( the_chain ) ) {
Chain_Node *new_first = first->next;
the_chain->first = new_first;
47742: 248b movel %a3,%a2@ <== NOT EXECUTED
new_first->previous = _Chain_Head( the_chain );
*the_node = first;
is_empty_now = new_first == _Chain_Tail( the_chain );
47744: 4480 negl %d0 <== NOT EXECUTED
if ( first != _Chain_Tail( the_chain ) ) {
Chain_Node *new_first = first->next;
the_chain->first = new_first;
new_first->previous = _Chain_Head( the_chain );
47746: 274a 0004 movel %a2,%a3@(4) <== NOT EXECUTED
*the_node = first;
4774a: 2889 movel %a1,%a4@ <== NOT EXECUTED
is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node ); _ISR_Enable( level );
4774c: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
4774e: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED 47752: 4e5e unlk %fp <== NOT EXECUTED 47754: 4e75 rts <== NOT EXECUTED
is_empty_now = new_first == _Chain_Tail( the_chain );
} else
*the_node = NULL;
47756: 4294 clrl %a4@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Get_with_empty_check_unprotected(
Chain_Control *the_chain,
Chain_Node **the_node
)
{
bool is_empty_now = true;
47758: 7001 moveq #1,%d0 <== NOT EXECUTED
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
4775a: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
4775c: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED 47760: 4e5e unlk %fp <== NOT EXECUTED
0004c444 <_Chain_Initialize>:
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4c444: 4e56 fff0 linkw %fp,#-16 4c448: 202e 0010 movel %fp@(16),%d0 4c44c: 48d7 041c moveml %d2-%d4/%a2,%sp@ 4c450: 246e 0008 moveal %fp@(8),%a2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Head(
Chain_Control *the_chain
)
{
return (Chain_Node *) the_chain;
4c454: 224a moveal %a2,%a1 4c456: 262e 000c movel %fp@(12),%d3 4c45a: 242e 0014 movel %fp@(20),%d2
Chain_Node *current;
Chain_Node *next;
count = number_nodes;
current = _Chain_Head( the_chain );
the_chain->permanent_null = NULL;
4c45e: 42aa 0004 clrl %a2@(4)
next = starting_address;
while ( count-- ) {
4c462: 4a80 tstl %d0
4c464: 6730 beqs 4c496 <_Chain_Initialize+0x52> <== NEVER TAKEN
Chain_Node *next;
count = number_nodes;
current = _Chain_Head( the_chain );
the_chain->permanent_null = NULL;
next = starting_address;
4c466: 2043 moveal %d3,%a0
while ( count-- ) {
4c468: 5380 subql #1,%d0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c46a: 2208 movel %a0,%d1
count = number_nodes;
current = _Chain_Head( the_chain );
the_chain->permanent_null = NULL;
next = starting_address;
while ( count-- ) {
4c46c: 2800 movel %d0,%d4
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c46e: d282 addl %d2,%d1
count = number_nodes;
current = _Chain_Head( the_chain );
the_chain->permanent_null = NULL;
next = starting_address;
while ( count-- ) {
current->next = next;
4c470: 2288 movel %a0,%a1@
next->previous = current;
4c472: 2149 0004 movel %a1,%a0@(4)
count = number_nodes;
current = _Chain_Head( the_chain );
the_chain->permanent_null = NULL;
next = starting_address;
while ( count-- ) {
4c476: 4a80 tstl %d0
4c478: 6714 beqs 4c48e <_Chain_Initialize+0x4a>
4c47a: 2248 moveal %a0,%a1
current->next = next;
next->previous = current;
current = next;
next = (Chain_Node *)
4c47c: 2041 moveal %d1,%a0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c47e: 2208 movel %a0,%d1 4c480: 5380 subql #1,%d0 4c482: d282 addl %d2,%d1
count = number_nodes;
current = _Chain_Head( the_chain );
the_chain->permanent_null = NULL;
next = starting_address;
while ( count-- ) {
current->next = next;
4c484: 2288 movel %a0,%a1@
next->previous = current;
4c486: 2149 0004 movel %a1,%a0@(4)
count = number_nodes;
current = _Chain_Head( the_chain );
the_chain->permanent_null = NULL;
next = starting_address;
while ( count-- ) {
4c48a: 4a80 tstl %d0
4c48c: 66ec bnes 4c47a <_Chain_Initialize+0x36>
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c48e: 4c04 2800 mulsl %d4,%d2
count = number_nodes;
current = _Chain_Head( the_chain );
the_chain->permanent_null = NULL;
next = starting_address;
while ( count-- ) {
4c492: 2243 moveal %d3,%a1 4c494: d3c2 addal %d2,%a1
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4c496: 200a movel %a2,%d0 4c498: 5880 addql #4,%d0 4c49a: 2280 movel %d0,%a1@
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = _Chain_Tail( the_chain );
the_chain->last = current;
4c49c: 2549 0008 movel %a1,%a2@(8)
}
4c4a0: 4cd7 041c moveml %sp@,%d2-%d4/%a2
4c4a4: 4e5e unlk %fp <== NOT EXECUTED
000477d0 <_Chain_Prepend_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
477d0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Prepend_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
477d6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 477da: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 477de: 2f0a movel %a2,%sp@- <== NOT EXECUTED 477e0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
477e4: 40c1 movew %sr,%d1 <== NOT EXECUTED 477e6: 8081 orl %d1,%d0 <== NOT EXECUTED 477e8: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
477ea: 2008 movel %a0,%d0 <== NOT EXECUTED 477ec: 5880 addql #4,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
477ee: b090 cmpl %a0@,%d0 <== NOT EXECUTED 477f0: 57c0 seq %d0 <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
477f2: 2450 moveal %a0@,%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
477f4: 4480 negl %d0 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
477f6: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
before_node = after_node->next; after_node->next = the_node;
477fa: 2089 movel %a1,%a0@ <== NOT EXECUTED
the_node->next = before_node; before_node->previous = the_node;
477fc: 2549 0004 movel %a1,%a2@(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;
47800: 228a movel %a2,%a1@ <== NOT EXECUTED
was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node ); _ISR_Enable( level );
47802: 46c1 movew %d1,%sr <== NOT EXECUTED
return was_empty;
}
47804: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47806: 4e5e unlk %fp <== NOT EXECUTED
...
00045e24 <_Event_Seize>:
executing = _Thread_Executing;
executing->Wait.return_code = RTEMS_SUCCESSFUL;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
_ISR_Disable( level );
45e24: 203c 0000 0700 movel #1792,%d0
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45e2a: 4e56 ffec linkw %fp,#-20 45e2e: 222e 0008 movel %fp@(8),%d1 45e32: 48d7 043c moveml %d2-%d5/%a2,%sp@
rtems_event_set pending_events;
ISR_Level level;
RTEMS_API_Control *api;
Thread_blocking_operation_States sync_state;
executing = _Thread_Executing;
45e36: 2479 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a2
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45e3c: 242e 000c movel %fp@(12),%d2 45e40: 2a2e 0010 movel %fp@(16),%d5 45e44: 226e 0014 moveal %fp@(20),%a1
ISR_Level level;
RTEMS_API_Control *api;
Thread_blocking_operation_States sync_state;
executing = _Thread_Executing;
executing->Wait.return_code = RTEMS_SUCCESSFUL;
45e48: 42aa 0034 clrl %a2@(52)
api = executing->API_Extensions[ THREAD_API_RTEMS ];
45e4c: 206a 010a moveal %a2@(266),%a0
_ISR_Disable( level );
45e50: 40c4 movew %sr,%d4 45e52: 8084 orl %d4,%d0 45e54: 46c0 movew %d0,%sr
pending_events = api->pending_events;
45e56: 2610 movel %a0@,%d3
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 );
45e58: 2001 movel %d1,%d0 45e5a: c083 andl %d3,%d0
seized_events = _Event_sets_Get( pending_events, event_in );
if ( !_Event_sets_Is_empty( seized_events ) &&
45e5c: 670c beqs 45e6a <_Event_Seize+0x46>
45e5e: b081 cmpl %d1,%d0 45e60: 6700 0084 beqw 45ee6 <_Event_Seize+0xc2>
(seized_events == event_in || _Options_Is_any( option_set )) ) {
45e64: 0802 0001 btst #1,%d2 <== NOT EXECUTED 45e68: 667c bnes 45ee6 <_Event_Seize+0xc2> <== NOT EXECUTED
_ISR_Enable( level );
*event_out = seized_events;
return;
}
if ( _Options_Is_no_wait( option_set ) ) {
45e6a: 0802 0000 btst #0,%d2
45e6e: 6662 bnes 45ed2 <_Event_Seize+0xae> <== NEVER TAKEN
* set properly when we are marked as in the event critical section. * * NOTE: Since interrupts are disabled, this isn't that much of an * issue but better safe than sorry. */ executing->Wait.option = (uint32_t) option_set;
45e70: 2542 0030 movel %d2,%a2@(48)
executing->Wait.count = (uint32_t) event_in;
executing->Wait.return_argument = event_out;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
45e74: 7401 moveq #1,%d2
* * NOTE: Since interrupts are disabled, this isn't that much of an * issue but better safe than sorry. */ executing->Wait.option = (uint32_t) option_set; executing->Wait.count = (uint32_t) event_in;
45e76: 2541 0024 movel %d1,%a2@(36)
executing->Wait.return_argument = event_out;
45e7a: 2549 0028 movel %a1,%a2@(40)
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
45e7e: 23c2 0006 04ca movel %d2,604ca <_Event_Sync_state>
_ISR_Enable( level );
45e84: 46c4 movew %d4,%sr
if ( ticks ) {
45e86: 4a85 tstl %d5
45e88: 6672 bnes 45efc <_Event_Seize+0xd8>
NULL
);
_Watchdog_Insert_ticks( &executing->Timer, ticks );
}
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
45e8a: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> 45e8e: 2f0a movel %a2,%sp@- 45e90: 4eb9 0004 90a8 jsr 490a8 <_Thread_Set_state>
_ISR_Disable( level );
45e96: 203c 0000 0700 movel #1792,%d0 45e9c: 40c1 movew %sr,%d1 45e9e: 8081 orl %d1,%d0 45ea0: 46c0 movew %d0,%sr
sync_state = _Event_Sync_state;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45ea2: 7401 moveq #1,%d2 45ea4: 508f addql #8,%sp
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
_ISR_Disable( level );
sync_state = _Event_Sync_state;
45ea6: 2039 0006 04ca movel 604ca <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45eac: 42b9 0006 04ca clrl 604ca <_Event_Sync_state>
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45eb2: b480 cmpl %d0,%d2 45eb4: 6700 00a4 beqw 45f5a <_Event_Seize+0x136>
* An interrupt completed the thread's blocking request. * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level );
45eb8: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED 45ebc: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
}
45ec0: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
* An interrupt completed the thread's blocking request. * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level );
45ec6: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45eca: 4e5e unlk %fp <== NOT EXECUTED
* An interrupt completed the thread's blocking request. * The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level );
45ecc: 4ef9 0004 814c jmp 4814c <_Thread_blocking_operation_Cancel><== NOT EXECUTED
*event_out = seized_events;
return;
}
if ( _Options_Is_no_wait( option_set ) ) {
_ISR_Enable( level );
45ed2: 46c4 movew %d4,%sr <== NOT EXECUTED
executing->Wait.return_code = RTEMS_UNSATISFIED;
45ed4: 720d moveq #13,%d1 <== NOT EXECUTED 45ed6: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
* The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); }
45eda: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
}
if ( _Options_Is_no_wait( option_set ) ) {
_ISR_Enable( level );
executing->Wait.return_code = RTEMS_UNSATISFIED;
*event_out = seized_events;
45ee0: 2280 movel %d0,%a1@ <== NOT EXECUTED
* The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); }
45ee2: 4e5e unlk %fp <== NOT EXECUTED 45ee4: 4e75 rts <== NOT EXECUTED
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) );
45ee6: 2200 movel %d0,%d1 45ee8: 4681 notl %d1 45eea: c283 andl %d3,%d1 45eec: 2081 movel %d1,%a0@
if ( !_Event_sets_Is_empty( seized_events ) &&
(seized_events == event_in || _Options_Is_any( option_set )) ) {
api->pending_events =
_Event_sets_Clear( pending_events, seized_events );
_ISR_Enable( level );
45eee: 46c4 movew %d4,%sr
*event_out = seized_events;
45ef0: 2280 movel %d0,%a1@
* The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); }
45ef2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 45ef8: 4e5e unlk %fp 45efa: 4e75 rts
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
_ISR_Enable( level );
if ( ticks ) {
_Watchdog_Initialize(
45efc: 202a 0008 movel %a2@(8),%d0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45f00: 223c 0004 60ec movel #286956,%d1
the_watchdog->id = id;
45f06: 2540 0068 movel %d0,%a2@(104)
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45f0a: 2541 0064 movel %d1,%a2@(100)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
45f0e: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data;
45f12: 42aa 006c clrl %a2@(108)
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
45f16: 2545 0054 movel %d5,%a2@(84)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
45f1a: 486a 0048 pea %a2@(72) 45f1e: 4879 0005 fd4e pea 5fd4e <_Watchdog_Ticks_chain> 45f24: 4eb9 0004 98ec jsr 498ec <_Watchdog_Insert> 45f2a: 508f addql #8,%sp
NULL
);
_Watchdog_Insert_ticks( &executing->Timer, ticks );
}
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
45f2c: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> 45f30: 2f0a movel %a2,%sp@- 45f32: 4eb9 0004 90a8 jsr 490a8 <_Thread_Set_state>
_ISR_Disable( level );
45f38: 203c 0000 0700 movel #1792,%d0 45f3e: 40c1 movew %sr,%d1 45f40: 8081 orl %d1,%d0 45f42: 46c0 movew %d0,%sr
sync_state = _Event_Sync_state;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45f44: 7401 moveq #1,%d2 45f46: 508f addql #8,%sp
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
_ISR_Disable( level );
sync_state = _Event_Sync_state;
45f48: 2039 0006 04ca movel 604ca <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45f4e: 42b9 0006 04ca clrl 604ca <_Event_Sync_state>
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45f54: b480 cmpl %d0,%d2 45f56: 6600 ff60 bnew 45eb8 <_Event_Seize+0x94>
_ISR_Enable( level );
45f5a: 46c1 movew %d1,%sr
* The blocking thread was satisfied by an ISR or timed out. * * WARNING! Returning with interrupts disabled! */ _Thread_blocking_operation_Cancel( sync_state, executing, level ); }
45f5c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 45f62: 4e5e unlk %fp
...
00045fc4 <_Event_Surrender>:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
option_set = (rtems_option) the_thread->Wait.option;
_ISR_Disable( level );
45fc4: 203c 0000 0700 movel #1792,%d0
*/
void _Event_Surrender(
Thread_Control *the_thread
)
{
45fca: 4e56 ffec linkw %fp,#-20 45fce: 48d7 043c moveml %d2-%d5/%a2,%sp@ 45fd2: 246e 0008 moveal %fp@(8),%a2
rtems_event_set event_condition;
rtems_event_set seized_events;
rtems_option option_set;
RTEMS_API_Control *api;
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
45fd6: 206a 010a moveal %a2@(266),%a0
option_set = (rtems_option) the_thread->Wait.option;
45fda: 282a 0030 movel %a2@(48),%d4
_ISR_Disable( level );
45fde: 40c3 movew %sr,%d3 45fe0: 8083 orl %d3,%d0 45fe2: 46c0 movew %d0,%sr
pending_events = api->pending_events; event_condition = (rtems_event_set) the_thread->Wait.count;
45fe4: 222a 0024 movel %a2@(36),%d1
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 );
45fe8: 2001 movel %d1,%d0
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
option_set = (rtems_option) the_thread->Wait.option;
_ISR_Disable( level );
pending_events = api->pending_events;
45fea: 2410 movel %a0@,%d2 45fec: c082 andl %d2,%d0
seized_events = _Event_sets_Get( pending_events, event_condition );
/*
* No events were seized in this operation
*/
if ( _Event_sets_Is_empty( seized_events ) ) {
45fee: 6776 beqs 46066 <_Event_Surrender+0xa2>
/*
* 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() &&
45ff0: 4ab9 0006 0118 tstl 60118 <_Per_CPU_Information+0x8>
45ff6: 670a beqs 46002 <_Event_Surrender+0x3e> <== ALWAYS TAKEN
45ff8: b5f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 45ffe: 6700 00a0 beqw 460a0 <_Event_Surrender+0xdc> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_EVENT);
46002: 2a2a 0010 movel %a2@(16),%d5 46006: 0285 0000 0100 andil #256,%d5
}
/*
* Otherwise, this is a normal send to another thread
*/
if ( _States_Is_waiting_for_event( the_thread->current_state ) ) {
4600c: 674c beqs 4605a <_Event_Surrender+0x96> <== NEVER TAKEN
if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
4600e: b081 cmpl %d1,%d0
46010: 6706 beqs 46018 <_Event_Surrender+0x54> <== ALWAYS TAKEN
46012: 0804 0001 btst #1,%d4 <== NOT EXECUTED 46016: 6742 beqs 4605a <_Event_Surrender+0x96> <== NOT EXECUTED
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) );
46018: 2200 movel %d0,%d1 4601a: 4681 notl %d1 4601c: c282 andl %d2,%d1 4601e: 2081 movel %d1,%a0@
api->pending_events = _Event_sets_Clear( pending_events, seized_events );
the_thread->Wait.count = 0;
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
46020: 206a 0028 moveal %a2@(40),%a0
* Otherwise, this is a normal send to another thread
*/
if ( _States_Is_waiting_for_event( the_thread->current_state ) ) {
if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
api->pending_events = _Event_sets_Clear( pending_events, seized_events );
the_thread->Wait.count = 0;
46024: 42aa 0024 clrl %a2@(36)
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
46028: 2080 movel %d0,%a0@
_ISR_Flash( level );
4602a: 203c 0000 0700 movel #1792,%d0 46030: 46c3 movew %d3,%sr 46032: 8083 orl %d3,%d0 46034: 46c0 movew %d0,%sr
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
46036: 7a02 moveq #2,%d5 46038: baaa 0050 cmpl %a2@(80),%d5
4603c: 6734 beqs 46072 <_Event_Surrender+0xae>
_ISR_Enable( level );
4603e: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
46040: 2f3c 1003 fff8 movel #268697592,%sp@- 46046: 2f0a movel %a2,%sp@- 46048: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> 4604e: 508f addql #8,%sp
}
return;
}
}
_ISR_Enable( level );
}
46050: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 46056: 4e5e unlk %fp 46058: 4e75 rts
_Thread_Unblock( the_thread );
}
return;
}
}
_ISR_Enable( level );
4605a: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4605c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 46062: 4e5e unlk %fp <== NOT EXECUTED 46064: 4e75 rts <== NOT EXECUTED
/*
* No events were seized in this operation
*/
if ( _Event_sets_Is_empty( seized_events ) ) {
_ISR_Enable( level );
46066: 46c3 movew %d3,%sr
}
return;
}
}
_ISR_Enable( level );
}
46068: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 4606e: 4e5e unlk %fp 46070: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
46072: 7003 moveq #3,%d0 46074: 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 );
46078: 46c3 movew %d3,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
4607a: 486a 0048 pea %a2@(72) 4607e: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> 46084: 2f3c 1003 fff8 movel #268697592,%sp@- 4608a: 2f0a movel %a2,%sp@- 4608c: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> 46092: 4fef 000c lea %sp@(12),%sp
}
return;
}
}
_ISR_Enable( level );
}
46096: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 4609c: 4e5e unlk %fp 4609e: 4e75 rts
* 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 ) &&
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
460a0: 2279 0006 04ca moveal 604ca <_Event_Sync_state>,%a1 <== NOT EXECUTED
/*
* 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 ) &&
460a6: 7a02 moveq #2,%d5 <== NOT EXECUTED 460a8: ba89 cmpl %a1,%d5 <== NOT EXECUTED 460aa: 6710 beqs 460bc <_Event_Surrender+0xf8> <== NOT EXECUTED
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
460ac: 2279 0006 04ca moveal 604ca <_Event_Sync_state>,%a1 <== NOT EXECUTED
* 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 ) &&
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
460b2: 1a3c 0001 moveb #1,%d5 <== NOT EXECUTED 460b6: ba89 cmpl %a1,%d5 <== NOT EXECUTED 460b8: 6600 ff48 bnew 46002 <_Event_Surrender+0x3e> <== NOT EXECUTED
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
460bc: b081 cmpl %d1,%d0 <== NOT EXECUTED 460be: 6706 beqs 460c6 <_Event_Surrender+0x102> <== NOT EXECUTED 460c0: 0804 0001 btst #1,%d4 <== NOT EXECUTED 460c4: 671a beqs 460e0 <_Event_Surrender+0x11c> <== NOT EXECUTED 460c6: 2200 movel %d0,%d1 <== NOT EXECUTED 460c8: 4681 notl %d1 <== NOT EXECUTED 460ca: c282 andl %d2,%d1 <== NOT EXECUTED 460cc: 2081 movel %d1,%a0@ <== NOT EXECUTED
api->pending_events = _Event_sets_Clear( pending_events,seized_events );
the_thread->Wait.count = 0;
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
460ce: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
_Thread_Is_executing( the_thread ) &&
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
api->pending_events = _Event_sets_Clear( pending_events,seized_events );
the_thread->Wait.count = 0;
460d2: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
460d6: 2080 movel %d0,%a0@ <== NOT EXECUTED
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
460d8: 7003 moveq #3,%d0 <== NOT EXECUTED 460da: 23c0 0006 04ca movel %d0,604ca <_Event_Sync_state> <== NOT EXECUTED
}
_ISR_Enable( level );
460e0: 46c3 movew %d3,%sr <== NOT EXECUTED
}
return;
}
}
_ISR_Enable( level );
}
460e2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 460e8: 4e5e unlk %fp <== NOT EXECUTED
000460ec <_Event_Timeout>:
void _Event_Timeout(
Objects_Id id,
void *ignored
)
{
460ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 460f0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 460f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
ISR_Level level;
the_thread = _Thread_Get( id, &location );
460f4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 460f8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 460fc: 4eb9 0004 870c jsr 4870c <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
46102: 508f addql #8,%sp <== NOT EXECUTED 46104: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46108: 6642 bnes 4614c <_Event_Timeout+0x60> <== NOT EXECUTED
*
* 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 );
4610a: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 46110: 40c2 movew %sr,%d2 <== NOT EXECUTED 46112: 8282 orl %d2,%d1 <== NOT EXECUTED 46114: 46c1 movew %d1,%sr <== NOT EXECUTED
_ISR_Enable( level );
return;
}
#endif
the_thread->Wait.count = 0;
46116: 2040 moveal %d0,%a0 <== NOT EXECUTED 46118: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED
if ( _Thread_Is_executing( the_thread ) ) {
4611c: b0b9 0006 011c cmpl 6011c <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 46122: 6734 beqs 46158 <_Event_Timeout+0x6c> <== NOT EXECUTED
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
46124: 7606 moveq #6,%d3 <== NOT EXECUTED 46126: 2040 moveal %d0,%a0 <== NOT EXECUTED 46128: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED
_ISR_Enable( level );
4612c: 46c2 movew %d2,%sr <== NOT EXECUTED 4612e: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 46134: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46136: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> <== NOT EXECUTED
_Thread_Unblock( the_thread );
_Thread_Unnest_dispatch();
break;
4613c: 508f addql #8,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4613e: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46144: 5380 subql #1,%d0 <== NOT EXECUTED 46146: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
4614c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 46150: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 46154: 4e5e unlk %fp <== NOT EXECUTED 46156: 4e75 rts <== NOT EXECUTED
}
#endif
the_thread->Wait.count = 0;
if ( _Thread_Is_executing( the_thread ) ) {
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
46158: 2239 0006 04ca movel 604ca <_Event_Sync_state>,%d1 <== NOT EXECUTED 4615e: 7601 moveq #1,%d3 <== NOT EXECUTED 46160: b681 cmpl %d1,%d3 <== NOT EXECUTED 46162: 66c0 bnes 46124 <_Event_Timeout+0x38> <== NOT EXECUTED
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
46164: 7606 moveq #6,%d3 <== NOT EXECUTED 46166: 2040 moveal %d0,%a0 <== NOT EXECUTED
#endif
the_thread->Wait.count = 0;
if ( _Thread_Is_executing( the_thread ) ) {
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
46168: 7202 moveq #2,%d1 <== NOT EXECUTED
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
4616a: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED
#endif
the_thread->Wait.count = 0;
if ( _Thread_Is_executing( the_thread ) ) {
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4616e: 23c1 0006 04ca movel %d1,604ca <_Event_Sync_state> <== NOT EXECUTED
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
_ISR_Enable( level );
46174: 46c2 movew %d2,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
46176: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4617c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4617e: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> <== NOT EXECUTED
_Thread_Unblock( the_thread );
_Thread_Unnest_dispatch();
break;
46184: 508f addql #8,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
46186: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4618c: 5380 subql #1,%d0 <== NOT EXECUTED 4618e: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED 46194: 60b6 bras 4614c <_Event_Timeout+0x60> <== NOT EXECUTED
...
0004c688 <_Heap_Allocate_aligned_with_boundary>:
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4c688: 4e56 ffcc linkw %fp,#-52 4c68c: 226e 000c moveal %fp@(12),%a1 4c690: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4c694: 246e 0008 moveal %fp@(8),%a2
Heap_Statistics *const stats = &heap->stats; uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
4c698: 2e09 movel %a1,%d7 4c69a: 5887 addql #4,%d7
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4c69c: 202a 0010 movel %a2@(16),%d0
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4c6a0: 222e 0010 movel %fp@(16),%d1 4c6a4: 282e 0014 movel %fp@(20),%d4
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;
4c6a8: 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 ) {
4c6ac: be89 cmpl %a1,%d7 4c6ae: 6500 014e bcsw 4c7fe <_Heap_Allocate_aligned_with_boundary+0x176>
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
4c6b2: 4a84 tstl %d4 4c6b4: 6600 0144 bnew 4c7fa <_Heap_Allocate_aligned_with_boundary+0x172>
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c6b8: 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 ) {
4c6bc: b1ca cmpal %a2,%a0 4c6be: 6700 013e beqw 4c7fe <_Heap_Allocate_aligned_with_boundary+0x176>
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
4c6c2: 242e fffc movel %fp@(-4),%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c6c6: 7c04 moveq #4,%d6
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
4c6c8: 5e82 addql #7,%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c6ca: 9c89 subl %a1,%d6
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4c6cc: 7601 moveq #1,%d3 4c6ce: 2647 moveal %d7,%a3
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
4c6d0: 2d42 fff8 movel %d2,%fp@(-8)
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c6d4: 2d46 fff4 movel %d6,%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 ) {
4c6d8: 2028 0004 movel %a0@(4),%d0 4c6dc: b08b cmpl %a3,%d0
4c6de: 630e blss 4c6ee <_Heap_Allocate_aligned_with_boundary+0x66>
if ( alignment == 0 ) {
4c6e0: 4a81 tstl %d1
4c6e2: 661c bnes 4c700 <_Heap_Allocate_aligned_with_boundary+0x78>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
4c6e4: 2408 movel %a0,%d2 4c6e6: 5082 addql #8,%d2
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4c6e8: 4a82 tstl %d2 4c6ea: 6600 00de bnew 4c7ca <_Heap_Allocate_aligned_with_boundary+0x142>
break;
}
block = block->next;
4c6ee: 2003 movel %d3,%d0 4c6f0: 5280 addql #1,%d0 4c6f2: 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 ) {
4c6f6: b1ca cmpal %a2,%a0 4c6f8: 6700 0110 beqw 4c80a <_Heap_Allocate_aligned_with_boundary+0x182>
4c6fc: 2600 movel %d0,%d3 <== NOT EXECUTED 4c6fe: 60d8 bras 4c6d8 <_Heap_Allocate_aligned_with_boundary+0x50><== NOT EXECUTED
- 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;
4c700: 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;
4c702: 4be8 0008 lea %a0@(8),%a5
- 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;
4c706: c087 andl %d7,%d0
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c708: 286a 0014 moveal %a2@(20),%a4
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;
4c70c: 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;
4c70e: 2a2e fff8 movel %fp@(-8),%d5 4c712: 9a8c subl %a4,%d5
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
uintptr_t alloc_begin = alloc_end - alloc_size;
4c714: 242e fff4 movel %fp@(-12),%d2 4c718: d480 addl %d0,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c71a: 2c02 movel %d2,%d6
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
4c71c: d085 addl %d5,%d0 4c71e: 4c41 6005 remul %d1,%d5,%d6 4c722: 9485 subl %d5,%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 ) {
4c724: b480 cmpl %d0,%d2
4c726: 630a blss 4c732 <_Heap_Allocate_aligned_with_boundary+0xaa><== ALWAYS TAKEN
4c728: 2a00 movel %d0,%d5 <== NOT EXECUTED 4c72a: 4c41 5002 remul %d1,%d2,%d5 <== NOT EXECUTED 4c72e: 9082 subl %d2,%d0 <== NOT EXECUTED 4c730: 2400 movel %d0,%d2 <== NOT EXECUTED
}
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
4c732: 4a84 tstl %d4
4c734: 676a beqs 4c7a0 <_Heap_Allocate_aligned_with_boundary+0x118><== ALWAYS TAKEN
/* 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;
4c736: 2002 movel %d2,%d0 <== NOT EXECUTED 4c738: d089 addl %a1,%d0 <== NOT EXECUTED 4c73a: 2c00 movel %d0,%d6 <== NOT EXECUTED 4c73c: 4c44 6005 remul %d4,%d5,%d6 <== NOT EXECUTED 4c740: 2c00 movel %d0,%d6 <== NOT EXECUTED 4c742: 9c85 subl %d5,%d6 <== NOT EXECUTED 4c744: 2a06 movel %d6,%d5 <== NOT EXECUTED
/* 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 ) {
4c746: bc82 cmpl %d2,%d6 <== NOT EXECUTED 4c748: 6356 blss 4c7a0 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED 4c74a: bc80 cmpl %d0,%d6 <== NOT EXECUTED 4c74c: 6452 bccs 4c7a0 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
4c74e: 2c0d movel %a5,%d6 <== NOT EXECUTED 4c750: dc89 addl %a1,%d6 <== NOT EXECUTED
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
if ( boundary_line < boundary_floor ) {
4c752: ba86 cmpl %d6,%d5 <== NOT EXECUTED 4c754: 6598 bcss 4c6ee <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4c756: 2405 movel %d5,%d2 <== NOT EXECUTED 4c758: 9489 subl %a1,%d2 <== NOT EXECUTED 4c75a: 2a02 movel %d2,%d5 <== NOT EXECUTED 4c75c: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED 4c760: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4c762: 2002 movel %d2,%d0 <== NOT EXECUTED 4c764: d089 addl %a1,%d0 <== NOT EXECUTED 4c766: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c768: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED 4c76c: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c76e: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c770: 2a07 movel %d7,%d5 <== NOT EXECUTED
/* 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 ) {
4c772: be82 cmpl %d2,%d7 <== NOT EXECUTED 4c774: 632a blss 4c7a0 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED 4c776: be80 cmpl %d0,%d7 <== NOT EXECUTED 4c778: 6426 bccs 4c7a0 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
if ( boundary_line < boundary_floor ) {
4c77a: ba86 cmpl %d6,%d5 <== NOT EXECUTED 4c77c: 6500 ff70 bcsw 4c6ee <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4c780: 2405 movel %d5,%d2 <== NOT EXECUTED 4c782: 9489 subl %a1,%d2 <== NOT EXECUTED 4c784: 2a02 movel %d2,%d5 <== NOT EXECUTED 4c786: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED 4c78a: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4c78c: 2002 movel %d2,%d0 <== NOT EXECUTED 4c78e: d089 addl %a1,%d0 <== NOT EXECUTED 4c790: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c792: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED 4c796: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c798: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c79a: 2a07 movel %d7,%d5 <== NOT EXECUTED
/* 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 ) {
4c79c: be82 cmpl %d2,%d7 <== NOT EXECUTED 4c79e: 62d6 bhis 4c776 <_Heap_Allocate_aligned_with_boundary+0xee><== NOT EXECUTED
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 ) {
4c7a0: b48d cmpl %a5,%d2 4c7a2: 6500 ff4a bcsw 4c6ee <_Heap_Allocate_aligned_with_boundary+0x66> 4c7a6: 2e2e fffc movel %fp@(-4),%d7 4c7aa: 2c02 movel %d2,%d6 4c7ac: 70f8 moveq #-8,%d0 4c7ae: 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);
4c7b0: d082 addl %d2,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c7b2: 4c47 6005 remul %d7,%d5,%d6
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;
4c7b6: 9085 subl %d5,%d0
if ( free_size >= min_block_size || free_size == 0 ) {
4c7b8: b08c cmpl %a4,%d0 4c7ba: 6400 ff2c bccw 4c6e8 <_Heap_Allocate_aligned_with_boundary+0x60>
4c7be: 4a80 tstl %d0 <== NOT EXECUTED 4c7c0: 6600 ff2c bnew 4c6ee <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4c7c4: 4a82 tstl %d2 <== NOT EXECUTED 4c7c6: 6700 ff26 beqw 4c6ee <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
stats->searches += search_count;
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4c7ca: 2f09 movel %a1,%sp@-
search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
} while ( search_again );
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
4c7cc: 52aa 0048 addql #1,%a2@(72)
stats->searches += search_count;
4c7d0: d7aa 004c addl %d3,%a2@(76)
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4c7d4: 2f02 movel %d2,%sp@- 4c7d6: 2f08 movel %a0,%sp@- 4c7d8: 2f0a movel %a2,%sp@- 4c7da: 4eb9 0004 7746 jsr 47746 <_Heap_Block_allocate> 4c7e0: 4fef 0010 lea %sp@(16),%sp 4c7e4: 2002 movel %d2,%d0
boundary
);
}
/* Statistics */
if ( stats->max_search < search_count ) {
4c7e6: b6aa 0044 cmpl %a2@(68),%d3
4c7ea: 6304 blss 4c7f0 <_Heap_Allocate_aligned_with_boundary+0x168>
stats->max_search = search_count;
4c7ec: 2543 0044 movel %d3,%a2@(68)
}
return (void *) alloc_begin;
}
4c7f0: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 4c7f6: 4e5e unlk %fp 4c7f8: 4e75 rts
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
4c7fa: b889 cmpl %a1,%d4 <== NOT EXECUTED 4c7fc: 6410 bccs 4c80e <_Heap_Allocate_aligned_with_boundary+0x186><== NOT EXECUTED
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4c7fe: 4280 clrl %d0 <== NOT EXECUTED
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c800: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c806: 4e5e unlk %fp <== NOT EXECUTED 4c808: 4e75 rts <== NOT EXECUTED
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4c80a: 4280 clrl %d0 4c80c: 60d8 bras 4c7e6 <_Heap_Allocate_aligned_with_boundary+0x15e>
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
return NULL;
}
if ( alignment == 0 ) {
4c80e: 4a81 tstl %d1 <== NOT EXECUTED 4c810: 6600 fea6 bnew 4c6b8 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
alignment = page_size;
4c814: 2200 movel %d0,%d1 <== NOT EXECUTED 4c816: 6000 fea0 braw 4c6b8 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
...
00047746 <_Heap_Block_allocate>:
- 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;
47746: 70fe moveq #-2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
47748: 4e56 ffe0 linkw %fp,#-32 4774c: 206e 000c moveal %fp@(12),%a0 47750: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47754: 2428 0004 movel %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;
47758: 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;
4775a: c082 andl %d2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
4775c: 222e 0010 movel %fp@(16),%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
47760: 49f0 0800 lea %a0@(00000000,%d0:l),%a4
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
47764: 2641 moveal %d1,%a3 47766: 518b subql #8,%a3
Heap_Statistics *const stats = &heap->stats;
uintptr_t const alloc_area_begin = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_area_offset = alloc_begin - alloc_area_begin;
47768: 2a0b movel %a3,%d5 4776a: 9a88 subl %a0,%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;
4776c: c8ac 0004 andl %a4@(4),%d4
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
47770: 246e 0008 moveal %fp@(8),%a2 47774: 262e 0014 movel %fp@(20),%d3
Heap_Block *free_list_anchor = NULL;
_HAssert( alloc_area_begin <= alloc_begin );
if ( _Heap_Is_free( block ) ) {
47778: 4a84 tstl %d4 4777a: 6600 0090 bnew 4780c <_Heap_Block_allocate+0xc6>
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
4777e: 2828 0008 movel %a0@(8),%d4
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
next->prev = prev;
47782: 2a44 moveal %d4,%a5
Heap_Block *free_list_anchor = NULL;
_HAssert( alloc_area_begin <= alloc_begin );
if ( _Heap_Is_free( block ) ) {
free_list_anchor = block->prev;
47784: 2268 000c moveal %a0@(12),%a1
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
47788: 2344 0008 movel %d4,%a1@(8)
next->prev = prev;
4778c: 2b49 000c movel %a1,%a5@(12)
_Heap_Free_list_remove( block );
/* Statistics */
--stats->free_blocks;
++stats->used_blocks;
stats->free_size -= _Heap_Block_size( block );
47790: 91aa 0030 subl %d0,%a2@(48)
free_list_anchor = block->prev;
_Heap_Free_list_remove( block );
/* Statistics */
--stats->free_blocks;
47794: 53aa 0038 subql #1,%a2@(56)
++stats->used_blocks;
47798: 52aa 0040 addql #1,%a2@(64)
stats->free_size -= _Heap_Block_size( block );
} else {
free_list_anchor = _Heap_Free_list_head( heap );
}
if ( alloc_area_offset < heap->page_size ) {
4779c: 202a 0010 movel %a2@(16),%d0 477a0: b085 cmpl %d5,%d0
477a2: 6272 bhis 47816 <_Heap_Block_allocate+0xd0>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
477a4: 4c40 1004 remul %d0,%d4,%d1
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
477a8: 97c4 subal %d4,%a3
_Heap_Block_of_alloc_area( alloc_begin, heap->page_size );
uintptr_t const new_block_begin = (uintptr_t) new_block;
uintptr_t const new_block_size = block_end - new_block_begin;
block_end = new_block_begin;
block_size = block_end - block_begin;
477aa: 200b movel %a3,%d0 477ac: 9088 subl %a0,%d0
_HAssert( block_size >= heap->min_block_size );
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
477ae: d1aa 0030 addl %d0,%a2@(48)
uintptr_t block_end = block_begin + block_size;
Heap_Block *const new_block =
_Heap_Block_of_alloc_area( alloc_begin, heap->page_size );
uintptr_t const new_block_begin = (uintptr_t) new_block;
uintptr_t const new_block_size = block_end - new_block_begin;
477b2: 99cb subal %a3,%a4
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
if ( _Heap_Is_prev_used( block ) ) {
477b4: 0802 0000 btst #0,%d2
477b8: 6774 beqs 4782e <_Heap_Block_allocate+0xe8> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(
Heap_Block *block_before,
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
477ba: 2a69 0008 moveal %a1@(8),%a5
block = prev_block;
block_begin = (uintptr_t) block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477be: 7401 moveq #1,%d2
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
477c0: 2208 movel %a0,%d1
new_block->next = next;
477c2: 214d 0008 movel %a5,%a0@(8)
block = prev_block;
block_begin = (uintptr_t) block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477c6: 8480 orl %d0,%d2
new_block->prev = block_before;
477c8: 2149 000c movel %a1,%a0@(12)
block_before->next = new_block;
477cc: 2348 0008 movel %a0,%a1@(8)
next->prev = new_block;
477d0: 2b48 000c movel %a0,%a5@(12)
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
477d4: 52aa 0038 addql #1,%a2@(56)
block = prev_block;
block_begin = (uintptr_t) block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477d8: 2142 0004 movel %d2,%a0@(4)
new_block->prev_size = block_size;
477dc: 2680 movel %d0,%a3@
new_block->size_and_flag = new_block_size;
477de: 274c 0004 movel %a4,%a3@(4)
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
477e2: 2f03 movel %d3,%sp@- 477e4: 2f01 movel %d1,%sp@- 477e6: 2f0b movel %a3,%sp@- 477e8: 2f0a movel %a2,%sp@- 477ea: 4eba fcb0 jsr %pc@(4749c <_Heap_Block_split>) 477ee: 4fef 0010 lea %sp@(16),%sp
alloc_size
);
}
/* Statistics */
if ( stats->min_free_size > stats->free_size ) {
477f2: 202a 0030 movel %a2@(48),%d0 477f6: b0aa 0034 cmpl %a2@(52),%d0
477fa: 6404 bccs 47800 <_Heap_Block_allocate+0xba> <== NEVER TAKEN
stats->min_free_size = stats->free_size;
477fc: 2540 0034 movel %d0,%a2@(52)
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47800: 200b movel %a3,%d0 47802: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 47808: 4e5e unlk %fp 4780a: 4e75 rts
stats->free_size -= _Heap_Block_size( block );
} else {
free_list_anchor = _Heap_Free_list_head( heap );
}
if ( alloc_area_offset < heap->page_size ) {
4780c: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
++stats->used_blocks;
stats->free_size -= _Heap_Block_size( block );
} else {
free_list_anchor = _Heap_Free_list_head( heap );
47810: 224a moveal %a2,%a1 <== NOT EXECUTED
}
if ( alloc_area_offset < heap->page_size ) {
47812: b085 cmpl %d5,%d0 <== NOT EXECUTED 47814: 638e blss 477a4 <_Heap_Block_allocate+0x5e> <== NOT EXECUTED
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
_Heap_Block_split( heap, block, free_list_anchor, alloc_size );
47816: 2645 moveal %d5,%a3 47818: 4873 3800 pea %a3@(00000000,%d3:l) 4781c: 2648 moveal %a0,%a3 4781e: 2f09 movel %a1,%sp@- 47820: 2f08 movel %a0,%sp@- 47822: 2f0a movel %a2,%sp@- 47824: 4eba fc76 jsr %pc@(4749c <_Heap_Block_split>) 47828: 4fef 0010 lea %sp@(16),%sp 4782c: 60c4 bras 477f2 <_Heap_Block_allocate+0xac>
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Prev_block(
const Heap_Block *block
)
{
return (Heap_Block *) ((uintptr_t) block - block->prev_size);
4782e: 91d0 subal %a0@,%a0 <== NOT EXECUTED
- 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;
47830: 74fe moveq #-2,%d2 <== NOT EXECUTED
Heap_Block *const prev_block = _Heap_Prev_block( block );
uintptr_t const prev_block_size = _Heap_Block_size( prev_block );
block = prev_block;
block_begin = (uintptr_t) block;
block_size += prev_block_size;
47832: 2209 movel %a1,%d1 <== NOT EXECUTED 47834: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED 47838: d082 addl %d2,%d0 <== NOT EXECUTED
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4783a: 7401 moveq #1,%d2 <== NOT EXECUTED 4783c: 8480 orl %d0,%d2 <== NOT EXECUTED
new_block->prev_size = block_size;
4783e: 2680 movel %d0,%a3@ <== NOT EXECUTED
block = prev_block;
block_begin = (uintptr_t) block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
47840: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
new_block->prev_size = block_size;
new_block->size_and_flag = new_block_size;
47844: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
47848: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4784a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4784c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4784e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47850: 4eba fc4a jsr %pc@(4749c <_Heap_Block_split>) <== NOT EXECUTED 47854: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47858: 6098 bras 477f2 <_Heap_Block_allocate+0xac> <== NOT EXECUTED
...
0004749c <_Heap_Block_split>:
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
4749c: 4e56 ffe4 linkw %fp,#-28 474a0: 226e 0008 moveal %fp@(8),%a1 474a4: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ 474a8: 246e 000c moveal %fp@(12),%a2
- 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;
474ac: 76fe moveq #-2,%d3
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
474ae: 282a 0004 movel %a2@(4),%d4
)
{
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
uintptr_t const min_block_size = heap->min_block_size;
474b2: 2669 0014 moveal %a1@(20),%a3
uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE;
474b6: 220b movel %a3,%d1 474b8: 5181 subql #8,%d1
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
474ba: 286e 0010 moveal %fp@(16),%a4
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
474be: 2429 0010 movel %a1@(16),%d2
return heap->stats.size;
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b )
{
return a > b ? a : b;
474c2: 202e 0014 movel %fp@(20),%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;
474c6: c684 andl %d4,%d3
return heap->stats.size;
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b )
{
return a > b ? a : b;
474c8: b280 cmpl %d0,%d1
474ca: 6302 blss 474ce <_Heap_Block_split+0x32>
474cc: 2001 movel %d1,%d0
uintptr_t const min_block_size = heap->min_block_size;
uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const used_size =
474ce: 5080 addql #8,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
474d0: 2a00 movel %d0,%d5 474d2: 4c42 5001 remul %d2,%d1,%d5
if ( remainder != 0 ) {
474d6: 4a81 tstl %d1
474d8: 6766 beqs 47540 <_Heap_Block_split+0xa4>
return value - remainder + alignment;
474da: d480 addl %d0,%d2 474dc: 9481 subl %d1,%d2
_Heap_Max( alloc_size, min_alloc_size ) + HEAP_BLOCK_HEADER_SIZE;
uintptr_t const used_block_size = _Heap_Align_up( used_size, page_size );
uintptr_t const free_size = block_size + HEAP_ALLOC_BONUS - used_size;
474de: 2203 movel %d3,%d1 474e0: 5881 addql #4,%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
474e2: 41f2 3800 lea %a2@(00000000,%d3:l),%a0 474e6: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
474e8: 588b addql #4,%a3
Heap_Block *next_block = _Heap_Block_at( block, block_size );
_HAssert( used_size <= block_size + HEAP_ALLOC_BONUS );
_HAssert( used_size + free_size == block_size + HEAP_ALLOC_BONUS );
if ( free_size >= free_size_limit ) {
474ea: b7c1 cmpal %d1,%a3
474ec: 6264 bhis 47552 <_Heap_Block_split+0xb6> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
474ee: 7001 moveq #1,%d0
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
474f0: 47f2 2800 lea %a2@(00000000,%d2:l),%a3
Heap_Block *const free_block = _Heap_Block_at( block, used_block_size );
uintptr_t free_block_size = block_size - used_block_size;
474f4: 9682 subl %d2,%d3
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;
474f6: 7201 moveq #1,%d1
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
474f8: c880 andl %d0,%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;
474fa: 70fe moveq #-2,%d0
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
block->size_and_flag = size | flag;
474fc: 8484 orl %d4,%d2 474fe: 2542 0004 movel %d2,%a2@(4)
_HAssert( used_block_size + free_block_size == block_size );
_Heap_Block_set_size( block, used_block_size );
/* Statistics */
stats->free_size += free_block_size;
47502: d7a9 0030 addl %d3,%a1@(48)
- 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;
47506: c0a8 0004 andl %a0@(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;
4750a: c2b0 0804 andl %a0@(00000004,%d0:l),%d1
if ( _Heap_Is_used( next_block ) ) {
4750e: 6750 beqs 47560 <_Heap_Block_split+0xc4> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(
Heap_Block *block_before,
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
47510: 246c 0008 moveal %a4@(8),%a2
free_block_size += next_block_size;
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
47514: 7001 moveq #1,%d0
new_block->next = next;
new_block->prev = block_before;
47516: 274c 000c movel %a4,%a3@(12) 4751a: 8083 orl %d3,%d0
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4751c: 274a 0008 movel %a2,%a3@(8)
new_block->prev = block_before; block_before->next = new_block; next->prev = new_block;
47520: 254b 000c movel %a3,%a2@(12)
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
47524: 294b 0008 movel %a3,%a4@(8)
if ( _Heap_Is_used( next_block ) ) {
_Heap_Free_list_insert_after( free_list_anchor, free_block );
/* Statistics */
++stats->free_blocks;
47528: 52a9 0038 addql #1,%a1@(56)
free_block_size += next_block_size;
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
4752c: 2740 0004 movel %d0,%a3@(4)
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
47530: 70fe moveq #-2,%d0 47532: c1a8 0004 andl %d0,%a0@(4)
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
next_block->prev_size = free_block_size;
47536: 2083 movel %d3,%a0@
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
}
}
47538: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4 4753c: 4e5e unlk %fp 4753e: 4e75 rts
uintptr_t const used_size =
_Heap_Max( alloc_size, min_alloc_size ) + HEAP_BLOCK_HEADER_SIZE;
uintptr_t const used_block_size = _Heap_Align_up( used_size, page_size );
uintptr_t const free_size = block_size + HEAP_ALLOC_BONUS - used_size;
47540: 2203 movel %d3,%d1 47542: 5881 addql #4,%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
47544: 41f2 3800 lea %a2@(00000000,%d3:l),%a0
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
47548: 2400 movel %d0,%d2 4754a: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
4754c: 588b addql #4,%a3
Heap_Block *next_block = _Heap_Block_at( block, block_size );
_HAssert( used_size <= block_size + HEAP_ALLOC_BONUS );
_HAssert( used_size + free_size == block_size + HEAP_ALLOC_BONUS );
if ( free_size >= free_size_limit ) {
4754e: b7c1 cmpal %d1,%a3
47550: 639c blss 474ee <_Heap_Block_split+0x52>
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
47552: 7001 moveq #1,%d0
} }
47554: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
47558: 81a8 0004 orl %d0,%a0@(4)
} }
4755c: 4e5e unlk %fp 4755e: 4e75 rts
} else {
uintptr_t const next_block_size = _Heap_Block_size( next_block );
_Heap_Free_list_replace( next_block, free_block );
free_block_size += next_block_size;
47560: d680 addl %d0,%d3 <== NOT EXECUTED
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
47562: 7001 moveq #1,%d0 <== NOT EXECUTED
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47564: 2268 0008 moveal %a0@(8),%a1 <== NOT EXECUTED 47568: 2468 000c moveal %a0@(12),%a2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4756c: 41f3 3800 lea %a3@(00000000,%d3:l),%a0 <== NOT EXECUTED
free_block_size += next_block_size;
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
47570: 8083 orl %d3,%d0 <== NOT EXECUTED
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
47572: 2749 0008 movel %a1,%a3@(8) <== NOT EXECUTED
new_block->prev = prev;
47576: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED 4757a: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4757e: 70fe moveq #-2,%d0 <== NOT EXECUTED
next->prev = new_block;
prev->next = new_block;
47580: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED 47584: c1a8 0004 andl %d0,%a0@(4) <== NOT EXECUTED
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
47588: 234b 000c movel %a3,%a1@(12) <== NOT EXECUTED
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
next_block->prev_size = free_block_size;
4758c: 2083 movel %d3,%a0@ <== NOT EXECUTED 4758e: 60a8 bras 47538 <_Heap_Block_split+0x9c> <== NOT EXECUTED
0004cb44 <_Heap_Extend>:
Heap_Control *heap,
void *extend_area_begin_ptr,
uintptr_t extend_area_size,
uintptr_t *extended_size_ptr
)
{
4cb44: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 4cb48: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 4cb4c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4cb50: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4cb54: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Heap_Block *extend_first_block = NULL; Heap_Block *extend_last_block = NULL; uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr; uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
4cb58: 2602 movel %d2,%d3 <== NOT EXECUTED 4cb5a: d680 addl %d0,%d3 <== NOT EXECUTED
uintptr_t extend_area_size,
uintptr_t *extended_size_ptr
)
{
Heap_Statistics *const stats = &heap->stats;
Heap_Block *const first_block = heap->first_block;
4cb5c: 2a2a 0020 movel %a2@(32),%d5 <== NOT EXECUTED
Heap_Block *merge_above_block = NULL; Heap_Block *link_below_block = NULL; Heap_Block *link_above_block = NULL; Heap_Block *extend_first_block = NULL; Heap_Block *extend_last_block = NULL; uintptr_t const page_size = heap->page_size;
4cb60: 282a 0010 movel %a2@(16),%d4 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
4cb64: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED
uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr; uintptr_t const extend_area_end = extend_area_begin + extend_area_size; uintptr_t const free_size = stats->free_size;
4cb68: 2c2a 0030 movel %a2@(48),%d6 <== NOT EXECUTED
Heap_Block *start_block = first_block; Heap_Block *merge_below_block = NULL; Heap_Block *merge_above_block = NULL; Heap_Block *link_below_block = NULL; Heap_Block *link_above_block = NULL; Heap_Block *extend_first_block = NULL;
4cb6c: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
Heap_Block *extend_last_block = NULL;
4cb70: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
uintptr_t const free_size = stats->free_size;
uintptr_t extend_first_block_size = 0;
uintptr_t extended_size = 0;
bool extend_area_ok = false;
if ( extend_area_end < extend_area_begin ) {
4cb74: b682 cmpl %d2,%d3 <== NOT EXECUTED 4cb76: 640c bccs 4cb84 <_Heap_Extend+0x40> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cb78: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
_Heap_Block_of_alloc_area( sub_area_end, page_size );
if (
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
) {
return false;
4cb7e: 4200 clrb %d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cb80: 4e5e unlk %fp <== NOT EXECUTED 4cb82: 4e75 rts <== NOT EXECUTED
if ( extend_area_end < extend_area_begin ) {
return false;
}
extend_area_ok = _Heap_Get_first_and_last_block(
4cb84: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4cb88: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cb8c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4cb8e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cb90: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cb92: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cb94: 4eb9 0004 78dc jsr 478dc <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&extend_first_block,
&extend_last_block
);
if (!extend_area_ok ) {
4cb9a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4cb9e: 4a00 tstb %d0 <== NOT EXECUTED 4cba0: 67d6 beqs 4cb78 <_Heap_Extend+0x34> <== NOT EXECUTED 4cba2: 2045 moveal %d5,%a0 <== NOT EXECUTED 4cba4: 9bcd subal %a5,%a5 <== NOT EXECUTED 4cba6: 97cb subal %a3,%a3 <== NOT EXECUTED 4cba8: 99cc subal %a4,%a4 <== NOT EXECUTED 4cbaa: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED
return false;
}
do {
uintptr_t const sub_area_begin = (start_block != first_block) ?
(uintptr_t) start_block : heap->area_begin;
4cbae: ba88 cmpl %a0,%d5 <== NOT EXECUTED 4cbb0: 6700 014a beqw 4ccfc <_Heap_Extend+0x1b8> <== NOT EXECUTED 4cbb4: 2208 movel %a0,%d1 <== NOT EXECUTED
uintptr_t const sub_area_end = start_block->prev_size;
4cbb6: 2010 movel %a0@,%d0 <== NOT EXECUTED
Heap_Block *const end_block =
_Heap_Block_of_alloc_area( sub_area_end, page_size );
if (
4cbb8: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cbba: 6304 blss 4cbc0 <_Heap_Extend+0x7c> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
4cbbc: b681 cmpl %d1,%d3 <== NOT EXECUTED 4cbbe: 62b8 bhis 4cb78 <_Heap_Extend+0x34> <== NOT EXECUTED
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4cbc0: b681 cmpl %d1,%d3 <== NOT EXECUTED 4cbc2: 6700 0132 beqw 4ccf6 <_Heap_Extend+0x1b2> <== NOT EXECUTED
merge_below_block = start_block;
} else if ( extend_area_end < sub_area_end ) {
4cbc6: b083 cmpl %d3,%d0 <== NOT EXECUTED 4cbc8: 6304 blss 4cbce <_Heap_Extend+0x8a> <== NOT EXECUTED 4cbca: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED 4cbce: 2e00 movel %d0,%d7 <== NOT EXECUTED 4cbd0: 2240 moveal %d0,%a1 <== NOT EXECUTED 4cbd2: 5189 subql #8,%a1 <== NOT EXECUTED 4cbd4: 4c44 7001 remul %d4,%d1,%d7 <== NOT EXECUTED
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4cbd8: 93c1 subal %d1,%a1 <== NOT EXECUTED
link_below_block = start_block;
}
if ( sub_area_end == extend_area_begin ) {
4cbda: b480 cmpl %d0,%d2 <== NOT EXECUTED 4cbdc: 6700 0100 beqw 4ccde <_Heap_Extend+0x19a> <== NOT EXECUTED
start_block->prev_size = extend_area_end;
merge_above_block = end_block;
} else if ( sub_area_end < extend_area_begin ) {
4cbe0: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cbe2: 6402 bccs 4cbe6 <_Heap_Extend+0xa2> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
4cbe4: 2a49 moveal %a1,%a5 <== NOT EXECUTED
- 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;
4cbe6: 70fe moveq #-2,%d0 <== NOT EXECUTED 4cbe8: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4cbec: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED
link_above_block = end_block;
}
start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
} while ( start_block != first_block );
4cbf0: b1c5 cmpal %d5,%a0 <== NOT EXECUTED 4cbf2: 66ba bnes 4cbae <_Heap_Extend+0x6a> <== NOT EXECUTED
if ( extend_area_begin < heap->area_begin ) {
4cbf4: b4aa 0018 cmpl %a2@(24),%d2 <== NOT EXECUTED 4cbf8: 6500 010a bcsw 4cd04 <_Heap_Extend+0x1c0> <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
4cbfc: b6aa 001c cmpl %a2@(28),%d3 <== NOT EXECUTED 4cc00: 6304 blss 4cc06 <_Heap_Extend+0xc2> <== NOT EXECUTED
heap->area_end = extend_area_end;
4cc02: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4cc06: 226e fff8 moveal %fp@(-8),%a1 <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
4cc0a: 2009 movel %a1,%d0 <== NOT EXECUTED
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cc0c: 7201 moveq #1,%d1 <== NOT EXECUTED
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4cc0e: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
4cc12: 9088 subl %a0,%d0 <== NOT EXECUTED
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cc14: 8280 orl %d0,%d1 <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
4cc16: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cc18: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_first_block );
extend_last_block->prev_size = extend_first_block_size;
4cc1c: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4cc1e: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_last_block );
if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
4cc22: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 4cc26: 6400 0104 bccw 4cd2c <_Heap_Extend+0x1e8> <== NOT EXECUTED
heap->first_block = extend_first_block;
4cc2a: 2548 0020 movel %a0,%a2@(32) <== NOT EXECUTED
} else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
heap->last_block = extend_last_block;
}
if ( merge_below_block != NULL ) {
4cc2e: 4a8c tstl %a4 <== NOT EXECUTED 4cc30: 6700 0148 beqw 4cd7a <_Heap_Extend+0x236> <== NOT EXECUTED
Heap_Control *heap,
uintptr_t extend_area_begin,
Heap_Block *first_block
)
{
uintptr_t const page_size = heap->page_size;
4cc34: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
uintptr_t const new_first_block_alloc_begin =
_Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
4cc38: 5082 addql #8,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4cc3a: 2802 movel %d2,%d4 <== NOT EXECUTED 4cc3c: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED
if ( remainder != 0 ) {
4cc40: 4a81 tstl %d1 <== NOT EXECUTED 4cc42: 6704 beqs 4cc48 <_Heap_Extend+0x104> <== NOT EXECUTED
return value - remainder + alignment;
4cc44: d480 addl %d0,%d2 <== NOT EXECUTED 4cc46: 9481 subl %d1,%d2 <== NOT EXECUTED
uintptr_t const new_first_block_begin =
4cc48: 2042 moveal %d2,%a0 <== NOT EXECUTED 4cc4a: 5188 subql #8,%a0 <== NOT EXECUTED
new_first_block_alloc_begin - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const first_block_begin = (uintptr_t) first_block;
uintptr_t const new_first_block_size =
4cc4c: 200c movel %a4,%d0 <== NOT EXECUTED 4cc4e: 9088 subl %a0,%d0 <== NOT EXECUTED
first_block_begin - new_first_block_begin;
Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
new_first_block->prev_size = first_block->prev_size;
new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
4cc50: 7201 moveq #1,%d1 <== NOT EXECUTED 4cc52: 8280 orl %d0,%d1 <== NOT EXECUTED
uintptr_t const first_block_begin = (uintptr_t) first_block;
uintptr_t const new_first_block_size =
first_block_begin - new_first_block_begin;
Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
new_first_block->prev_size = first_block->prev_size;
4cc54: 2094 movel %a4@,%a0@ <== NOT EXECUTED
new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
4cc56: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Free_block( heap, new_first_block );
4cc5a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cc5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cc5e: 4eba fec8 jsr %pc@(4cb28 <_Heap_Free_block>) <== NOT EXECUTED 4cc62: 508f addql #8,%sp <== NOT EXECUTED
link_below_block,
extend_last_block
);
}
if ( merge_above_block != NULL ) {
4cc64: 4a8b tstl %a3 <== NOT EXECUTED 4cc66: 6700 00d4 beqw 4cd3c <_Heap_Extend+0x1f8> <== NOT EXECUTED
)
{
uintptr_t const page_size = heap->page_size;
uintptr_t const last_block_begin = (uintptr_t) last_block;
uintptr_t const last_block_new_size = _Heap_Align_down(
extend_area_end - last_block_begin - HEAP_BLOCK_HEADER_SIZE,
4cc6a: 5183 subql #8,%d3 <== NOT EXECUTED
uintptr_t extend_area_end
)
{
uintptr_t const page_size = heap->page_size;
uintptr_t const last_block_begin = (uintptr_t) last_block;
uintptr_t const last_block_new_size = _Heap_Align_down(
4cc6c: 968b subl %a3,%d3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4cc6e: 2203 movel %d3,%d1 <== NOT EXECUTED 4cc70: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED
Heap_Block *const new_last_block =
_Heap_Block_at( last_block, last_block_new_size );
new_last_block->size_and_flag =
(last_block->size_and_flag - last_block_new_size)
| HEAP_PREV_BLOCK_USED;
4cc76: 7201 moveq #1,%d1 <== NOT EXECUTED 4cc78: 9680 subl %d0,%d3 <== NOT EXECUTED
);
Heap_Block *const new_last_block =
_Heap_Block_at( last_block, last_block_new_size );
new_last_block->size_and_flag =
(last_block->size_and_flag - last_block_new_size)
4cc7a: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED 4cc7e: 9083 subl %d3,%d0 <== NOT EXECUTED
| HEAP_PREV_BLOCK_USED;
4cc80: 8280 orl %d0,%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
4cc82: 7001 moveq #1,%d0 <== NOT EXECUTED 4cc84: 2781 3804 movel %d1,%a3@(00000004,%d3:l) <== NOT EXECUTED 4cc88: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4cc8c: 8680 orl %d0,%d3 <== NOT EXECUTED 4cc8e: 2743 0004 movel %d3,%a3@(4) <== NOT EXECUTED
_Heap_Block_set_size( last_block, last_block_new_size );
_Heap_Free_block( heap, last_block );
4cc92: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4cc94: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cc96: 4eba fe90 jsr %pc@(4cb28 <_Heap_Free_block>) <== NOT EXECUTED 4cc9a: 508f addql #8,%sp <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4cc9c: 4a8c tstl %a4 <== NOT EXECUTED 4cc9e: 6700 00c4 beqw 4cd64 <_Heap_Extend+0x220> <== NOT EXECUTED
_Heap_Free_block( heap, extend_first_block );
}
_Heap_Set_last_block_size( heap );
extended_size = stats->free_size - free_size;
4cca2: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED 4cca6: 9086 subl %d6,%d0 <== NOT EXECUTED 4cca8: 2c00 movel %d0,%d6 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
4ccaa: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4ccac: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED
* This feature will be used to terminate the scattered heap area list. See
* also _Heap_Extend().
*/
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{
_Heap_Block_set_size(
4ccb0: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED 4ccb4: 9288 subl %a0,%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
4ccb6: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4ccba: 8280 orl %d0,%d1 <== NOT EXECUTED 4ccbc: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Set_last_block_size( heap );
extended_size = stats->free_size - free_size;
/* Statistics */
stats->size += extended_size;
4ccc0: ddaa 002c addl %d6,%a2@(44) <== NOT EXECUTED
if ( extended_size_ptr != NULL )
4ccc4: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED 4ccc8: 6700 00ca beqw 4cd94 <_Heap_Extend+0x250> <== NOT EXECUTED
*extended_size_ptr = extended_size;
4cccc: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4ccd0: 2086 movel %d6,%a0@ <== NOT EXECUTED
return true;
}
4ccd2: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
stats->size += extended_size;
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
4ccd8: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4ccda: 4e5e unlk %fp <== NOT EXECUTED 4ccdc: 4e75 rts <== NOT EXECUTED
- 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;
4ccde: 70fe moveq #-2,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
4cce0: 2649 moveal %a1,%a3 <== NOT EXECUTED
- 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;
4cce2: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED
} else if ( extend_area_end < sub_area_end ) {
link_below_block = start_block;
}
if ( sub_area_end == extend_area_begin ) {
start_block->prev_size = extend_area_end;
4cce6: 2083 movel %d3,%a0@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4cce8: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED
} else if ( sub_area_end < extend_area_begin ) {
link_above_block = end_block;
}
start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
} while ( start_block != first_block );
4ccec: b1c5 cmpal %d5,%a0 <== NOT EXECUTED 4ccee: 6600 febe bnew 4cbae <_Heap_Extend+0x6a> <== NOT EXECUTED 4ccf2: 6000 ff00 braw 4cbf4 <_Heap_Extend+0xb0> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4ccf6: 2848 moveal %a0,%a4 <== NOT EXECUTED 4ccf8: 6000 fed4 braw 4cbce <_Heap_Extend+0x8a> <== NOT EXECUTED
return false;
}
do {
uintptr_t const sub_area_begin = (start_block != first_block) ?
(uintptr_t) start_block : heap->area_begin;
4ccfc: 222a 0018 movel %a2@(24),%d1 <== NOT EXECUTED 4cd00: 6000 feb4 braw 4cbb6 <_Heap_Extend+0x72> <== NOT EXECUTED
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4cd04: 226e fff8 moveal %fp@(-8),%a1 <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
4cd08: 2009 movel %a1,%d0 <== NOT EXECUTED
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cd0a: 7201 moveq #1,%d1 <== NOT EXECUTED
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4cd0c: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
4cd10: 9088 subl %a0,%d0 <== NOT EXECUTED
start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
} while ( start_block != first_block );
if ( extend_area_begin < heap->area_begin ) {
heap->area_begin = extend_area_begin;
4cd12: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cd16: 8280 orl %d0,%d1 <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
4cd18: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cd1a: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_first_block );
extend_last_block->prev_size = extend_first_block_size;
4cd1e: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4cd20: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_last_block );
if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
4cd24: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 4cd28: 6500 ff00 bcsw 4cc2a <_Heap_Extend+0xe6> <== NOT EXECUTED
heap->first_block = extend_first_block;
} else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
4cd2c: b3ea 0024 cmpal %a2@(36),%a1 <== NOT EXECUTED 4cd30: 6300 fefc blsw 4cc2e <_Heap_Extend+0xea> <== NOT EXECUTED
heap->last_block = extend_last_block;
4cd34: 2549 0024 movel %a1,%a2@(36) <== NOT EXECUTED 4cd38: 6000 fef4 braw 4cc2e <_Heap_Extend+0xea> <== NOT EXECUTED
);
}
if ( merge_above_block != NULL ) {
_Heap_Merge_above( heap, merge_above_block, extend_area_end );
} else if ( link_above_block != NULL ) {
4cd3c: 4a8d tstl %a5 <== NOT EXECUTED 4cd3e: 6700 ff5c beqw 4cc9c <_Heap_Extend+0x158> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
4cd42: 7001 moveq #1,%d0 <== NOT EXECUTED
)
{
uintptr_t const link_begin = (uintptr_t) link;
uintptr_t const first_block_begin = (uintptr_t) first_block;
_Heap_Block_set_size( link, first_block_begin - link_begin );
4cd44: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4cd48: 928d subl %a5,%d1 <== NOT EXECUTED 4cd4a: c0ad 0004 andl %a5@(4),%d0 <== NOT EXECUTED
}
if ( merge_above_block != NULL ) {
_Heap_Merge_above( heap, merge_above_block, extend_area_end );
} else if ( link_above_block != NULL ) {
_Heap_Link_above(
4cd4e: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4cd52: 8280 orl %d0,%d1 <== NOT EXECUTED
uintptr_t const link_begin = (uintptr_t) link;
uintptr_t const first_block_begin = (uintptr_t) first_block;
_Heap_Block_set_size( link, first_block_begin - link_begin );
last_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
4cd54: 7001 moveq #1,%d0 <== NOT EXECUTED 4cd56: 2b41 0004 movel %d1,%a5@(4) <== NOT EXECUTED 4cd5a: 81a8 0004 orl %d0,%a0@(4) <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4cd5e: 4a8c tstl %a4 <== NOT EXECUTED 4cd60: 6600 ff40 bnew 4cca2 <_Heap_Extend+0x15e> <== NOT EXECUTED 4cd64: 4a8b tstl %a3 <== NOT EXECUTED 4cd66: 6600 ff3a bnew 4cca2 <_Heap_Extend+0x15e> <== NOT EXECUTED
_Heap_Free_block( heap, extend_first_block );
4cd6a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4cd6e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cd70: 4eba fdb6 jsr %pc@(4cb28 <_Heap_Free_block>) <== NOT EXECUTED 4cd74: 508f addql #8,%sp <== NOT EXECUTED 4cd76: 6000 ff2a braw 4cca2 <_Heap_Extend+0x15e> <== NOT EXECUTED
heap->last_block = extend_last_block;
}
if ( merge_below_block != NULL ) {
_Heap_Merge_below( heap, extend_area_begin, merge_below_block );
} else if ( link_below_block != NULL ) {
4cd7a: 4aae fff4 tstl %fp@(-12) <== NOT EXECUTED 4cd7e: 6700 fee4 beqw 4cc64 <_Heap_Extend+0x120> <== NOT EXECUTED
{
uintptr_t const last_block_begin = (uintptr_t) last_block;
uintptr_t const link_begin = (uintptr_t) link;
last_block->size_and_flag =
(link_begin - last_block_begin) | HEAP_PREV_BLOCK_USED;
4cd82: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 4cd86: 7201 moveq #1,%d1 <== NOT EXECUTED 4cd88: 9089 subl %a1,%d0 <== NOT EXECUTED 4cd8a: 8280 orl %d0,%d1 <== NOT EXECUTED 4cd8c: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED 4cd90: 6000 fed2 braw 4cc64 <_Heap_Extend+0x120> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cd94: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
stats->size += extended_size;
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
4cd9a: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4cd9c: 4e5e unlk %fp <== NOT EXECUTED
0004c81c <_Heap_Free>:
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
{
4c81c: 4e56 ffe8 linkw %fp,#-24 4c820: 202e 000c movel %fp@(12),%d0 4c824: 2040 moveal %d0,%a0 4c826: 5188 subql #8,%a0 4c828: 226e 0008 moveal %fp@(8),%a1 4c82c: 4c69 0001 0010 remul %a1@(16),%d1,%d0 4c832: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
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
4c836: 2029 0020 movel %a1@(32),%d0
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4c83a: 91c1 subal %d1,%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;
4c83c: b088 cmpl %a0,%d0 4c83e: 6200 0098 bhiw 4c8d8 <_Heap_Free+0xbc> 4c842: 2229 0024 movel %a1@(36),%d1 4c846: b288 cmpl %a0,%d1 4c848: 6500 008e bcsw 4c8d8 <_Heap_Free+0xbc>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c84c: 2628 0004 movel %a0@(4),%d3
- 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;
4c850: 74fe moveq #-2,%d2 4c852: c483 andl %d3,%d2
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4c854: 45f0 2800 lea %a0@(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;
4c858: b5c0 cmpal %d0,%a2
4c85a: 657c bcss 4c8d8 <_Heap_Free+0xbc> <== NEVER TAKEN
4c85c: b5c1 cmpal %d1,%a2
4c85e: 6278 bhis 4c8d8 <_Heap_Free+0xbc> <== NEVER TAKEN
4c860: 282a 0004 movel %a2@(4),%d4
if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {
_HAssert( false );
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
4c864: 0804 0000 btst #0,%d4
4c868: 676e beqs 4c8d8 <_Heap_Free+0xbc> <== 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;
4c86a: 7afe moveq #-2,%d5 4c86c: c885 andl %d5,%d4
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 ));
4c86e: b5c1 cmpal %d1,%a2 4c870: 6700 00f6 beqw 4c968 <_Heap_Free+0x14c>
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;
4c874: 7a01 moveq #1,%d5 4c876: cab2 4804 andl %a2@(00000004,%d4:l),%d5
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
4c87a: 57c5 seq %d5 4c87c: 4485 negl %d5
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 ) ) {
4c87e: 0803 0000 btst #0,%d3
4c882: 665e bnes 4c8e2 <_Heap_Free+0xc6>
uintptr_t const prev_size = block->prev_size;
4c884: 2610 movel %a0@,%d3
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4c886: 91c3 subal %d3,%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;
4c888: b1c0 cmpal %d0,%a0
4c88a: 654c bcss 4c8d8 <_Heap_Free+0xbc> <== NEVER TAKEN
4c88c: b1c1 cmpal %d1,%a0
4c88e: 6248 bhis 4c8d8 <_Heap_Free+0xbc> <== 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;
4c890: 7001 moveq #1,%d0 4c892: c0a8 0004 andl %a0@(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) ) {
4c896: 6740 beqs 4c8d8 <_Heap_Free+0xbc> <== NEVER TAKEN
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
4c898: 4a05 tstb %d5 4c89a: 6700 00d2 beqw 4c96e <_Heap_Free+0x152>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c89e: 266a 0008 moveal %a2@(8),%a3 <== NOT EXECUTED
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
uintptr_t const size = block_size + prev_size + next_block_size;
4c8a2: d882 addl %d2,%d4 <== NOT EXECUTED 4c8a4: d684 addl %d4,%d3 <== NOT EXECUTED
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c8a6: 7001 moveq #1,%d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8a8: 246a 000c moveal %a2@(12),%a2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
4c8ac: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED
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;
4c8b0: 8083 orl %d3,%d0 <== NOT EXECUTED
next->prev = prev;
4c8b2: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED
}
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;
4c8b6: 53a9 0038 subql #1,%a1@(56) <== NOT EXECUTED
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;
4c8ba: 2183 3800 movel %d3,%a0@(00000000,%d3:l) <== NOT EXECUTED
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;
4c8be: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c8c2: 53a9 0040 subql #1,%a1@(64) <== NOT EXECUTED
++stats->frees;
4c8c6: 52a9 0050 addql #1,%a1@(80) <== NOT EXECUTED
stats->free_size += block_size;
4c8ca: d5a9 0030 addl %d2,%a1@(48) <== NOT EXECUTED
return( true );
4c8ce: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4c8d0: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 4c8d4: 4e5e unlk %fp 4c8d6: 4e75 rts
4c8d8: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 <== NOT EXECUTED
/* As we always coalesce free blocks, the block that preceedes prev_block
must have been used. */
if ( !_Heap_Is_prev_used ( prev_block) ) {
_HAssert( false );
return( false );
4c8dc: 4200 clrb %d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8de: 4e5e unlk %fp <== NOT EXECUTED 4c8e0: 4e75 rts <== NOT EXECUTED
uintptr_t const size = block_size + prev_size;
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 */
4c8e2: 4a05 tstb %d5
4c8e4: 6736 beqs 4c91c <_Heap_Free+0x100>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8e6: 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;
4c8ea: d882 addl %d2,%d4
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c8ec: 7001 moveq #1,%d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8ee: 246a 000c moveal %a2@(12),%a2
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
4c8f2: 214b 0008 movel %a3,%a0@(8)
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;
4c8f6: 8084 orl %d4,%d0
new_block->prev = prev;
4c8f8: 214a 000c movel %a2,%a0@(12)
next_block = _Heap_Block_at( block, size );
next_block->prev_size = size;
4c8fc: 2184 4800 movel %d4,%a0@(00000000,%d4:l)
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;
4c900: 2140 0004 movel %d0,%a0@(4)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c904: 7001 moveq #1,%d0
next->prev = new_block;
prev->next = new_block;
4c906: 2548 0008 movel %a0,%a2@(8)
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
4c90a: 2748 000c movel %a0,%a3@(12)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c90e: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c912: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c916: d5a9 0030 addl %d2,%a1@(48) 4c91a: 60b4 bras 4c8d0 <_Heap_Free+0xb4>
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;
4c91c: 2029 0038 movel %a1@(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;
4c920: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c922: 7afe moveq #-2,%d5
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4c924: 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;
4c926: 2669 0008 moveal %a1@(8),%a3
new_block->next = next;
new_block->prev = block_before;
4c92a: 2149 000c movel %a1,%a0@(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;
4c92e: 8282 orl %d2,%d1
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4c930: 214b 0008 movel %a3,%a0@(8) 4c934: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c938: cbaa 0004 andl %d5,%a2@(4)
new_block->prev = block_before; block_before->next = new_block; next->prev = new_block;
4c93c: 2748 000c movel %a0,%a3@(12)
next_block->prev_size = block_size;
4c940: 2482 movel %d2,%a2@
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
4c942: 2348 0008 movel %a0,%a1@(8)
/* Statistics */
++stats->free_blocks;
4c946: 2340 0038 movel %d0,%a1@(56)
if ( stats->max_free_blocks < stats->free_blocks ) {
4c94a: b0a9 003c cmpl %a1@(60),%d0 4c94e: 6300 ff72 blsw 4c8c2 <_Heap_Free+0xa6>
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c952: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c956: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c95a: d5a9 0030 addl %d2,%a1@(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;
4c95e: 2340 003c movel %d0,%a1@(60)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c962: 7001 moveq #1,%d0 4c964: 6000 ff6a braw 4c8d0 <_Heap_Free+0xb4>
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 ));
4c968: 4205 clrb %d5 <== NOT EXECUTED 4c96a: 6000 ff12 braw 4c87e <_Heap_Free+0x62> <== NOT EXECUTED
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;
4c96e: d682 addl %d2,%d3
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c970: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c972: 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;
4c974: 8283 orl %d3,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
4c976: 2483 movel %d3,%a2@
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c978: 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;
4c97a: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c97e: cbaa 0004 andl %d5,%a2@(4)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c982: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c986: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c98a: d5a9 0030 addl %d2,%a1@(48) 4c98e: 6000 ff40 braw 4c8d0 <_Heap_Free+0xb4>
...
0004cb28 <_Heap_Free_block>:
#include <rtems/system.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/heap.h>
static void _Heap_Free_block( Heap_Control *heap, Heap_Block *block )
{
4cb28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cb2c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Heap_Statistics *const stats = &heap->stats;
/* Statistics */
++stats->used_blocks;
4cb30: 52a8 0040 addql #1,%a0@(64) <== NOT EXECUTED
--stats->frees;
4cb34: 53a8 0050 subql #1,%a0@(80) <== NOT EXECUTED
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4cb38: 50ae 000c addql #8,%fp@(12) <== NOT EXECUTED
}
4cb3c: 4e5e unlk %fp <== NOT EXECUTED
/* Statistics */
++stats->used_blocks;
--stats->frees;
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4cb3e: 4ef9 0004 cda0 jmp 4cda0 <_Heap_Free> <== NOT EXECUTED
00047590 <_Heap_Get_first_and_last_block>:
uintptr_t page_size,
uintptr_t min_block_size,
Heap_Block **first_block_ptr,
Heap_Block **last_block_ptr
)
{
47590: 4e56 fff0 linkw %fp,#-16 47594: 222e 0008 movel %fp@(8),%d1
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
uintptr_t const alloc_area_begin =
_Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
47598: 2001 movel %d1,%d0 4759a: 5080 addql #8,%d0
uintptr_t page_size,
uintptr_t min_block_size,
Heap_Block **first_block_ptr,
Heap_Block **last_block_ptr
)
{
4759c: 48d7 003c moveml %d2-%d5,%sp@ 475a0: 242e 0010 movel %fp@(16),%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
475a4: 2a00 movel %d0,%d5 475a6: 262e 000c movel %fp@(12),%d3
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
475aa: 2043 moveal %d3,%a0 475ac: d1c1 addal %d1,%a0 475ae: 4c42 5004 remul %d2,%d4,%d5
if ( remainder != 0 ) {
475b2: 4a84 tstl %d4
475b4: 6704 beqs 475ba <_Heap_Get_first_and_last_block+0x2a><== ALWAYS TAKEN
return value - remainder + alignment;
475b6: d082 addl %d2,%d0 <== NOT EXECUTED 475b8: 9084 subl %d4,%d0 <== NOT EXECUTED
_Heap_Align_down( heap_area_size - overhead, page_size );
Heap_Block *const first_block = (Heap_Block *) first_block_begin;
Heap_Block *const last_block =
_Heap_Block_at( first_block, first_block_size );
if (
475ba: b1c1 cmpal %d1,%a0
475bc: 6532 bcss 475f0 <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN
uintptr_t const alloc_area_begin =
_Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
uintptr_t const first_block_begin =
alloc_area_begin - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const overhead =
HEAP_BLOCK_HEADER_SIZE + (first_block_begin - heap_area_begin);
475be: 2040 moveal %d0,%a0 475c0: 5188 subql #8,%a0
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
uintptr_t const alloc_area_begin =
_Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
uintptr_t const first_block_begin =
alloc_area_begin - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const overhead =
475c2: 9081 subl %d1,%d0
Heap_Block *const last_block =
_Heap_Block_at( first_block, first_block_size );
if (
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
475c4: b083 cmpl %d3,%d0
475c6: 6428 bccs 475f0 <_Heap_Get_first_and_last_block+0x60>
uintptr_t const first_block_begin =
alloc_area_begin - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const overhead =
HEAP_BLOCK_HEADER_SIZE + (first_block_begin - heap_area_begin);
uintptr_t const first_block_size =
_Heap_Align_down( heap_area_size - overhead, page_size );
475c8: 9680 subl %d0,%d3
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
475ca: 2203 movel %d3,%d1 475cc: 4c42 1000 remul %d2,%d0,%d1 475d0: 9680 subl %d0,%d3
_Heap_Block_at( first_block, first_block_size );
if (
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
|| first_block_size < min_block_size
475d2: b6ae 0014 cmpl %fp@(20),%d3
475d6: 6518 bcss 475f0 <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN
) {
/* Invalid area or area too small */
return false;
}
*first_block_ptr = first_block;
475d8: 226e 0018 moveal %fp@(24),%a1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
475dc: d688 addl %a0,%d3 475de: 2288 movel %a0,%a1@ 475e0: 226e 001c moveal %fp@(28),%a1 475e4: 2283 movel %d3,%a1@
*last_block_ptr = last_block;
return true;
}
475e6: 4cd7 003c moveml %sp@,%d2-%d5
}
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
475ea: 7001 moveq #1,%d0
}
475ec: 4e5e unlk %fp 475ee: 4e75 rts 475f0: 4cd7 003c moveml %sp@,%d2-%d5
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
|| first_block_size < min_block_size
) {
/* Invalid area or area too small */
return false;
475f4: 4200 clrb %d0
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
}
475f6: 4e5e unlk %fp <== NOT EXECUTED
0005196c <_Heap_Get_free_information>:
void _Heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
5196c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 51970: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 51974: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 51978: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
5197c: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
)
{
Heap_Block *the_block;
Heap_Block *const tail = _Heap_Free_list_tail(the_heap);
info->number = 0;
51980: 4292 clrl %a2@ <== NOT EXECUTED
info->largest = 0;
51982: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
info->total = 0;
51986: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
for(the_block = _Heap_Free_list_first(the_heap);
5198a: b1cb cmpal %a3,%a0 <== NOT EXECUTED 5198c: 6732 beqs 519c0 <_Heap_Get_free_information+0x54><== NOT EXECUTED 5198e: 327c 0001 moveaw #1,%a1 <== NOT EXECUTED 51992: 4282 clrl %d2 <== NOT EXECUTED 51994: 4281 clrl %d1 <== NOT EXECUTED
- 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;
51996: 70fe moveq #-2,%d0 <== NOT EXECUTED
the_block != tail;
the_block = the_block->next)
51998: 2609 movel %a1,%d3 <== NOT EXECUTED 5199a: 5283 addql #1,%d3 <== NOT EXECUTED 5199c: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
/* 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;
519a0: d280 addl %d0,%d1 <== NOT EXECUTED
if ( info->largest < the_size )
519a2: b480 cmpl %d0,%d2 <== NOT EXECUTED 519a4: 6404 bccs 519aa <_Heap_Get_free_information+0x3e><== NOT EXECUTED
info->largest = the_size;
519a6: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
the_block != tail;
the_block = the_block->next)
519aa: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
info->number = 0;
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
519ae: b1cb cmpal %a3,%a0 <== NOT EXECUTED 519b0: 6708 beqs 519ba <_Heap_Get_free_information+0x4e><== NOT EXECUTED 519b2: 242a 0004 movel %a2@(4),%d2 <== NOT EXECUTED 519b6: 2243 moveal %d3,%a1 <== NOT EXECUTED 519b8: 60dc bras 51996 <_Heap_Get_free_information+0x2a><== NOT EXECUTED 519ba: 2489 movel %a1,%a2@ <== NOT EXECUTED 519bc: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
519c0: 4cd7 0c0c moveml %sp@,%d2-%d3/%a2-%a3 <== NOT EXECUTED 519c4: 4e5e unlk %fp <== NOT EXECUTED
0004d48c <_Heap_Get_information>:
void _Heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
4d48c: 4e56 fff0 linkw %fp,#-16 4d490: 226e 0008 moveal %fp@(8),%a1 4d494: 48d7 041c moveml %d2-%d4/%a2,%sp@ 4d498: 282e 000c movel %fp@(12),%d4
Heap_Block *the_block = the_heap->first_block;
Heap_Block *const end = the_heap->last_block;
memset(the_info, 0, sizeof(*the_info));
4d49c: 2044 moveal %d4,%a0
void _Heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
Heap_Block *the_block = the_heap->first_block;
4d49e: 2469 0020 moveal %a1@(32),%a2
Heap_Block *const end = the_heap->last_block;
4d4a2: 2429 0024 movel %a1@(36),%d2
memset(the_info, 0, sizeof(*the_info));
4d4a6: 4298 clrl %a0@+ 4d4a8: 4298 clrl %a0@+ 4d4aa: 4298 clrl %a0@+ 4d4ac: 4298 clrl %a0@+ 4d4ae: 4298 clrl %a0@+ 4d4b0: 4290 clrl %a0@
while ( the_block != end ) {
4d4b2: b48a cmpl %a2,%d2
4d4b4: 6738 beqs 4d4ee <_Heap_Get_information+0x62> <== NEVER TAKEN
uintptr_t const the_size = _Heap_Block_size(the_block);
Heap_Block *const next_block = _Heap_Block_at(the_block, the_size);
Heap_Information *info;
if ( _Heap_Is_prev_used(next_block) )
info = &the_info->Used;
4d4b6: 2604 movel %d4,%d3 4d4b8: 0683 0000 000c addil #12,%d3
Heap_Block *the_block = the_heap->first_block;
Heap_Block *const end = the_heap->last_block;
memset(the_info, 0, sizeof(*the_info));
while ( the_block != end ) {
4d4be: 222a 0004 movel %a2@(4),%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;
4d4c2: 70fe moveq #-2,%d0
uintptr_t const the_size = _Heap_Block_size(the_block);
Heap_Block *const next_block = _Heap_Block_at(the_block, the_size);
Heap_Information *info;
if ( _Heap_Is_prev_used(next_block) )
info = &the_info->Used;
4d4c4: 2043 moveal %d3,%a0 4d4c6: c081 andl %d1,%d0
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4d4c8: 43f2 0800 lea %a2@(00000000,%d0:l),%a1
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4d4cc: 2229 0004 movel %a1@(4),%d1
while ( the_block != end ) {
uintptr_t const the_size = _Heap_Block_size(the_block);
Heap_Block *const next_block = _Heap_Block_at(the_block, the_size);
Heap_Information *info;
if ( _Heap_Is_prev_used(next_block) )
4d4d0: 0801 0000 btst #0,%d1
4d4d4: 6602 bnes 4d4d8 <_Heap_Get_information+0x4c>
info = &the_info->Used;
else
info = &the_info->Free;
4d4d6: 2044 moveal %d4,%a0
info->number++;
4d4d8: 5290 addql #1,%a0@
Heap_Block *the_block = the_heap->first_block;
Heap_Block *const end = the_heap->last_block;
memset(the_info, 0, sizeof(*the_info));
while ( the_block != end ) {
4d4da: 2449 moveal %a1,%a2
info = &the_info->Used;
else
info = &the_info->Free;
info->number++;
info->total += the_size;
4d4dc: d1a8 0008 addl %d0,%a0@(8)
if ( info->largest < the_size )
4d4e0: b0a8 0004 cmpl %a0@(4),%d0
4d4e4: 6304 blss 4d4ea <_Heap_Get_information+0x5e>
info->largest = the_size;
4d4e6: 2140 0004 movel %d0,%a0@(4)
Heap_Block *the_block = the_heap->first_block;
Heap_Block *const end = the_heap->last_block;
memset(the_info, 0, sizeof(*the_info));
while ( the_block != end ) {
4d4ea: b3c2 cmpal %d2,%a1
4d4ec: 66d4 bnes 4d4c2 <_Heap_Get_information+0x36>
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4d4ee: 4cd7 041c moveml %sp@,%d2-%d4/%a2 4d4f2: 4e5e unlk %fp
...
000475fa <_Heap_Initialize>:
Heap_Control *heap,
void *heap_area_begin_ptr,
uintptr_t heap_area_size,
uintptr_t page_size
)
{
475fa: 4e56 ffe0 linkw %fp,#-32 475fe: 48d7 047c moveml %d2-%d6/%a2,%sp@ 47602: 246e 0008 moveal %fp@(8),%a2 47606: 282e 000c movel %fp@(12),%d4 4760a: 2a2e 0010 movel %fp@(16),%d5 4760e: 242e 0014 movel %fp@(20),%d2
uintptr_t first_block_begin = 0; uintptr_t first_block_size = 0; uintptr_t last_block_begin = 0; uintptr_t min_block_size = 0; bool area_ok = false; Heap_Block *first_block = NULL;
47612: 42ae fffc clrl %fp@(-4)
Heap_Block *last_block = NULL;
47616: 42ae fff8 clrl %fp@(-8)
if ( page_size == 0 ) {
4761a: 4a82 tstl %d2
4761c: 6750 beqs 4766e <_Heap_Initialize+0x74> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4761e: 7003 moveq #3,%d0 47620: c082 andl %d2,%d0
if ( remainder != 0 ) {
47622: 6704 beqs 47628 <_Heap_Initialize+0x2e> <== ALWAYS TAKEN
return value - remainder + alignment;
47624: 5882 addql #4,%d2 <== NOT EXECUTED 47626: 9480 subl %d0,%d2 <== NOT EXECUTED
page_size = CPU_ALIGNMENT;
} else {
page_size = _Heap_Align_up( page_size, CPU_ALIGNMENT );
if ( page_size < CPU_ALIGNMENT ) {
47628: 7003 moveq #3,%d0 4762a: b082 cmpl %d2,%d0
4762c: 6434 bccs 47662 <_Heap_Initialize+0x68> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4762e: 7210 moveq #16,%d1 47630: 4c42 1000 remul %d2,%d0,%d1
if ( remainder != 0 ) {
47634: 4a80 tstl %d0 47636: 6700 00e8 beqw 47720 <_Heap_Initialize+0x126>
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
4763a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
return value - remainder + alignment;
4763e: 2602 movel %d2,%d3 <== NOT EXECUTED 47640: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47644: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED 4764a: 9680 subl %d0,%d3 <== NOT EXECUTED 4764c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4764e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47650: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47652: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47654: 4eb9 0004 7590 jsr 47590 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
4765a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4765e: 4a00 tstb %d0 <== NOT EXECUTED 47660: 662e bnes 47690 <_Heap_Initialize+0x96> <== NOT EXECUTED
return 0;
47662: 4280 clrl %d0
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
47664: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2 4766a: 4e5e unlk %fp 4766c: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
4766e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
} else {
return value;
47672: 7610 moveq #16,%d3 <== NOT EXECUTED 47674: 486e fffc pea %fp@(-4) <== NOT EXECUTED
bool area_ok = false;
Heap_Block *first_block = NULL;
Heap_Block *last_block = NULL;
if ( page_size == 0 ) {
page_size = CPU_ALIGNMENT;
47678: 7404 moveq #4,%d2 <== NOT EXECUTED
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
4767a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4767c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4767e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47680: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47682: 4eb9 0004 7590 jsr 47590 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
47688: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4768c: 4a00 tstb %d0 <== NOT EXECUTED 4768e: 67d2 beqs 47662 <_Heap_Initialize+0x68> <== NOT EXECUTED
return 0;
}
memset(heap, 0, sizeof(*heap));
47690: 4878 0058 pea 58 <DBL_MANT_DIG+0x23>
uintptr_t page_size
)
{
Heap_Statistics *const stats = &heap->stats;
uintptr_t const heap_area_begin = (uintptr_t) heap_area_begin_ptr;
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
47694: da84 addl %d4,%d5
);
if ( !area_ok ) {
return 0;
}
memset(heap, 0, sizeof(*heap));
47696: 42a7 clrl %sp@- 47698: 2f0a movel %a2,%sp@- 4769a: 4eb9 0004 f228 jsr 4f228 <memset>
stats->size = first_block_size; stats->free_size = first_block_size; stats->min_free_size = first_block_size; stats->free_blocks = 1; stats->max_free_blocks = 1; stats->instance = instance++;
476a0: 2239 0005 f43c movel 5f43c <instance>,%d1 476a6: 2c01 movel %d1,%d6 476a8: 5286 addql #1,%d6
);
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
476aa: 4fef 000c lea %sp@(12),%sp
heap->Protection.block_check = _Heap_Protection_block_check_default;
heap->Protection.block_error = _Heap_Protection_block_error_default;
#endif
first_block_begin = (uintptr_t) first_block;
last_block_begin = (uintptr_t) last_block;
476ae: 226e fff8 moveal %fp@(-8),%a1
first_block_size = last_block_begin - first_block_begin;
476b2: 2009 movel %a1,%d0
heap->Protection.block_initialize = _Heap_Protection_block_initialize_default;
heap->Protection.block_check = _Heap_Protection_block_check_default;
heap->Protection.block_error = _Heap_Protection_block_error_default;
#endif
first_block_begin = (uintptr_t) first_block;
476b4: 206e fffc moveal %fp@(-4),%a0
last_block_begin = (uintptr_t) last_block; first_block_size = last_block_begin - first_block_begin;
476b8: 9088 subl %a0,%d0
stats->size = first_block_size; stats->free_size = first_block_size; stats->min_free_size = first_block_size; stats->free_blocks = 1; stats->max_free_blocks = 1; stats->instance = instance++;
476ba: 23c6 0005 f43c movel %d6,5f43c <instance>
last_block_begin = (uintptr_t) last_block;
first_block_size = last_block_begin - first_block_begin;
/* First block */
first_block->prev_size = heap_area_end;
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
476c0: 7c01 moveq #1,%d6 476c2: 8c80 orl %d0,%d6
first_block_begin = (uintptr_t) first_block;
last_block_begin = (uintptr_t) last_block;
first_block_size = last_block_begin - first_block_begin;
/* First block */
first_block->prev_size = heap_area_end;
476c4: 2085 movel %d5,%a0@
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
476c6: 2146 0004 movel %d6,%a0@(4)
/* Statistics */
stats->size = first_block_size;
stats->free_size = first_block_size;
stats->min_free_size = first_block_size;
stats->free_blocks = 1;
476ca: 7c01 moveq #1,%d6
first_block_size = last_block_begin - first_block_begin;
/* First block */
first_block->prev_size = heap_area_end;
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
first_block->next = _Heap_Free_list_tail( heap );
476cc: 214a 0008 movel %a2,%a0@(8)
first_block->prev = _Heap_Free_list_head( heap );
476d0: 214a 000c movel %a2,%a0@(12)
_Heap_Protection_block_initialize( heap, first_block );
/* Heap control */
heap->page_size = page_size;
476d4: 2542 0010 movel %d2,%a2@(16)
* This feature will be used to terminate the scattered heap area list. See
* also _Heap_Extend().
*/
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{
_Heap_Block_set_size(
476d8: 2408 movel %a0,%d2 476da: 9489 subl %a1,%d2
heap->min_block_size = min_block_size;
476dc: 2543 0014 movel %d3,%a2@(20)
heap->area_begin = heap_area_begin;
476e0: 2544 0018 movel %d4,%a2@(24)
heap->area_end = heap_area_end;
476e4: 2545 001c movel %d5,%a2@(28)
heap->first_block = first_block;
476e8: 2548 0020 movel %a0,%a2@(32)
heap->last_block = last_block;
476ec: 2549 0024 movel %a1,%a2@(36) 476f0: 2342 0004 movel %d2,%a1@(4)
_Heap_Free_list_head( heap )->next = first_block;
_Heap_Free_list_tail( heap )->prev = first_block;
/* Last block */
last_block->prev_size = first_block_size;
476f4: 2280 movel %d0,%a1@
heap->min_block_size = min_block_size; heap->area_begin = heap_area_begin; heap->area_end = heap_area_end; heap->first_block = first_block; heap->last_block = last_block; _Heap_Free_list_head( heap )->next = first_block;
476f6: 2548 0008 movel %a0,%a2@(8)
_Heap_Free_list_tail( heap )->prev = first_block;
476fa: 2548 000c movel %a0,%a2@(12)
last_block->size_and_flag = 0;
_Heap_Set_last_block_size( heap );
_Heap_Protection_block_initialize( heap, last_block );
/* Statistics */
stats->size = first_block_size;
476fe: 2540 002c movel %d0,%a2@(44)
stats->free_size = first_block_size;
47702: 2540 0030 movel %d0,%a2@(48)
stats->min_free_size = first_block_size;
47706: 2540 0034 movel %d0,%a2@(52)
stats->free_blocks = 1;
4770a: 2546 0038 movel %d6,%a2@(56)
stats->max_free_blocks = 1;
4770e: 2546 003c movel %d6,%a2@(60)
stats->instance = instance++;
47712: 2541 0028 movel %d1,%a2@(40)
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
47716: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2 4771c: 4e5e unlk %fp 4771e: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
47720: 486e fff8 pea %fp@(-8)
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
47724: 7610 moveq #16,%d3 47726: 486e fffc pea %fp@(-4) 4772a: 2f03 movel %d3,%sp@- 4772c: 2f02 movel %d2,%sp@- 4772e: 2f05 movel %d5,%sp@- 47730: 2f04 movel %d4,%sp@- 47732: 4eb9 0004 7590 jsr 47590 <_Heap_Get_first_and_last_block>
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
47738: 4fef 0018 lea %sp@(24),%sp 4773c: 4a00 tstb %d0 4773e: 6700 ff22 beqw 47662 <_Heap_Initialize+0x68> 47742: 6000 ff4c braw 47690 <_Heap_Initialize+0x96>
0005c6b0 <_Heap_Resize_block>:
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5c6b0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5c6b4: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED 5c6b8: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 5c6bc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
5c6c0: 2202 movel %d2,%d1 <== NOT EXECUTED 5c6c2: 2042 moveal %d2,%a0 <== NOT EXECUTED 5c6c4: 5188 subql #8,%a0 <== NOT EXECUTED 5c6c6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5c6ca: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED 5c6d0: 266e 0018 moveal %fp@(24),%a3 <== NOT EXECUTED
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
5c6d4: 91c0 subal %d0,%a0 <== NOT EXECUTED
uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr;
Heap_Block *const block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
*old_size = 0;
5c6d6: 4291 clrl %a1@ <== NOT EXECUTED
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5c6d8: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr;
Heap_Block *const block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
*old_size = 0;
*new_size = 0;
5c6dc: 4293 clrl %a3@ <== NOT EXECUTED
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;
5c6de: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 5c6e2: 6500 0098 bcsw 5c77c <_Heap_Resize_block+0xcc> <== NOT EXECUTED 5c6e6: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED 5c6ea: 6200 0090 bhiw 5c77c <_Heap_Resize_block+0xcc> <== NOT EXECUTED
- 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;
5c6ee: 76fe moveq #-2,%d3 <== NOT EXECUTED 5c6f0: 78fe moveq #-2,%d4 <== NOT EXECUTED
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;
5c6f2: 7a01 moveq #1,%d5 <== NOT EXECUTED
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t block_size = _Heap_Block_size( block );
uintptr_t block_end = block_begin + block_size;
uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS;
5c6f4: 7204 moveq #4,%d1 <== NOT EXECUTED 5c6f6: 9282 subl %d2,%d1 <== NOT EXECUTED
- 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;
5c6f8: c6a8 0004 andl %a0@(4),%d3 <== NOT EXECUTED
{
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t block_size = _Heap_Block_size( block );
uintptr_t block_end = block_begin + block_size;
5c6fc: 49f0 3800 lea %a0@(00000000,%d3:l),%a4 <== NOT EXECUTED
uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS;
5c700: d28c addl %a4,%d1 <== NOT EXECUTED 5c702: c8ac 0004 andl %a4@(4),%d4 <== NOT EXECUTED
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;
5c706: cab4 4804 andl %a4@(00000004,%d4:l),%d5 <== NOT EXECUTED
bool next_block_is_free = _Heap_Is_free( next_block );;
_HAssert( _Heap_Is_block_in_heap( heap, next_block ) );
_HAssert( _Heap_Is_prev_used( next_block ) );
*old_size = alloc_size;
5c70a: 2281 movel %d1,%a1@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_free(
const Heap_Block *block
)
{
return !_Heap_Is_used( block );
5c70c: 4a85 tstl %d5 <== NOT EXECUTED 5c70e: 57c5 seq %d5 <== NOT EXECUTED 5c710: 4485 negl %d5 <== NOT EXECUTED
if ( next_block_is_free ) {
5c712: 4a05 tstb %d5 <== NOT EXECUTED 5c714: 6672 bnes 5c788 <_Heap_Resize_block+0xd8> <== NOT EXECUTED
block_size += next_block_size;
alloc_size += next_block_size;
}
if ( new_alloc_size > alloc_size ) {
5c716: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c718: 6576 bcss 5c790 <_Heap_Resize_block+0xe0> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
}
if ( next_block_is_free ) {
5c71a: 4a05 tstb %d5 <== NOT EXECUTED 5c71c: 672a beqs 5c748 <_Heap_Resize_block+0x98> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
5c71e: 7201 moveq #1,%d1 <== NOT EXECUTED 5c720: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c724: 226c 0008 moveal %a4@(8),%a1 <== NOT EXECUTED
block->size_and_flag = size | flag;
5c728: 8283 orl %d3,%d1 <== NOT EXECUTED 5c72a: 286c 000c moveal %a4@(12),%a4 <== NOT EXECUTED 5c72e: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Block_set_size( block, block_size );
_Heap_Free_list_remove( next_block );
next_block = _Heap_Block_at( block, block_size );
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
5c732: 7201 moveq #1,%d1 <== NOT EXECUTED 5c734: 83b0 3804 orl %d1,%a0@(00000004,%d3:l) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
5c738: 2949 0008 movel %a1,%a4@(8) <== NOT EXECUTED
next->prev = prev;
5c73c: 234c 000c movel %a4,%a1@(12) <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
5c740: 53aa 0038 subql #1,%a2@(56) <== NOT EXECUTED
stats->free_size -= next_block_size;
5c744: 99aa 0030 subl %d4,%a2@(48) <== NOT EXECUTED
}
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
5c748: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c74a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c74c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5c74e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c750: 4eb9 0004 7746 jsr 47746 <_Heap_Block_allocate> <== NOT EXECUTED
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
*new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS;
/* Statistics */
++stats->resizes;
5c756: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
- 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;
5c75a: 72fe moveq #-2,%d1 <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
stats->free_size -= next_block_size;
}
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
5c75c: 2040 moveal %d0,%a0 <== NOT EXECUTED
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
*new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS;
5c75e: 2240 moveal %d0,%a1 <== NOT EXECUTED 5c760: 93c2 subal %d2,%a1 <== NOT EXECUTED
/* Statistics */
++stats->resizes;
return HEAP_RESIZE_SUCCESSFUL;
5c762: 4280 clrl %d0 <== NOT EXECUTED 5c764: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
*new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS;
5c768: 43f1 1804 lea %a1@(00000004,%d1:l),%a1 <== NOT EXECUTED 5c76c: 2689 movel %a1,%a3@ <== NOT EXECUTED
/* Statistics */
++stats->resizes;
5c76e: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c772: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c778: 4e5e unlk %fp <== NOT EXECUTED 5c77a: 4e75 rts <== NOT EXECUTED
new_alloc_size,
old_size,
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
5c77c: 7002 moveq #2,%d0 <== NOT EXECUTED
} }
5c77e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c784: 4e5e unlk %fp <== NOT EXECUTED 5c786: 4e75 rts <== NOT EXECUTED
_HAssert( _Heap_Is_prev_used( next_block ) );
*old_size = alloc_size;
if ( next_block_is_free ) {
block_size += next_block_size;
5c788: d684 addl %d4,%d3 <== NOT EXECUTED
alloc_size += next_block_size;
5c78a: d284 addl %d4,%d1 <== NOT EXECUTED
}
if ( new_alloc_size > alloc_size ) {
5c78c: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c78e: 648a bccs 5c71a <_Heap_Resize_block+0x6a> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
5c790: 7001 moveq #1,%d0 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c792: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c798: 4e5e unlk %fp <== NOT EXECUTED
0005c79c <_Heap_Size_of_alloc_area>:
bool _Heap_Size_of_alloc_area(
Heap_Control *heap,
void *alloc_begin_ptr,
uintptr_t *alloc_size
)
{
5c79c: 4e56 0000 linkw %fp,#0 5c7a0: 202e 000c movel %fp@(12),%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
5c7a4: 2040 moveal %d0,%a0 5c7a6: 5188 subql #8,%a0 5c7a8: 226e 0008 moveal %fp@(8),%a1 5c7ac: 2f02 movel %d2,%sp@- 5c7ae: 2400 movel %d0,%d2 5c7b0: 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);
5c7b6: 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
5c7b8: 2229 0020 movel %a1@(32),%d1
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
5c7bc: b288 cmpl %a0,%d1
5c7be: 6236 bhis 5c7f6 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5c7c0: 2269 0024 moveal %a1@(36),%a1 5c7c4: b3c8 cmpal %a0,%a1
5c7c6: 652e bcss 5c7f6 <_Heap_Size_of_alloc_area+0x5a> <== 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;
5c7c8: 74fe moveq #-2,%d2 5c7ca: 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);
5c7ce: d1c2 addal %d2,%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;
5c7d0: b1c1 cmpal %d1,%a0
5c7d2: 6522 bcss 5c7f6 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5c7d4: b1c9 cmpal %a1,%a0
5c7d6: 621e bhis 5c7f6 <_Heap_Size_of_alloc_area+0x5a> <== 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;
5c7d8: 7201 moveq #1,%d1 5c7da: 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 )
5c7de: 6716 beqs 5c7f6 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5c7e0: 7204 moveq #4,%d1 5c7e2: 9280 subl %d0,%d1 5c7e4: 2001 movel %d1,%d0 5c7e6: d088 addl %a0,%d0 5c7e8: 226e 0010 moveal %fp@(16),%a1
return true;
}
5c7ec: 241f movel %sp@+,%d2 5c7ee: 4e5e unlk %fp
|| !_Heap_Is_prev_used( next_block )
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5c7f0: 2280 movel %d0,%a1@
return true;
5c7f2: 7001 moveq #1,%d0
}
5c7f4: 4e75 rts
5c7f6: 241f movel %sp@+,%d2 <== NOT EXECUTED 5c7f8: 4e5e unlk %fp <== NOT EXECUTED
if (
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
) {
return false;
5c7fa: 4200 clrb %d0 <== NOT EXECUTED
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
return true;
}
...
00048276 <_Heap_Walk>:
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
48276: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 4827a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4827e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
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;
48282: 4bfa ff94 lea %pc@(48218 <_Heap_Walk_print_nothing>),%a5<== NOT EXECUTED
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
48286: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
uintptr_t const page_size = heap->page_size;
4828a: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
4828e: 2c2a 0014 movel %a2@(20),%d6 <== NOT EXECUTED
Heap_Block *const first_block = heap->first_block;
48292: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED
Heap_Block *const last_block = heap->last_block;
48296: 2e2a 0024 movel %a2@(36),%d7 <== NOT EXECUTED
Heap_Block *block = first_block;
Heap_Walk_printer printer = dump ?
_Heap_Walk_print : _Heap_Walk_print_nothing;
4829a: 4a2e 0013 tstb %fp@(19) <== NOT EXECUTED 4829e: 6704 beqs 482a4 <_Heap_Walk+0x2e> <== NOT EXECUTED 482a0: 4bfa ff7e lea %pc@(48220 <_Heap_Walk_print>),%a5 <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
482a4: 7003 moveq #3,%d0 <== NOT EXECUTED 482a6: b0b9 0006 22b2 cmpl 622b2 <_System_state_Current>,%d0 <== NOT EXECUTED 482ac: 670c beqs 482ba <_Heap_Walk+0x44> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
482ae: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
}
block = next_block;
} while ( block != first_block );
return true;
482b4: 7001 moveq #1,%d0 <== NOT EXECUTED
}
482b6: 4e5e unlk %fp <== NOT EXECUTED 482b8: 4e75 rts <== NOT EXECUTED
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)(
482ba: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 482be: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 482c2: 2f07 movel %d7,%sp@- <== NOT EXECUTED 482c4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 482c6: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED 482ca: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 482ce: 2f06 movel %d6,%sp@- <== NOT EXECUTED 482d0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 482d2: 4879 0005 e553 pea 5e553 <_Status_Object_name_errors_to_status+0x5d><== NOT EXECUTED 482d8: 42a7 clrl %sp@- <== NOT EXECUTED 482da: 2f05 movel %d5,%sp@- <== NOT EXECUTED 482dc: 4e95 jsr %a5@ <== NOT EXECUTED
heap->area_begin, heap->area_end,
first_block, last_block,
first_free_block, last_free_block
);
if ( page_size == 0 ) {
482de: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 482e2: 4a83 tstl %d3 <== NOT EXECUTED 482e4: 6700 0082 beqw 48368 <_Heap_Walk+0xf2> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
482e8: 7003 moveq #3,%d0 <== NOT EXECUTED 482ea: c083 andl %d3,%d0 <== NOT EXECUTED
(*printer)( source, true, "page size is zero\n" );
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
482ec: 6600 0090 bnew 4837e <_Heap_Walk+0x108> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
482f0: 2206 movel %d6,%d1 <== NOT EXECUTED 482f2: 4c43 1000 remul %d3,%d0,%d1 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
482f6: 4a80 tstl %d0 <== NOT EXECUTED 482f8: 6600 00a4 bnew 4839e <_Heap_Walk+0x128> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
482fc: 2004 movel %d4,%d0 <== NOT EXECUTED 482fe: 5080 addql #8,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
48300: 4c43 0001 remul %d3,%d1,%d0 <== NOT EXECUTED
);
return false;
}
if (
48304: 4a81 tstl %d1 <== NOT EXECUTED 48306: 6600 00ae bnew 483b6 <_Heap_Walk+0x140> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4830a: 2044 moveal %d4,%a0 <== NOT EXECUTED 4830c: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED 48310: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
48314: 0801 0000 btst #0,%d1 <== NOT EXECUTED 48318: 6700 017e beqw 48498 <_Heap_Walk+0x222> <== NOT EXECUTED
- 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;
4831c: 2047 moveal %d7,%a0 <== NOT EXECUTED 4831e: 72fe moveq #-2,%d1 <== NOT EXECUTED 48320: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
48324: d1c1 addal %d1,%a0 <== NOT EXECUTED
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;
48326: 7201 moveq #1,%d1 <== NOT EXECUTED 48328: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_free( last_block ) ) {
4832c: 6724 beqs 48352 <_Heap_Walk+0xdc> <== NOT EXECUTED
);
return false;
}
if (
4832e: b1c4 cmpal %d4,%a0 <== NOT EXECUTED 48330: 6700 009c beqw 483ce <_Heap_Walk+0x158> <== NOT EXECUTED
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48334: 4879 0005 e6ad pea 5e6ad <_Status_Object_name_errors_to_status+0x1b7><== NOT EXECUTED 4833a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4833e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48340: 4e95 jsr %a5@ <== NOT EXECUTED 48342: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
48346: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48348: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4834e: 4e5e unlk %fp <== NOT EXECUTED 48350: 4e75 rts <== NOT EXECUTED
return false;
}
if ( _Heap_Is_free( last_block ) ) {
(*printer)(
48352: 4879 0005 e698 pea 5e698 <_Status_Object_name_errors_to_status+0x1a2><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48358: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4835c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4835e: 4e95 jsr %a5@ <== NOT EXECUTED 48360: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
48364: 4200 clrb %d0 <== NOT EXECUTED 48366: 60e0 bras 48348 <_Heap_Walk+0xd2> <== NOT EXECUTED
first_block, last_block,
first_free_block, last_free_block
);
if ( page_size == 0 ) {
(*printer)( source, true, "page size is zero\n" );
48368: 4879 0005 e5e4 pea 5e5e4 <_Status_Object_name_errors_to_status+0xee><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
4836e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48372: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48374: 4e95 jsr %a5@ <== NOT EXECUTED 48376: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
4837a: 4200 clrb %d0 <== NOT EXECUTED 4837c: 60ca bras 48348 <_Heap_Walk+0xd2> <== NOT EXECUTED
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
(*printer)(
4837e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48380: 4879 0005 e5f7 pea 5e5f7 <_Status_Object_name_errors_to_status+0x101><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48386: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4838a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4838c: 4e95 jsr %a5@ <== NOT EXECUTED 4838e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48392: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48394: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4839a: 4e5e unlk %fp <== NOT EXECUTED 4839c: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
(*printer)(
4839e: 2f06 movel %d6,%sp@- <== NOT EXECUTED 483a0: 4879 0005 e615 pea 5e615 <_Status_Object_name_errors_to_status+0x11f><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
483a6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 483aa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 483ac: 4e95 jsr %a5@ <== NOT EXECUTED 483ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
483b2: 4200 clrb %d0 <== NOT EXECUTED 483b4: 60de bras 48394 <_Heap_Walk+0x11e> <== NOT EXECUTED
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
) {
(*printer)(
483b6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 483b8: 4879 0005 e639 pea 5e639 <_Status_Object_name_errors_to_status+0x143><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
483be: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 483c2: 2f05 movel %d5,%sp@- <== NOT EXECUTED 483c4: 4e95 jsr %a5@ <== NOT EXECUTED 483c6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
483ca: 4200 clrb %d0 <== NOT EXECUTED 483cc: 60c6 bras 48394 <_Heap_Walk+0x11e> <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
483ce: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
483d2: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
483d6: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
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 ) {
483da: b1ca cmpal %a2,%a0 <== NOT EXECUTED 483dc: 6700 032c beqw 4870a <_Heap_Walk+0x494> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
483e0: 242a 0020 movel %a2@(32),%d2 <== NOT EXECUTED 483e4: 2d42 fff4 movel %d2,%fp@(-12) <== NOT EXECUTED
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;
483e8: b1c2 cmpal %d2,%a0 <== NOT EXECUTED 483ea: 6500 0092 bcsw 4847e <_Heap_Walk+0x208> <== NOT EXECUTED 483ee: 286a 0024 moveal %a2@(36),%a4 <== NOT EXECUTED 483f2: b1cc cmpal %a4,%a0 <== NOT EXECUTED 483f4: 6200 0088 bhiw 4847e <_Heap_Walk+0x208> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
483f8: 47e8 0008 lea %a0@(8),%a3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
483fc: 200b movel %a3,%d0 <== NOT EXECUTED 483fe: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 48402: 4c41 0002 remul %d1,%d2,%d0 <== NOT EXECUTED
);
return false;
}
if (
48406: 4a82 tstl %d2 <== NOT EXECUTED 48408: 6600 00a6 bnew 484b0 <_Heap_Walk+0x23a> <== NOT EXECUTED
- 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;
4840c: 74fe moveq #-2,%d2 <== NOT EXECUTED
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;
4840e: 7001 moveq #1,%d0 <== NOT EXECUTED
- 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;
48410: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED
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;
48414: c0b0 2804 andl %a0@(00000004,%d2:l),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48418: 664a bnes 48464 <_Heap_Walk+0x1ee> <== NOT EXECUTED 4841a: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4841e: 224a moveal %a2,%a1 <== NOT EXECUTED 48420: 2648 moveal %a0,%a3 <== NOT EXECUTED 48422: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
);
return false;
}
if ( free_block->prev != prev_block ) {
48426: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED 4842a: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4842c: 6600 02c0 bnew 486ee <_Heap_Walk+0x478> <== NOT EXECUTED
return false;
}
prev_block = free_block;
free_block = free_block->next;
48430: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
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 ) {
48434: b1ca cmpal %a2,%a0 <== NOT EXECUTED 48436: 6700 0092 beqw 484ca <_Heap_Walk+0x254> <== NOT EXECUTED
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;
4843a: b1c1 cmpal %d1,%a0 <== NOT EXECUTED 4843c: 6540 bcss 4847e <_Heap_Walk+0x208> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
4843e: 2408 movel %a0,%d2 <== NOT EXECUTED 48440: 5082 addql #8,%d2 <== NOT EXECUTED
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;
48442: b9c8 cmpal %a0,%a4 <== NOT EXECUTED 48444: 6538 bcss 4847e <_Heap_Walk+0x208> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
48446: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
4844a: 224b moveal %a3,%a1 <== NOT EXECUTED 4844c: 2648 moveal %a0,%a3 <== NOT EXECUTED 4844e: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED
);
return false;
}
if (
48452: 4a83 tstl %d3 <== NOT EXECUTED 48454: 665a bnes 484b0 <_Heap_Walk+0x23a> <== NOT EXECUTED
- 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;
48456: 74fe moveq #-2,%d2 <== NOT EXECUTED
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;
48458: 7001 moveq #1,%d0 <== NOT EXECUTED
- 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;
4845a: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED
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;
4845e: c0b0 2804 andl %a0@(00000004,%d2:l),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48462: 67c2 beqs 48426 <_Heap_Walk+0x1b0> <== NOT EXECUTED
(*printer)(
48464: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48466: 4879 0005 e72c pea 5e72c <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4846c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48470: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48472: 4e95 jsr %a5@ <== NOT EXECUTED 48474: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48478: 4200 clrb %d0 <== NOT EXECUTED 4847a: 6000 ff18 braw 48394 <_Heap_Walk+0x11e> <== NOT EXECUTED
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)(
4847e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48480: 4879 0005 e6dc pea 5e6dc <_Status_Object_name_errors_to_status+0x1e6><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48486: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4848a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4848c: 4e95 jsr %a5@ <== NOT EXECUTED 4848e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48492: 4200 clrb %d0 <== NOT EXECUTED 48494: 6000 fefe braw 48394 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
(*printer)(
48498: 4879 0005 e66a pea 5e66a <_Status_Object_name_errors_to_status+0x174><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
4849e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 484a2: 2f05 movel %d5,%sp@- <== NOT EXECUTED 484a4: 4e95 jsr %a5@ <== NOT EXECUTED 484a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
484aa: 4200 clrb %d0 <== NOT EXECUTED 484ac: 6000 fe9a braw 48348 <_Heap_Walk+0xd2> <== NOT EXECUTED
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
) {
(*printer)(
484b0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 484b2: 4879 0005 e6fc pea 5e6fc <_Status_Object_name_errors_to_status+0x206><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
484b8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 484bc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 484be: 4e95 jsr %a5@ <== NOT EXECUTED 484c0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
484c4: 4200 clrb %d0 <== NOT EXECUTED 484c6: 6000 fecc braw 48394 <_Heap_Walk+0x11e> <== NOT EXECUTED 484ca: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
484ce: 2844 moveal %d4,%a4 <== NOT EXECUTED 484d0: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 484d4: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 484d8: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED 484dc: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED 484e0: 2d47 ffec movel %d7,%fp@(-20) <== NOT EXECUTED
- 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;
484e4: 74fe moveq #-2,%d2 <== NOT EXECUTED 484e6: c483 andl %d3,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
484e8: 47f4 2800 lea %a4@(00000000,%d2:l),%a3 <== NOT EXECUTED
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;
484ec: b7c1 cmpal %d1,%a3 <== NOT EXECUTED 484ee: 657e bcss 4856e <_Heap_Walk+0x2f8> <== NOT EXECUTED 484f0: b7ea 0024 cmpal %a2@(36),%a3 <== NOT EXECUTED 484f4: 6278 bhis 4856e <_Heap_Walk+0x2f8> <== NOT EXECUTED
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;
484f6: b9ee ffec cmpal %fp@(-20),%a4 <== NOT EXECUTED 484fa: 56c1 sne %d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
484fc: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 48500: 2e02 movel %d2,%d7 <== NOT EXECUTED 48502: 3241 moveaw %d1,%a1 <== NOT EXECUTED 48504: 4c40 7001 remul %d0,%d1,%d7 <== NOT EXECUTED 48508: 2009 movel %a1,%d0 <== NOT EXECUTED 4850a: 4480 negl %d0 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
4850c: 4a81 tstl %d1 <== NOT EXECUTED 4850e: 6704 beqs 48514 <_Heap_Walk+0x29e> <== NOT EXECUTED 48510: 4a00 tstb %d0 <== NOT EXECUTED 48512: 667c bnes 48590 <_Heap_Walk+0x31a> <== NOT EXECUTED
);
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
48514: b486 cmpl %d6,%d2 <== NOT EXECUTED 48516: 6406 bccs 4851e <_Heap_Walk+0x2a8> <== NOT EXECUTED 48518: 4a00 tstb %d0 <== NOT EXECUTED 4851a: 6600 008e bnew 485aa <_Heap_Walk+0x334> <== NOT EXECUTED
);
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
4851e: b7cc cmpal %a4,%a3 <== NOT EXECUTED 48520: 6206 bhis 48528 <_Heap_Walk+0x2b2> <== NOT EXECUTED 48522: 4a00 tstb %d0 <== NOT EXECUTED 48524: 6600 00a8 bnew 485ce <_Heap_Walk+0x358> <== NOT EXECUTED
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;
48528: 7001 moveq #1,%d0 <== NOT EXECUTED 4852a: 7e01 moveq #1,%d7 <== NOT EXECUTED 4852c: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED 48530: c687 andl %d7,%d3 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
48532: 4a80 tstl %d0 <== NOT EXECUTED 48534: 6700 00cc beqw 48602 <_Heap_Walk+0x38c> <== NOT EXECUTED
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
}
} else if (prev_used) {
48538: 4a83 tstl %d3 <== NOT EXECUTED 4853a: 6700 00ac beqw 485e8 <_Heap_Walk+0x372> <== NOT EXECUTED
(*printer)(
4853e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48540: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48542: 4879 0005 e8d1 pea 5e8d1 <_Status_Object_name_errors_to_status+0x3db><== NOT EXECUTED 48548: 42a7 clrl %sp@- <== NOT EXECUTED 4854a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4854c: 4e95 jsr %a5@ <== NOT EXECUTED 4854e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
block->prev_size
);
}
block = next_block;
} while ( block != first_block );
48552: b7c4 cmpal %d4,%a3 <== NOT EXECUTED 48554: 6700 fd58 beqw 482ae <_Heap_Walk+0x38> <== NOT EXECUTED 48558: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED
- 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;
4855c: 74fe moveq #-2,%d2 <== NOT EXECUTED 4855e: 284b moveal %a3,%a4 <== NOT EXECUTED 48560: c483 andl %d3,%d2 <== NOT EXECUTED 48562: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
48566: 47f4 2800 lea %a4@(00000000,%d2:l),%a3 <== NOT EXECUTED
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;
4856a: b7c1 cmpal %d1,%a3 <== NOT EXECUTED 4856c: 6482 bccs 484f0 <_Heap_Walk+0x27a> <== NOT EXECUTED
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)(
4856e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48570: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48572: 4879 0005 e77a pea 5e77a <_Status_Object_name_errors_to_status+0x284><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
48578: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4857c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4857e: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48580: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 48584: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48586: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4858c: 4e5e unlk %fp <== NOT EXECUTED 4858e: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
(*printer)(
48590: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48592: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48594: 4879 0005 e7a7 pea 5e7a7 <_Status_Object_name_errors_to_status+0x2b1><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
4859a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4859e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485a0: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
485a2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 485a6: 4200 clrb %d0 <== NOT EXECUTED 485a8: 60dc bras 48586 <_Heap_Walk+0x310> <== NOT EXECUTED
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
(*printer)(
485aa: 2f06 movel %d6,%sp@- <== NOT EXECUTED 485ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED 485ae: 2f0c movel %a4,%sp@- <== NOT EXECUTED 485b0: 4879 0005 e7d5 pea 5e7d5 <_Status_Object_name_errors_to_status+0x2df><== NOT EXECUTED 485b6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 485ba: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485bc: 4e95 jsr %a5@ <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
485be: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
485c2: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
485c8: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
485ca: 4e5e unlk %fp <== NOT EXECUTED 485cc: 4e75 rts <== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
485ce: 2f0b movel %a3,%sp@- <== NOT EXECUTED 485d0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 485d2: 4879 0005 e800 pea 5e800 <_Status_Object_name_errors_to_status+0x30a><== NOT EXECUTED 485d8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 485dc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485de: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
485e0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 485e4: 4200 clrb %d0 <== NOT EXECUTED 485e6: 609e bras 48586 <_Heap_Walk+0x310> <== NOT EXECUTED
"block 0x%08x: size %u\n",
block,
block_size
);
} else {
(*printer)(
485e8: 2f14 movel %a4@,%sp@- <== NOT EXECUTED 485ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED 485ec: 2f0c movel %a4,%sp@- <== NOT EXECUTED 485ee: 4879 0005 e8e8 pea 5e8e8 <_Status_Object_name_errors_to_status+0x3f2><== NOT EXECUTED 485f4: 42a7 clrl %sp@- <== NOT EXECUTED 485f6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485f8: 4e95 jsr %a5@ <== NOT EXECUTED 485fa: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 485fe: 6000 ff52 braw 48552 <_Heap_Walk+0x2dc> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48602: 2e2a 0008 movel %a2@(8),%d7 <== NOT EXECUTED
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)(
48606: 43f9 0005 e520 lea 5e520 <_Status_Object_name_errors_to_status+0x2a>,%a1<== NOT EXECUTED
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
4860c: 222c 0008 movel %a4@(8),%d1 <== NOT EXECUTED
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)(
48610: b2aa 000c cmpl %a2@(12),%d1 <== NOT EXECUTED 48614: 670a beqs 48620 <_Heap_Walk+0x3aa> <== NOT EXECUTED
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
48616: 43f9 0005 e468 lea 5e468 <rtems_filesystem_default_pathconf+0xb4>,%a1<== NOT EXECUTED 4861c: b28a cmpl %a2,%d1 <== NOT EXECUTED 4861e: 6764 beqs 48684 <_Heap_Walk+0x40e> <== NOT EXECUTED
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 ?
48620: 202c 000c movel %a4@(12),%d0 <== NOT EXECUTED
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)(
48624: 41f9 0005 e539 lea 5e539 <_Status_Object_name_errors_to_status+0x43>,%a0<== NOT EXECUTED 4862a: b087 cmpl %d7,%d0 <== NOT EXECUTED 4862c: 670a beqs 48638 <_Heap_Walk+0x3c2> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
4862e: 41f9 0005 e468 lea 5e468 <rtems_filesystem_default_pathconf+0xb4>,%a0<== NOT EXECUTED 48634: b08a cmpl %a2,%d0 <== NOT EXECUTED 48636: 6754 beqs 4868c <_Heap_Walk+0x416> <== NOT EXECUTED
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)(
48638: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4863a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4863c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4863e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48640: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48642: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48644: 4879 0005 e834 pea 5e834 <_Status_Object_name_errors_to_status+0x33e><== NOT EXECUTED 4864a: 42a7 clrl %sp@- <== NOT EXECUTED 4864c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4864e: 4e95 jsr %a5@ <== NOT EXECUTED
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
48650: 2213 movel %a3@,%d1 <== NOT EXECUTED 48652: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 48656: b282 cmpl %d2,%d1 <== NOT EXECUTED 48658: 663a bnes 48694 <_Heap_Walk+0x41e> <== NOT EXECUTED
);
return false;
}
if ( !prev_used ) {
4865a: 4a83 tstl %d3 <== NOT EXECUTED 4865c: 6776 beqs 486d4 <_Heap_Walk+0x45e> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4865e: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED
)
{
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 ) {
48662: b1ca cmpal %a2,%a0 <== NOT EXECUTED 48664: 6754 beqs 486ba <_Heap_Walk+0x444> <== NOT EXECUTED
if ( free_block == block ) {
48666: b1cc cmpal %a4,%a0 <== NOT EXECUTED 48668: 6700 fee8 beqw 48552 <_Heap_Walk+0x2dc> <== NOT EXECUTED 4866c: 2e2e ffec movel %fp@(-20),%d7 <== NOT EXECUTED
return true;
}
free_block = free_block->next;
48670: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
)
{
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 ) {
48674: b1ca cmpal %a2,%a0 <== NOT EXECUTED 48676: 6742 beqs 486ba <_Heap_Walk+0x444> <== NOT EXECUTED
if ( free_block == block ) {
48678: b1cc cmpal %a4,%a0 <== NOT EXECUTED 4867a: 66f4 bnes 48670 <_Heap_Walk+0x3fa> <== NOT EXECUTED 4867c: 2d47 ffec movel %d7,%fp@(-20) <== NOT EXECUTED 48680: 6000 fed0 braw 48552 <_Heap_Walk+0x2dc> <== NOT EXECUTED
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
48684: 43f9 0005 e52f lea 5e52f <_Status_Object_name_errors_to_status+0x39>,%a1<== NOT EXECUTED 4868a: 6094 bras 48620 <_Heap_Walk+0x3aa> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
4868c: 41f9 0005 e549 lea 5e549 <_Status_Object_name_errors_to_status+0x53>,%a0<== NOT EXECUTED 48692: 60a4 bras 48638 <_Heap_Walk+0x3c2> <== NOT EXECUTED
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
(*printer)(
48694: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48696: 2f01 movel %d1,%sp@- <== NOT EXECUTED 48698: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4869a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4869c: 4879 0005 e869 pea 5e869 <_Status_Object_name_errors_to_status+0x373><== NOT EXECUTED 486a2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 486a6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486a8: 4e95 jsr %a5@ <== NOT EXECUTED 486aa: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
486ae: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
486b4: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
486b6: 4e5e unlk %fp <== NOT EXECUTED 486b8: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
486ba: 2f0c movel %a4,%sp@- <== NOT EXECUTED 486bc: 4879 0005 e90d pea 5e90d <_Status_Object_name_errors_to_status+0x417><== NOT EXECUTED 486c2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 486c6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486c8: 4e95 jsr %a5@ <== NOT EXECUTED 486ca: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
486ce: 4200 clrb %d0 <== NOT EXECUTED 486d0: 6000 fcc2 braw 48394 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !prev_used ) {
(*printer)(
486d4: 2f0c movel %a4,%sp@- <== NOT EXECUTED 486d6: 4879 0005 e8a2 pea 5e8a2 <_Status_Object_name_errors_to_status+0x3ac><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
486dc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 486e0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486e2: 4e95 jsr %a5@ <== NOT EXECUTED 486e4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
486e8: 4200 clrb %d0 <== NOT EXECUTED 486ea: 6000 fca8 braw 48394 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( free_block->prev != prev_block ) {
(*printer)(
486ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 486f0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 486f2: 4879 0005 e748 pea 5e748 <_Status_Object_name_errors_to_status+0x252><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
486f8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 486fc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486fe: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48700: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 48704: 4200 clrb %d0 <== NOT EXECUTED 48706: 6000 fe7e braw 48586 <_Heap_Walk+0x310> <== NOT EXECUTED
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 ) {
4870a: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
4870e: 2844 moveal %d4,%a4 <== NOT EXECUTED
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 ) {
48710: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48714: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 48718: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED 4871c: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED 48720: 2d47 ffec movel %d7,%fp@(-20) <== NOT EXECUTED 48724: 6000 fdbe braw 484e4 <_Heap_Walk+0x26e> <== NOT EXECUTED
00048220 <_Heap_Walk_print>:
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{
48220: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48224: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
va_list ap;
if ( error ) {
48228: 4a2e 000f tstb %fp@(15) <== NOT EXECUTED 4822c: 6624 bnes 48252 <_Heap_Walk_print+0x32> <== NOT EXECUTED
printk( "FAIL[%d]: ", source );
} else {
printk( "PASS[%d]: ", source );
4822e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48230: 4879 0005 e515 pea 5e515 <_Status_Object_name_errors_to_status+0x1f><== NOT EXECUTED 48236: 4eb9 0004 429c jsr 4429c <printk> <== NOT EXECUTED 4823c: 508f addql #8,%sp <== NOT EXECUTED
}
va_start( ap, fmt );
vprintk( fmt, ap );
4823e: 486e 0014 pea %fp@(20) <== NOT EXECUTED 48242: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48246: 4eb9 0004 60b8 jsr 460b8 <vprintk> <== NOT EXECUTED
va_end( ap );
4824c: 508f addql #8,%sp <== NOT EXECUTED
}
4824e: 4e5e unlk %fp <== NOT EXECUTED 48250: 4e75 rts <== NOT EXECUTED
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{
va_list ap;
if ( error ) {
printk( "FAIL[%d]: ", source );
48252: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48254: 4879 0005 e50a pea 5e50a <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED 4825a: 4eb9 0004 429c jsr 4429c <printk> <== NOT EXECUTED 48260: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "PASS[%d]: ", source );
}
va_start( ap, fmt );
vprintk( fmt, ap );
48262: 486e 0014 pea %fp@(20) <== NOT EXECUTED 48266: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4826a: 4eb9 0004 60b8 jsr 460b8 <vprintk> <== NOT EXECUTED
va_end( ap );
48270: 508f addql #8,%sp <== NOT EXECUTED
}
48272: 4e5e unlk %fp <== NOT EXECUTED
00048218 <_Heap_Walk_print_nothing>:
int source,
bool error,
const char *fmt,
...
)
{
48218: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Do nothing */ }
4821c: 4e5e unlk %fp <== NOT EXECUTED
00046c6e <_IO_Initialize_all_drivers>:
*
* Output Parameters: NONE
*/
void _IO_Initialize_all_drivers( void )
{
46c6e: 4e56 0000 linkw %fp,#0 46c72: 2f0a movel %a2,%sp@- 46c74: 2f02 movel %d2,%sp@-
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c76: 4ab9 0006 0508 tstl 60508 <_IO_Number_of_drivers>
46c7c: 671e beqs 46c9c <_IO_Initialize_all_drivers+0x2e><== NEVER TAKEN
46c7e: 4282 clrl %d2 46c80: 45f9 0004 c3fc lea 4c3fc <rtems_io_initialize>,%a2
(void) rtems_io_initialize( major, 0, NULL );
46c86: 42a7 clrl %sp@- 46c88: 42a7 clrl %sp@- 46c8a: 2f02 movel %d2,%sp@-
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c8c: 5282 addql #1,%d2
(void) rtems_io_initialize( major, 0, NULL );
46c8e: 4e92 jsr %a2@
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c90: 4fef 000c lea %sp@(12),%sp 46c94: b4b9 0006 0508 cmpl 60508 <_IO_Number_of_drivers>,%d2
46c9a: 65ea bcss 46c86 <_IO_Initialize_all_drivers+0x18>
(void) rtems_io_initialize( major, 0, NULL );
}
46c9c: 242e fff8 movel %fp@(-8),%d2 46ca0: 246e fffc moveal %fp@(-4),%a2
46ca4: 4e5e unlk %fp <== NOT EXECUTED
00046bd4 <_IO_Manager_initialization>:
* workspace.
*
*/
void _IO_Manager_initialization(void)
{
46bd4: 4e56 fff0 linkw %fp,#-16 46bd8: 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 = Configuration.Device_driver_table;
46bdc: 2639 0005 e416 movel 5e416 <Configuration+0x32>,%d3
drivers_in_table = Configuration.number_of_device_drivers;
46be2: 2439 0005 e412 movel 5e412 <Configuration+0x2e>,%d2
number_of_drivers = Configuration.maximum_drivers;
46be8: 2839 0005 e40e movel 5e40e <Configuration+0x2a>,%d4
/*
* 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 )
46bee: b882 cmpl %d2,%d4
46bf0: 6366 blss 46c58 <_IO_Manager_initialization+0x84>
* 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(
46bf2: 2004 movel %d4,%d0 46bf4: 2a04 movel %d4,%d5 46bf6: e788 lsll #3,%d0 46bf8: eb8d lsll #5,%d5 46bfa: 9a80 subl %d0,%d5 46bfc: 2f05 movel %d5,%sp@- 46bfe: 4eb9 0004 9bea jsr 49bea <_Workspace_Allocate_or_fatal_error>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
memset(
46c04: 2f05 movel %d5,%sp@- 46c06: 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 *)
46c08: 23c0 0006 050c movel %d0,6050c <_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(
46c0e: 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;
46c10: 23c4 0006 0508 movel %d4,60508 <_IO_Number_of_drivers>
memset(
46c16: 4eb9 0004 f228 jsr 4f228 <memset>
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
46c1c: 4fef 0010 lea %sp@(16),%sp 46c20: 4a82 tstl %d2
46c22: 672a beqs 46c4e <_IO_Manager_initialization+0x7a><== NEVER TAKEN
46c24: 2839 0006 050c movel 6050c <_IO_Driver_address_table>,%d4 46c2a: 4280 clrl %d0 46c2c: 4281 clrl %d1
_IO_Driver_address_table[index] = driver_table[index];
46c2e: 2243 moveal %d3,%a1 46c30: 2044 moveal %d4,%a0 46c32: d3c0 addal %d0,%a1 46c34: d1c0 addal %d0,%a0
memset(
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
46c36: 5281 addql #1,%d1 46c38: 0680 0000 0018 addil #24,%d0
_IO_Driver_address_table[index] = driver_table[index];
46c3e: 20d9 movel %a1@+,%a0@+ 46c40: 20d9 movel %a1@+,%a0@+ 46c42: 20d9 movel %a1@+,%a0@+ 46c44: 20d9 movel %a1@+,%a0@+ 46c46: 20d9 movel %a1@+,%a0@+ 46c48: 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++ )
46c4a: b282 cmpl %d2,%d1
46c4c: 65e0 bcss 46c2e <_IO_Manager_initialization+0x5a>
_IO_Driver_address_table[index] = driver_table[index];
number_of_drivers = drivers_in_table;
}
46c4e: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 46c54: 4e5e unlk %fp 46c56: 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;
46c58: 23c3 0006 050c movel %d3,6050c <_IO_Driver_address_table>
_IO_Number_of_drivers = number_of_drivers;
46c5e: 23c2 0006 0508 movel %d2,60508 <_IO_Number_of_drivers>
);
for ( index = 0 ; index < drivers_in_table ; index++ )
_IO_Driver_address_table[index] = driver_table[index];
number_of_drivers = drivers_in_table;
}
46c64: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
46c6a: 4e5e unlk %fp <== NOT EXECUTED
0004785c <_Internal_error_Occurred>:
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
4785c: 4e56 fffc linkw %fp,#-4 47860: 206e 0010 moveal %fp@(16),%a0 47864: 2f02 movel %d2,%sp@- 47866: 222e 000c movel %fp@(12),%d1
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
4786a: 4282 clrl %d2 4786c: 1401 moveb %d1,%d2 4786e: 2242 moveal %d2,%a1 47870: 2f08 movel %a0,%sp@-
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
47872: 202e 0008 movel %fp@(8),%d0
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
47876: 2f09 movel %a1,%sp@-
Internal_errors_t the_error
)
{
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
47878: 13c1 0005 fd26 moveb %d1,5fd26 <_Internal_errors_What_happened+0x4>
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
4787e: 2d48 fffc movel %a0,%fp@(-4)
bool is_internal,
Internal_errors_t the_error
)
{
_Internal_errors_What_happened.the_source = the_source;
47882: 23c0 0005 fd22 movel %d0,5fd22 <_Internal_errors_What_happened>
_Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error;
47888: 23c8 0005 fd28 movel %a0,5fd28 <_Internal_errors_What_happened+0x6>
_User_extensions_Fatal( the_source, is_internal, the_error );
4788e: 2f00 movel %d0,%sp@- 47890: 4eb9 0004 9776 jsr 49776 <_User_extensions_Fatal>
_System_state_Set( SYSTEM_STATE_FAILED );
_CPU_Fatal_halt( the_error );
47896: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 4789a: 327c 0700 moveaw #1792,%a1 <== NOT EXECUTED 4789e: 2409 movel %a1,%d2 <== NOT EXECUTED 478a0: 40c0 movew %sr,%d0 <== NOT EXECUTED 478a2: 8082 orl %d2,%d0 <== NOT EXECUTED 478a4: 46c0 movew %d0,%sr <== NOT EXECUTED 478a6: 2008 movel %a0,%d0 <== NOT EXECUTED 478a8: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED 478ae: 4ac8 halt <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _System_state_Set (
System_state_Codes state
)
{
_System_state_Current = state;
478b0: 7005 moveq #5,%d0 <== NOT EXECUTED 478b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 478b6: 23c0 0005 fdfa movel %d0,5fdfa <_System_state_Current> <== NOT EXECUTED 478bc: 60fe bras 478bc <_Internal_error_Occurred+0x60> <== NOT EXECUTED
...
0005560c <_Message_queue_Allocate>:
* Output parameters:
* the_message_queue - set if successful, NULL otherwise
*/
Message_queue_Control *_Message_queue_Allocate(void)
{
5560c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (Message_queue_Control *)
_Objects_Allocate(&_Message_queue_Information);
55610: 4879 0006 a4e6 pea 6a4e6 <_Message_queue_Information> <== NOT EXECUTED 55616: 4eb9 0005 0e40 jsr 50e40 <_Objects_Allocate> <== NOT EXECUTED
}
5561c: 4e5e unlk %fp <== NOT EXECUTED
0004efbc <_Message_queue_Translate_core_message_queue_return_code>:
#if defined(RTEMS_DEBUG)
if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT )
return RTEMS_INTERNAL_ERROR;
#endif
return _Message_queue_Translate_core_return_code_[status];
4efbc: 41f9 0006 8458 lea 68458 <_Message_queue_Translate_core_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
uint32_t status
)
{
4efc2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT )
return RTEMS_INTERNAL_ERROR;
#endif
return _Message_queue_Translate_core_return_code_[status];
}
4efc6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4efca: 4e5e unlk %fp <== NOT EXECUTED 4efcc: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004c994 <_Objects_API_maximum_class>:
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c994: 7202 moveq #2,%d1 4c996: 4e56 0000 linkw %fp,#0 4c99a: 202e 0008 movel %fp@(8),%d0 4c99e: 5380 subql #1,%d0 4c9a0: b280 cmpl %d0,%d1
4c9a2: 650e bcss 4c9b2 <_Objects_API_maximum_class+0x1e><== NEVER TAKEN
4c9a4: 41f9 0005 d9ac lea 5d9ac <CSWTCH.1>,%a0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c9aa: 4e5e unlk %fp
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c9ac: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c9b0: 4e75 rts
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c9b2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c9b4: 4e5e unlk %fp <== NOT EXECUTED
00047918 <_Objects_Allocate>:
*/
Objects_Control *_Objects_Allocate(
Objects_Information *information
)
{
47918: 4e56 fff0 linkw %fp,#-16 4791c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 47920: 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 )
47924: 4aaa 0014 tstl %a2@(20)
47928: 660c bnes 47936 <_Objects_Allocate+0x1e> <== ALWAYS TAKEN
return NULL;
4792a: 4280 clrl %d0 <== NOT EXECUTED
);
}
#endif
return the_object;
}
4792c: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 47932: 4e5e unlk %fp 47934: 4e75 rts
/*
* 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 );
47936: 240a movel %a2,%d2 47938: 0682 0000 001c addil #28,%d2 4793e: 47f9 0004 6f44 lea 46f44 <_Chain_Get>,%a3 47944: 2f02 movel %d2,%sp@- 47946: 4e93 jsr %a3@
if ( information->auto_extend ) {
47948: 588f addql #4,%sp 4794a: 4a2a 0010 tstb %a2@(16)
4794e: 67dc beqs 4792c <_Objects_Allocate+0x14>
/*
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
47950: 4a80 tstl %d0
47952: 6738 beqs 4798c <_Objects_Allocate+0x74> <== NEVER TAKEN
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47954: 2040 moveal %d0,%a0 47956: 4281 clrl %d1 47958: 4283 clrl %d3
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
4795a: 4282 clrl %d2
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
4795c: 362a 0008 movew %a2@(8),%d3 47960: 3228 000a movew %a0@(10),%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
47964: 342a 0012 movew %a2@(18),%d2
information->inactive_per_block[ block ]--;
47968: 206a 002a moveal %a2@(42),%a0
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
4796c: 9283 subl %d3,%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
4796e: 4c42 1001 remul %d2,%d1,%d1
information->inactive_per_block[ block ]--;
information->inactive--;
47972: 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 ]--;
47976: e589 lsll #2,%d1
information->inactive--;
47978: 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 ]--;
4797a: d1c1 addal %d1,%a0 4797c: 5390 subql #1,%a0@
information->inactive--;
4797e: 3549 0028 movew %a1,%a2@(40)
);
}
#endif
return the_object;
}
47982: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 47988: 4e5e unlk %fp 4798a: 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 );
4798c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4798e: 4eb9 0004 79d4 jsr 479d4 <_Objects_Extend_information> <== NOT EXECUTED
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
47994: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47996: 4e93 jsr %a3@ <== NOT EXECUTED
}
if ( the_object ) {
47998: 508f addql #8,%sp <== NOT EXECUTED 4799a: 4a80 tstl %d0 <== NOT EXECUTED 4799c: 66b6 bnes 47954 <_Objects_Allocate+0x3c> <== NOT EXECUTED
);
}
#endif
return the_object;
}
4799e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 479a4: 4e5e unlk %fp <== NOT EXECUTED
000479a8 <_Objects_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
479a8: 4280 clrl %d0
void _Objects_Close(
Objects_Information *information,
Objects_Control *the_object
)
{
479aa: 4e56 0000 linkw %fp,#0 479ae: 226e 000c moveal %fp@(12),%a1 479b2: 206e 0008 moveal %fp@(8),%a0 479b6: 2f0a movel %a2,%sp@-
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
479b8: 2468 0018 moveal %a0@(24),%a2
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
479bc: 3029 000a movew %a1@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
479c0: 42b2 0c00 clrl %a2@(00000000,%d0:l:4)
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
}
479c4: 245f moveal %sp@+,%a2
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
479c6: 2d49 000c movel %a1,%fp@(12)
}
479ca: 4e5e unlk %fp
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
479cc: 4ef9 0004 7f58 jmp 47f58 <_Objects_Namespace_remove>
...
000479d4 <_Objects_Extend_information>:
*/
void _Objects_Extend_information(
Objects_Information *information
)
{
479d4: 4e56 ffcc linkw %fp,#-52 479d8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 479dc: 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 );
479e0: 4285 clrl %d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
479e2: 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 );
479e6: 3a2a 0008 movew %a2@(8),%d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
479ea: 4a88 tstl %a0 479ec: 6700 0232 beqw 47c20 <_Objects_Extend_information+0x24c>
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
479f0: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED 479f4: 302a 0012 movew %a2@(18),%d0 <== NOT EXECUTED 479f8: 3801 movew %d1,%d4 <== NOT EXECUTED 479fa: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED 47a00: 88c0 divuw %d0,%d4 <== NOT EXECUTED 47a02: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
for ( ; block < block_count; block++ ) {
47a08: 6700 022c beqw 47c36 <_Objects_Extend_information+0x262><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
47a0c: 4a90 tstl %a0@ <== NOT EXECUTED 47a0e: 6700 0236 beqw 47c46 <_Objects_Extend_information+0x272><== NOT EXECUTED
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
47a12: 5888 addql #4,%a0 <== 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; minimum_index = _Objects_Get_index( information->minimum_id );
47a14: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index; block = 0;
47a16: 4282 clrl %d2 <== NOT EXECUTED
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
if ( information->object_blocks[ block ] == NULL ) {
47a18: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
break;
} else
index_base += information->allocation_size;
47a1e: d680 addl %d0,%d3 <== NOT EXECUTED
if ( information->object_blocks == NULL )
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
47a20: 5282 addql #1,%d2 <== NOT EXECUTED 47a22: b484 cmpl %d4,%d2 <== NOT EXECUTED 47a24: 6400 01a6 bccw 47bcc <_Objects_Extend_information+0x1f8><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
47a28: 4a98 tstl %a0@+ <== NOT EXECUTED 47a2a: 66f2 bnes 47a1e <_Objects_Extend_information+0x4a><== NOT EXECUTED
do_extend = false;
47a2c: 4207 clrb %d7 <== NOT EXECUTED
} else
index_base += information->allocation_size;
}
}
maximum = (uint32_t) information->maximum + information->allocation_size;
47a2e: 0281 0000 ffff andil #65535,%d1 47a34: 2641 moveal %d1,%a3 47a36: d7c0 addal %d0,%a3
/*
* 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 ) {
47a38: b7fc 0000 ffff cmpal #65535,%a3 47a3e: 6200 0182 bhiw 47bc2 <_Objects_Extend_information+0x1ee>
/*
* 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;
47a42: 41ea 0014 lea %a2@(20),%a0 47a46: 4c10 0800 mulsl %a0@,%d0
if ( information->auto_extend ) {
47a4a: 4a2a 0010 tstb %a2@(16) 47a4e: 6700 0182 beqw 47bd2 <_Objects_Extend_information+0x1fe>
new_object_block = _Workspace_Allocate( block_size );
47a52: 2f00 movel %d0,%sp@- 47a54: 4eb9 0004 9bb6 jsr 49bb6 <_Workspace_Allocate>
if ( !new_object_block )
47a5a: 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 );
47a5c: 2c00 movel %d0,%d6
if ( !new_object_block )
47a5e: 6700 0162 beqw 47bc2 <_Objects_Extend_information+0x1ee>
}
/*
* Do we need to grow the tables?
*/
if ( do_extend ) {
47a62: 4a07 tstb %d7 47a64: 6700 00c4 beqw 47b2a <_Objects_Extend_information+0x156>
*/
/*
* Up the block count and maximum
*/
block_count++;
47a68: 2a44 moveal %d4,%a5 47a6a: 528d addql #1,%a5
/*
* 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 *));
47a6c: 200b movel %a3,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
47a6e: 41f5 da00 lea %a5@(00000000,%a5:l:2),%a0
((maximum + minimum_index) * sizeof(Objects_Control *));
47a72: d088 addl %a0,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
47a74: d085 addl %d5,%d0
block_count++;
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
47a76: e588 lsll #2,%d0
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
object_blocks = (void**) _Workspace_Allocate( block_size );
47a78: 2f00 movel %d0,%sp@- 47a7a: 4eb9 0004 9bb6 jsr 49bb6 <_Workspace_Allocate>
if ( !object_blocks ) {
47a80: 588f addql #4,%sp
* 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 *));
object_blocks = (void**) _Workspace_Allocate( block_size );
47a82: 2840 moveal %d0,%a4
if ( !object_blocks ) {
47a84: 4a80 tstl %d0 47a86: 6700 01ce beqw 47c56 <_Objects_Extend_information+0x282>
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
47a8a: 2e0d movel %a5,%d7
* Take the block count down. Saves all the (block_count - 1)
* in the copies.
*/
block_count--;
if ( information->maximum > minimum_index ) {
47a8c: 4280 clrl %d0
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
47a8e: e58f lsll #2,%d7
* Take the block count down. Saves all the (block_count - 1)
* in the copies.
*/
block_count--;
if ( information->maximum > minimum_index ) {
47a90: 302a 000e movew %a2@(14),%d0
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
47a94: 4bf4 7800 lea %a4@(00000000,%d7:l),%a5 47a98: de8d addl %a5,%d7 47a9a: b085 cmpl %d5,%d0 47a9c: 6200 0144 bhiw 47be2 <_Objects_Extend_information+0x20e>
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47aa0: 4a85 tstl %d5
47aa2: 670c beqs 47ab0 <_Objects_Extend_information+0xdc><== NEVER TAKEN
47aa4: 2047 moveal %d7,%a0 47aa6: 4280 clrl %d0
local_table[ index ] = NULL;
47aa8: 4298 clrl %a0@+
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47aaa: 5280 addql #1,%d0 47aac: b085 cmpl %d5,%d0
47aae: 65f8 bcss 47aa8 <_Objects_Extend_information+0xd4><== NEVER TAKEN
47ab0: 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 );
47ab2: 4281 clrl %d1
}
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
47ab4: 42b4 4800 clrl %a4@(00000000,%d4:l)
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47ab8: 322a 0012 movew %a2@(18),%d1
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
47abc: 42b5 4800 clrl %a5@(00000000,%d4:l)
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47ac0: d283 addl %d3,%d1
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
47ac2: b283 cmpl %d3,%d1
47ac4: 6310 blss 47ad6 <_Objects_Extend_information+0x102><== NEVER TAKEN
47ac6: 2247 moveal %d7,%a1
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
47ac8: 2003 movel %d3,%d0
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
47aca: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
47ace: 4298 clrl %a0@+
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
index++ ) {
47ad0: 5280 addql #1,%d0
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
47ad2: b280 cmpl %d0,%d1
47ad4: 62f8 bhis 47ace <_Objects_Extend_information+0xfa>
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
}
_ISR_Disable( level );
47ad6: 203c 0000 0700 movel #1792,%d0 47adc: 40c4 movew %sr,%d4 47ade: 8084 orl %d4,%d0 47ae0: 46c0 movew %d0,%sr
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47ae2: 2012 movel %a2@,%d0 47ae4: 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(
47ae6: 4281 clrl %d1 47ae8: eba8 lsll %d5,%d0 47aea: 4285 clrl %d5 47aec: 3a0b movew %a3,%d5 47aee: 322a 0004 movew %a2@(4),%d1 47af2: 08c0 0010 bset #16,%d0 47af6: 2245 moveal %d5,%a1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47af8: 7a1b moveq #27,%d5 47afa: eba9 lsll %d5,%d1
local_table[ index ] = NULL;
}
_ISR_Disable( level );
old_tables = information->object_blocks;
47afc: 206a 002e moveal %a2@(46),%a0 47b00: 8081 orl %d1,%d0
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b02: 2209 movel %a1,%d1 47b04: 8280 orl %d0,%d1
information->object_blocks = object_blocks;
information->inactive_per_block = inactive_per_block;
information->local_table = local_table;
information->maximum = (Objects_Maximum) maximum;
47b06: 354b 000e movew %a3,%a2@(14)
_ISR_Disable( level );
old_tables = information->object_blocks;
information->object_blocks = object_blocks;
47b0a: 254c 002e movel %a4,%a2@(46)
information->inactive_per_block = inactive_per_block;
47b0e: 254d 002a movel %a5,%a2@(42) 47b12: 2541 000a movel %d1,%a2@(10)
information->local_table = local_table;
47b16: 2547 0018 movel %d7,%a2@(24)
information->the_class,
_Objects_Local_node,
information->maximum
);
_ISR_Enable( level );
47b1a: 46c4 movew %d4,%sr
if ( old_tables )
47b1c: 4a88 tstl %a0
47b1e: 670a beqs 47b2a <_Objects_Extend_information+0x156><== ALWAYS TAKEN
_Workspace_Free( old_tables );
47b20: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47b22: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 47b28: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b2a: 206a 002e moveal %a2@(46),%a0
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b2e: 4280 clrl %d0 47b30: 280e movel %fp,%d4 47b32: 0684 ffff fff4 addil #-12,%d4 47b38: 47f9 0004 6f44 lea 46f44 <_Chain_Get>,%a3
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47b3e: 2a0a movel %a2,%d5 47b40: 0685 0000 001c addil #28,%d5 47b46: 49f9 0004 6ee4 lea 46ee4 <_Chain_Append>,%a4
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b4c: e58a lsll #2,%d2
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b4e: 302a 0012 movew %a2@(18),%d0
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b52: 2186 2800 movel %d6,%a0@(00000000,%d2:l)
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b56: 2f2a 0014 movel %a2@(20),%sp@- 47b5a: 2f00 movel %d0,%sp@- 47b5c: 2f06 movel %d6,%sp@- 47b5e: 2f04 movel %d4,%sp@- 47b60: 4eb9 0004 c444 jsr 4c444 <_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 ) {
47b66: 4fef 0010 lea %sp@(16),%sp 47b6a: 2f04 movel %d4,%sp@- 47b6c: 4e93 jsr %a3@ 47b6e: 588f addql #4,%sp 47b70: 4a80 tstl %d0
47b72: 6734 beqs 47ba8 <_Objects_Extend_information+0x1d4><== NEVER TAKEN
47b74: 2212 movel %a2@,%d1 47b76: 7e18 moveq #24,%d7
the_object->id = _Objects_Build_id(
47b78: 4286 clrl %d6 47b7a: 2040 moveal %d0,%a0 47b7c: 3c2a 0004 movew %a2@(4),%d6 47b80: efa9 lsll %d7,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b82: 1e3c 001b moveb #27,%d7
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b86: 08c1 0010 bset #16,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b8a: efae lsll %d7,%d6 47b8c: 8286 orl %d6,%d1
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b8e: 8283 orl %d3,%d1
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
47b90: 5283 addql #1,%d3 47b92: 2141 0008 movel %d1,%a0@(8)
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47b96: 2f00 movel %d0,%sp@- 47b98: 2f05 movel %d5,%sp@- 47b9a: 4e94 jsr %a4@
index++;
47b9c: 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 ) {
47b9e: 2f04 movel %d4,%sp@- 47ba0: 4e93 jsr %a3@ 47ba2: 588f addql #4,%sp 47ba4: 4a80 tstl %d0
47ba6: 66cc bnes 47b74 <_Objects_Extend_information+0x1a0>
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47ba8: 4281 clrl %d1 47baa: 302a 0012 movew %a2@(18),%d0
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47bae: 326a 0028 moveaw %a2@(40),%a1
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47bb2: 206a 002a moveal %a2@(42),%a0 47bb6: 3200 movew %d0,%d1
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47bb8: d089 addl %a1,%d0
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47bba: 2181 2800 movel %d1,%a0@(00000000,%d2:l)
information->inactive =
47bbe: 3540 0028 movew %d0,%a2@(40)
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47bc2: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 47bc8: 4e5e unlk %fp 47bca: 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;
47bcc: 7e01 moveq #1,%d7 <== NOT EXECUTED 47bce: 6000 fe5e braw 47a2e <_Objects_Extend_information+0x5a><== NOT EXECUTED
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 );
47bd2: 2f00 movel %d0,%sp@- 47bd4: 4eb9 0004 9bea jsr 49bea <_Workspace_Allocate_or_fatal_error> 47bda: 588f addql #4,%sp 47bdc: 2c00 movel %d0,%d6 47bde: 6000 fe82 braw 47a62 <_Objects_Extend_information+0x8e>
/*
* 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,
47be2: e58c lsll #2,%d4 <== NOT EXECUTED 47be4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47be6: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED 47bea: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47bec: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
47bf2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47bf4: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED 47bf8: 2f0d movel %a5,%sp@- <== NOT EXECUTED 47bfa: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
information->inactive_per_block,
block_count * sizeof(uint32_t) );
memcpy( local_table,
information->local_table,
(information->maximum + minimum_index) * sizeof(Objects_Control *) );
47c00: 4280 clrl %d0 <== NOT EXECUTED 47c02: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 47c06: da80 addl %d0,%d5 <== NOT EXECUTED
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
information->inactive_per_block,
block_count * sizeof(uint32_t) );
memcpy( local_table,
47c08: e58d lsll #2,%d5 <== NOT EXECUTED 47c0a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47c0c: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 47c10: 2f07 movel %d7,%sp@- <== NOT EXECUTED 47c12: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED 47c18: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 47c1c: 6000 fe94 braw 47ab2 <_Objects_Extend_information+0xde><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
47c20: 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 );
47c22: 2605 movel %d5,%d3
index_base = minimum_index; block = 0;
47c24: 4282 clrl %d2
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
block_count = 0;
47c26: 4284 clrl %d4
minimum_index = _Objects_Get_index( information->minimum_id );
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
47c28: 322a 000e movew %a2@(14),%d1 47c2c: 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;
47c30: 7e01 moveq #1,%d7 47c32: 6000 fdfa braw 47a2e <_Objects_Extend_information+0x5a>
minimum_index = _Objects_Get_index( information->minimum_id );
47c36: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index; block = 0;
47c38: 4282 clrl %d2 <== NOT EXECUTED
if ( information->object_blocks == NULL )
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
47c3a: 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;
47c40: 7e01 moveq #1,%d7 <== NOT EXECUTED 47c42: 6000 fdea braw 47a2e <_Objects_Extend_information+0x5a><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
47c46: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index; block = 0;
47c48: 4282 clrl %d2 <== NOT EXECUTED
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
if ( information->object_blocks[ block ] == NULL ) {
47c4a: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
47c50: 4207 clrb %d7 <== NOT EXECUTED 47c52: 6000 fdda braw 47a2e <_Objects_Extend_information+0x5a><== NOT EXECUTED
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
object_blocks = (void**) _Workspace_Allocate( block_size );
if ( !object_blocks ) {
_Workspace_Free( new_object_block );
47c56: 2f06 movel %d6,%sp@- <== NOT EXECUTED 47c58: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED
return;
47c5e: 588f addql #4,%sp <== NOT EXECUTED
}
information->inactive_per_block[ block ] = information->allocation_size;
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47c60: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 47c66: 4e5e unlk %fp <== NOT EXECUTED
...
00047c6c <_Objects_Free>:
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
47c6c: 4e56 fff0 linkw %fp,#-16 47c70: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 47c74: 266e 000c moveal %fp@(12),%a3 47c78: 246e 0008 moveal %fp@(8),%a2
uint32_t allocation_size = information->allocation_size;
_Chain_Append( &information->Inactive, &the_object->Node );
47c7c: 2f0b movel %a3,%sp@- 47c7e: 486a 001c pea %a2@(28)
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
47c82: 342a 0012 movew %a2@(18),%d2
_Chain_Append( &information->Inactive, &the_object->Node );
47c86: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append>
if ( information->auto_extend ) {
47c8c: 508f addql #8,%sp 47c8e: 4a2a 0010 tstb %a2@(16)
47c92: 6740 beqs 47cd4 <_Objects_Free+0x68> <== ALWAYS TAKEN
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47c94: 4280 clrl %d0 <== NOT EXECUTED 47c96: 4283 clrl %d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47c98: 4281 clrl %d1 <== NOT EXECUTED
_Chain_Append( &information->Inactive, &the_object->Node );
if ( information->auto_extend ) {
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47c9a: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED 47c9e: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47ca2: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
47ca6: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
_Chain_Append( &information->Inactive, &the_object->Node );
if ( information->auto_extend ) {
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47caa: 9083 subl %d3,%d0 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47cac: 4c41 0000 remul %d1,%d0,%d0 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
information->inactive++;
47cb0: 322a 0028 movew %a2@(40),%d1 <== NOT EXECUTED
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
47cb4: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
information->inactive_per_block[ block ]++;
47cba: e588 lsll #2,%d0 <== NOT EXECUTED
information->inactive++;
47cbc: 5281 addql #1,%d1 <== NOT EXECUTED
/*
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
47cbe: 2602 movel %d2,%d3 <== NOT EXECUTED
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
information->inactive_per_block[ block ]++;
47cc0: d1c0 addal %d0,%a0 <== NOT EXECUTED 47cc2: 5290 addql #1,%a0@ <== NOT EXECUTED
/*
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
47cc4: 4280 clrl %d0 <== NOT EXECUTED 47cc6: e28b lsrl #1,%d3 <== NOT EXECUTED 47cc8: d483 addl %d3,%d2 <== NOT EXECUTED 47cca: 3001 movew %d1,%d0 <== NOT EXECUTED
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
information->inactive_per_block[ block ]++;
information->inactive++;
47ccc: 3541 0028 movew %d1,%a2@(40) <== NOT EXECUTED
/*
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
47cd0: b480 cmpl %d0,%d2 <== NOT EXECUTED 47cd2: 650a bcss 47cde <_Objects_Free+0x72> <== NOT EXECUTED
_Objects_Shrink_information( information );
}
}
}
47cd4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 47cda: 4e5e unlk %fp 47cdc: 4e75 rts
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
_Objects_Shrink_information( information );
47cde: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
}
47ce2: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 47ce8: 4e5e unlk %fp <== NOT EXECUTED
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
_Objects_Shrink_information( information );
47cea: 4ef9 0004 8008 jmp 48008 <_Objects_Shrink_information> <== NOT EXECUTED
00047dd8 <_Objects_Get>:
* always NULL.
*
* If the Id is valid but the object has not been created yet, then
* the local_table entry will be NULL.
*/
index = id - information->minimum_id + 1;
47dd8: 7001 moveq #1,%d0
/*
* If the index is less than maximum, then it is OK to use it to
* index into the local_table array.
*/
if ( index <= information->maximum ) {
47dda: 4281 clrl %d1
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47ddc: 4e56 fffc linkw %fp,#-4 47de0: 206e 0008 moveal %fp@(8),%a0
* always NULL. * * If the Id is valid but the object has not been created yet, then * the local_table entry will be NULL. */ index = id - information->minimum_id + 1;
47de4: 90a8 0006 subl %a0@(6),%d0 47de8: d0ae 000c addl %fp@(12),%d0
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47dec: 2f0a movel %a2,%sp@- 47dee: 246e 0010 moveal %fp@(16),%a2
/*
* If the index is less than maximum, then it is OK to use it to
* index into the local_table array.
*/
if ( index <= information->maximum ) {
47df2: 3228 000e movew %a0@(14),%d1 47df6: b280 cmpl %d0,%d1
47df8: 6522 bcss 47e1c <_Objects_Get+0x44> <== NEVER TAKEN
47dfa: 2239 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d1 47e00: 5281 addql #1,%d1 47e02: 23c1 0005 fc8c movel %d1,5fc8c <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( (the_object = information->local_table[ index ]) != NULL ) {
47e08: 2068 0018 moveal %a0@(24),%a0 47e0c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47e10: 6718 beqs 47e2a <_Objects_Get+0x52> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
47e12: 4292 clrl %a2@
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47e14: 246e fff8 moveal %fp@(-8),%a2 47e18: 4e5e unlk %fp 47e1a: 4e75 rts
/* * Object Id is not within this API and Class on this node. So * it may be global in a multiprocessing system. But it is clearly * invalid on a single processor system. */ *location = OBJECTS_ERROR;
47e1c: 7001 moveq #1,%d0 <== NOT EXECUTED 47e1e: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47e20: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
47e24: 4280 clrl %d0 <== NOT EXECUTED
#endif }
47e26: 4e5e unlk %fp <== NOT EXECUTED 47e28: 4e75 rts <== NOT EXECUTED
/*
* Valid Id for this API, Class and Node but the object has not
* been allocated yet.
*/
_Thread_Enable_dispatch();
47e2a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 47e2e: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
*location = OBJECTS_ERROR;
return NULL;
47e34: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
/*
* Valid Id for this API, Class and Node but the object has not
* been allocated yet.
*/
_Thread_Enable_dispatch();
*location = OBJECTS_ERROR;
47e38: 7201 moveq #1,%d1 <== NOT EXECUTED 47e3a: 2481 movel %d1,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47e3c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47e40: 4e5e unlk %fp <== NOT EXECUTED
00047d1c <_Objects_Get_information>:
Objects_Information *_Objects_Get_information(
Objects_APIs the_api,
uint16_t the_class
)
{
47d1c: 4e56 0000 linkw %fp,#0 47d20: 2f02 movel %d2,%sp@- 47d22: 342e 000e movew %fp@(14),%d2
Objects_Information *info;
int the_class_api_maximum;
if ( !the_class )
47d26: 660a bnes 47d32 <_Objects_Get_information+0x16> <== ALWAYS TAKEN
if ( the_class > (uint32_t) the_class_api_maximum )
return NULL;
if ( !_Objects_Information_table[ the_api ] )
return NULL;
47d28: 4280 clrl %d0 <== NOT EXECUTED
if ( info->maximum == 0 )
return NULL;
#endif
return info;
}
47d2a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 47d2e: 4e5e unlk %fp <== NOT EXECUTED 47d30: 4e75 rts <== NOT EXECUTED
/*
* 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 );
47d32: 2f2e 0008 movel %fp@(8),%sp@- 47d36: 4eb9 0004 c994 jsr 4c994 <_Objects_API_maximum_class>
if ( the_class_api_maximum == 0 )
47d3c: 588f addql #4,%sp 47d3e: 4a80 tstl %d0
47d40: 67e6 beqs 47d28 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( the_class > (uint32_t) the_class_api_maximum )
47d42: 0282 0000 ffff andil #65535,%d2 47d48: b480 cmpl %d0,%d2
47d4a: 62dc bhis 47d28 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( !_Objects_Information_table[ the_api ] )
47d4c: 202e 0008 movel %fp@(8),%d0 47d50: 41f9 0005 fc48 lea 5fc48 <_Objects_Information_table>,%a0 47d56: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 47d5a: 4a88 tstl %a0
47d5c: 67ca beqs 47d28 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
info = _Objects_Information_table[ the_api ][ the_class ];
47d5e: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0
if ( !info )
47d62: 67c6 beqs 47d2a <_Objects_Get_information+0xe> <== NEVER TAKEN
* Thus we may have 0 local instances and still have a valid object
* pointer.
*/
#if !defined(RTEMS_MULTIPROCESSING)
if ( info->maximum == 0 )
return NULL;
47d64: 2040 moveal %d0,%a0 47d66: 4a68 000e tstw %a0@(14) 47d6a: 56c1 sne %d1
#endif
return info;
}
47d6c: 242e fffc movel %fp@(-4),%d2
* Thus we may have 0 local instances and still have a valid object
* pointer.
*/
#if !defined(RTEMS_MULTIPROCESSING)
if ( info->maximum == 0 )
return NULL;
47d70: 49c1 extbl %d1
#endif
return info;
}
47d72: 4e5e unlk %fp
* Thus we may have 0 local instances and still have a valid object
* pointer.
*/
#if !defined(RTEMS_MULTIPROCESSING)
if ( info->maximum == 0 )
return NULL;
47d74: c081 andl %d1,%d0 <== NOT EXECUTED
#endif
return info;
}
00047d78 <_Objects_Get_isr_disable>:
{
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47d78: 7001 moveq #1,%d0
_ISR_Disable( level );
47d7a: 223c 0000 0700 movel #1792,%d1
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47d80: 4e56 0000 linkw %fp,#0 47d84: 206e 0008 moveal %fp@(8),%a0
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47d88: 90a8 0006 subl %a0@(6),%d0 47d8c: d0ae 000c addl %fp@(12),%d0
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47d90: 2f02 movel %d2,%sp@- 47d92: 226e 0010 moveal %fp@(16),%a1
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
_ISR_Disable( level );
47d96: 40c2 movew %sr,%d2 47d98: 8282 orl %d2,%d1 47d9a: 46c1 movew %d1,%sr
if ( information->maximum >= index ) {
47d9c: 4281 clrl %d1 47d9e: 3228 000e movew %a0@(14),%d1 47da2: b280 cmpl %d0,%d1
47da4: 6518 bcss 47dbe <_Objects_Get_isr_disable+0x46> <== NEVER TAKEN
if ( (the_object = information->local_table[ index ]) != NULL ) {
47da6: 2068 0018 moveal %a0@(24),%a0 47daa: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47dae: 671c beqs 47dcc <_Objects_Get_isr_disable+0x54> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
*level_p = level;
47db0: 206e 0014 moveal %fp@(20),%a0
index = id - information->minimum_id + 1;
_ISR_Disable( level );
if ( information->maximum >= index ) {
if ( (the_object = information->local_table[ index ]) != NULL ) {
*location = OBJECTS_LOCAL;
47db4: 4291 clrl %a1@
*level_p = level;
47db6: 2082 movel %d2,%a0@
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47db8: 241f movel %sp@+,%d2 47dba: 4e5e unlk %fp 47dbc: 4e75 rts
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
47dbe: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47dc0: 7201 moveq #1,%d1 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
47dc2: 4280 clrl %d0 <== NOT EXECUTED
#endif }
47dc4: 241f movel %sp@+,%d2 <== NOT EXECUTED 47dc6: 4e5e unlk %fp <== NOT EXECUTED
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
47dc8: 2281 movel %d1,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47dca: 4e75 rts <== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
*location = OBJECTS_LOCAL;
*level_p = level;
return the_object;
}
_ISR_Enable( level );
47dcc: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47dce: 7401 moveq #1,%d2 <== NOT EXECUTED 47dd0: 2282 movel %d2,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47dd2: 241f movel %sp@+,%d2 <== NOT EXECUTED 47dd4: 4e5e unlk %fp <== NOT EXECUTED
00049800 <_Objects_Get_name_as_string>:
char *_Objects_Get_name_as_string(
Objects_Id id,
size_t length,
char *name
)
{
49800: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 49804: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 49808: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4980c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
char lname[5];
Objects_Control *the_object;
Objects_Locations location;
Objects_Id tmpId;
if ( length == 0 )
49810: 4a83 tstl %d3 <== NOT EXECUTED 49812: 660e bnes 49822 <_Objects_Get_name_as_string+0x22><== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE:
/* not supported */
#endif
case OBJECTS_ERROR:
return NULL;
49814: 4282 clrl %d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
return name;
}
return NULL; /* unreachable path */
}
49816: 2002 movel %d2,%d0 <== NOT EXECUTED 49818: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4981e: 4e5e unlk %fp <== NOT EXECUTED 49820: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( length == 0 )
return NULL;
if ( name == NULL )
49822: 4a82 tstl %d2 <== NOT EXECUTED 49824: 67f0 beqs 49816 <_Objects_Get_name_as_string+0x16><== NOT EXECUTED
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
49826: 4aae 0008 tstl %fp@(8) <== NOT EXECUTED 4982a: 6600 009a bnew 498c6 <_Objects_Get_name_as_string+0xc6><== NOT EXECUTED 4982e: 2079 0006 a746 moveal 6a746 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 49834: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
49838: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4983a: 4eb9 0004 9718 jsr 49718 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
49840: 588f addql #4,%sp <== NOT EXECUTED
if ( name == NULL )
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
information = _Objects_Get_information_id( tmpId );
49842: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( !information )
49844: 4a80 tstl %d0 <== NOT EXECUTED 49846: 67cc beqs 49814 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED
return NULL;
the_object = _Objects_Get( information, tmpId, &location );
49848: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4984c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4984e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49850: 4eb9 0004 9904 jsr 49904 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
49856: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4985a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4985e: 66b4 bnes 49814 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED
return NULL;
case OBJECTS_LOCAL:
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
49860: 4a2a 0032 tstb %a2@(50) <== NOT EXECUTED 49864: 6768 beqs 498ce <_Objects_Get_name_as_string+0xce><== NOT EXECUTED
s = the_object->name.name_p;
49866: 2040 moveal %d0,%a0 <== NOT EXECUTED 49868: 2668 000c moveal %a0@(12),%a3 <== NOT EXECUTED
lname[ 4 ] = '\0';
s = lname;
}
d = name;
if ( s ) {
4986c: 4a8b tstl %a3 <== NOT EXECUTED 4986e: 674a beqs 498ba <_Objects_Get_name_as_string+0xba><== NOT EXECUTED
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49870: 5383 subql #1,%d3 <== NOT EXECUTED 49872: 6746 beqs 498ba <_Objects_Get_name_as_string+0xba><== NOT EXECUTED 49874: 1013 moveb %a3@,%d0 <== NOT EXECUTED 49876: 6742 beqs 498ba <_Objects_Get_name_as_string+0xba><== NOT EXECUTED
* 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(
49878: 528b addql #1,%a3 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
4987a: 2242 moveal %d2,%a1 <== NOT EXECUTED
* 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(
4987c: 91c8 subal %a0,%a0 <== NOT EXECUTED
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
*d = (isprint((unsigned char)*s)) ? *s : '*';
4987e: 4281 clrl %d1 <== NOT EXECUTED 49880: 1200 moveb %d0,%d1 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49882: 5288 addql #1,%a0 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
49884: 2479 0006 0e4c moveal 60e4c <__ctype_ptr__>,%a2 <== NOT EXECUTED 4988a: 1232 1801 moveb %a2@(00000001,%d1:l),%d1 <== NOT EXECUTED 4988e: 49c1 extbl %d1 <== NOT EXECUTED 49890: 0281 0000 0097 andil #151,%d1 <== NOT EXECUTED 49896: 6602 bnes 4989a <_Objects_Get_name_as_string+0x9a><== NOT EXECUTED 49898: 702a moveq #42,%d0 <== NOT EXECUTED 4989a: 12c0 moveb %d0,%a1@+ <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
4989c: 2449 moveal %a1,%a2 <== NOT EXECUTED 4989e: b688 cmpl %a0,%d3 <== NOT EXECUTED 498a0: 6304 blss 498a6 <_Objects_Get_name_as_string+0xa6><== NOT EXECUTED 498a2: 101b moveb %a3@+,%d0 <== NOT EXECUTED 498a4: 66d8 bnes 4987e <_Objects_Get_name_as_string+0x7e><== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
498a6: 4212 clrb %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
498a8: 4eb9 0004 a192 jsr 4a192 <_Thread_Enable_dispatch> <== NOT EXECUTED
return name;
}
return NULL; /* unreachable path */
}
498ae: 2002 movel %d2,%d0 <== NOT EXECUTED 498b0: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED 498b6: 4e5e unlk %fp <== NOT EXECUTED 498b8: 4e75 rts <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
498ba: 2442 moveal %d2,%a2 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
498bc: 4212 clrb %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
498be: 4eb9 0004 a192 jsr 4a192 <_Thread_Enable_dispatch> <== NOT EXECUTED 498c4: 60e8 bras 498ae <_Objects_Get_name_as_string+0xae><== NOT EXECUTED
return NULL;
if ( name == NULL )
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
498c6: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 498ca: 6000 ff6c braw 49838 <_Objects_Get_name_as_string+0x38><== NOT EXECUTED
if ( information->is_string ) {
s = the_object->name.name_p;
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
498ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
498d0: 7218 moveq #24,%d1 <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
s = lname;
498d2: 47ee fff7 lea %fp@(-9),%a3 <== NOT EXECUTED
if ( information->is_string ) {
s = the_object->name.name_p;
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
498d6: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
498da: 2a00 movel %d0,%d5 <== NOT EXECUTED 498dc: e2ad lsrl %d1,%d5 <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
498de: 2200 movel %d0,%d1 <== NOT EXECUTED
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
498e0: 2800 movel %d0,%d4 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
498e2: e089 lsrl #8,%d1 <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
498e4: 1d40 fffa moveb %d0,%fp@(-6) <== NOT EXECUTED
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
498e8: 4244 clrw %d4 <== NOT EXECUTED 498ea: 4844 swap %d4 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
498ec: 4200 clrb %d0 <== NOT EXECUTED
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
498ee: 1d45 fff7 moveb %d5,%fp@(-9) <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
498f2: 1d44 fff8 moveb %d4,%fp@(-8) <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
498f6: 1d41 fff9 moveb %d1,%fp@(-7) <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
498fa: 1d40 fffb moveb %d0,%fp@(-5) <== NOT EXECUTED 498fe: 6000 ff70 braw 49870 <_Objects_Get_name_as_string+0x70><== NOT EXECUTED
...
00047fe0 <_Objects_Get_next>:
Objects_Information *information,
Objects_Id id,
Objects_Locations *location_p,
Objects_Id *next_id_p
)
{
47fe0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47fe4: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 47fe8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47fec: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
Objects_Control *object;
Objects_Id next_id;
if ( !information )
47ff0: 4a8a tstl %a2 <== NOT EXECUTED 47ff2: 660c bnes 48000 <_Objects_Get_next+0x20> <== NOT EXECUTED
if ( !location_p )
return NULL;
if ( !next_id_p )
return NULL;
47ff4: 4280 clrl %d0 <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
47ff6: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 47ffc: 4e5e unlk %fp <== NOT EXECUTED 47ffe: 4e75 rts <== NOT EXECUTED
Objects_Id next_id;
if ( !information )
return NULL;
if ( !location_p )
48000: 4a8b tstl %a3 <== NOT EXECUTED 48002: 67f0 beqs 47ff4 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if ( !next_id_p )
48004: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED 48008: 67ea beqs 47ff4 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
4800a: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED 4800e: 663a bnes 4804a <_Objects_Get_next+0x6a> <== NOT EXECUTED
next_id = information->minimum_id;
48010: 242a 0006 movel %a2@(6),%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
48014: 49f9 0004 8070 lea 48070 <_Objects_Get>,%a4 <== NOT EXECUTED
else
next_id = id;
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
4801a: 4281 clrl %d1 <== NOT EXECUTED 4801c: 4280 clrl %d0 <== NOT EXECUTED 4801e: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED 48022: 3002 movew %d2,%d0 <== NOT EXECUTED 48024: b081 cmpl %d1,%d0 <== NOT EXECUTED 48026: 622e bhis 48056 <_Objects_Get_next+0x76> <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
48028: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4802a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
next_id++;
4802c: 5282 addql #1,%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
4802e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48030: 4e94 jsr %a4@ <== NOT EXECUTED
next_id++;
} while (*location_p != OBJECTS_LOCAL);
48032: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48036: 4a93 tstl %a3@ <== NOT EXECUTED 48038: 66e0 bnes 4801a <_Objects_Get_next+0x3a> <== NOT EXECUTED
*next_id_p = next_id;
4803a: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4803e: 2082 movel %d2,%a0@ <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
48040: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 48046: 4e5e unlk %fp <== NOT EXECUTED 48048: 4e75 rts <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
next_id = information->minimum_id;
else
next_id = id;
4804a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
4804e: 49f9 0004 8070 lea 48070 <_Objects_Get>,%a4 <== NOT EXECUTED 48054: 60c4 bras 4801a <_Objects_Get_next+0x3a> <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
48056: 7401 moveq #1,%d2 <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
48058: 72ff moveq #-1,%d1 <== NOT EXECUTED
return 0;
4805a: 4280 clrl %d0 <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
4805c: 2682 movel %d2,%a3@ <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
4805e: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
return 0;
}
48062: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
48068: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
4806a: 4e5e unlk %fp <== NOT EXECUTED
...
0005b934 <_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;
5b934: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b936: 4281 clrl %d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b938: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5b93c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
/*
* 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;
5b940: 90a8 0006 subl %a0@(6),%d0 <== NOT EXECUTED 5b944: d0ae 000c addl %fp@(12),%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b948: 3228 000e movew %a0@(14),%d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b94c: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
* 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;
if ( information->maximum >= index ) {
5b950: b280 cmpl %d0,%d1 <== NOT EXECUTED 5b952: 6510 bcss 5b964 <_Objects_Get_no_protection+0x30><== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
5b954: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 5b958: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 5b95c: 6706 beqs 5b964 <_Objects_Get_no_protection+0x30><== NOT EXECUTED
*location = OBJECTS_LOCAL;
5b95e: 4291 clrl %a1@ <== NOT EXECUTED
* 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; }
5b960: 4e5e unlk %fp <== NOT EXECUTED 5b962: 4e75 rts <== NOT EXECUTED
/*
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
5b964: 7001 moveq #1,%d0 <== NOT EXECUTED
return NULL; }
5b966: 4e5e unlk %fp <== NOT EXECUTED
/*
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
5b968: 2280 movel %d0,%a1@ <== NOT EXECUTED
return NULL;
5b96a: 4280 clrl %d0 <== NOT EXECUTED
}
...
00049534 <_Objects_Id_to_name>:
*/
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
)
{
49534: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49538: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4953c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Caller is trusted for name != NULL.
*/
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4953e: 4a81 tstl %d1 <== NOT EXECUTED 49540: 660a bnes 4954c <_Objects_Id_to_name+0x18> <== NOT EXECUTED 49542: 2079 0006 1df4 moveal 61df4 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 49548: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED 4954c: 7418 moveq #24,%d2 <== NOT EXECUTED 4954e: 2001 movel %d1,%d0 <== NOT EXECUTED 49550: e4a8 lsrl %d2,%d0 <== NOT EXECUTED 49552: 143c 0007 moveb #7,%d2 <== NOT EXECUTED 49556: c082 andl %d2,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
49558: 143c 0002 moveb #2,%d2 <== NOT EXECUTED 4955c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4955e: 5388 subql #1,%a0 <== NOT EXECUTED 49560: b488 cmpl %a0,%d2 <== NOT EXECUTED 49562: 6522 bcss 49586 <_Objects_Id_to_name+0x52> <== NOT EXECUTED
the_api = _Objects_Get_API( tmpId );
if ( !_Objects_Is_api_valid( the_api ) )
return OBJECTS_INVALID_ID;
if ( !_Objects_Information_table[ the_api ] )
49564: 41f9 0006 1920 lea 61920 <_Objects_Information_table>,%a0 <== NOT EXECUTED 4956a: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED 4956e: 4a88 tstl %a0 <== NOT EXECUTED 49570: 6714 beqs 49586 <_Objects_Id_to_name+0x52> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
49572: 2001 movel %d1,%d0 <== NOT EXECUTED 49574: 741b moveq #27,%d2 <== NOT EXECUTED 49576: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
the_class = _Objects_Get_class( tmpId );
information = _Objects_Information_table[ the_api ][ the_class ];
49578: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
if ( !information )
4957c: 4a88 tstl %a0 <== NOT EXECUTED 4957e: 6706 beqs 49586 <_Objects_Id_to_name+0x52> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string )
49580: 4a28 0032 tstb %a0@(50) <== NOT EXECUTED 49584: 670a beqs 49590 <_Objects_Id_to_name+0x5c> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
49586: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
the_api = _Objects_Get_API( tmpId );
if ( !_Objects_Is_api_valid( the_api ) )
return OBJECTS_INVALID_ID;
if ( !_Objects_Information_table[ the_api ] )
return OBJECTS_INVALID_ID;
4958a: 7003 moveq #3,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
4958c: 4e5e unlk %fp <== NOT EXECUTED 4958e: 4e75 rts <== NOT EXECUTED
#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 );
49590: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49594: 2f01 movel %d1,%sp@- <== NOT EXECUTED 49596: 2f08 movel %a0,%sp@- <== NOT EXECUTED 49598: 4eb9 0004 94c8 jsr 494c8 <_Objects_Get> <== NOT EXECUTED
if ( !the_object )
4959e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 495a2: 4a80 tstl %d0 <== NOT EXECUTED 495a4: 67e0 beqs 49586 <_Objects_Id_to_name+0x52> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
495a6: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 495aa: 2240 moveal %d0,%a1 <== NOT EXECUTED 495ac: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
495b0: 4eb9 0004 9e62 jsr 49e62 <_Thread_Enable_dispatch> <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; }
495b6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( !the_object )
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
495ba: 4280 clrl %d0 <== NOT EXECUTED
}
495bc: 4e5e unlk %fp <== NOT EXECUTED
00054874 <_Objects_Name_to_id_string>:
Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string(
Objects_Information *information,
const char *name,
Objects_Id *id
)
{
54874: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 54878: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 5487c: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 54880: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 54884: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
uint32_t index;
uint32_t name_length;
/* ASSERT: information->is_string == true */
if ( !id )
54888: 6762 beqs 548ec <_Objects_Name_to_id_string+0x78><== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( !name )
5488a: 4a84 tstl %d4 <== NOT EXECUTED 5488c: 6742 beqs 548d0 <_Objects_Name_to_id_string+0x5c><== NOT EXECUTED
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
5488e: 362c 000e movew %a4@(14),%d3 <== NOT EXECUTED 54892: 673c beqs 548d0 <_Objects_Name_to_id_string+0x5c><== NOT EXECUTED
* id - object id
* OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string(
54894: 266c 0018 moveal %a4@(24),%a3 <== NOT EXECUTED 54898: 7401 moveq #1,%d2 <== NOT EXECUTED 5489a: 588b addql #4,%a3 <== NOT EXECUTED
continue;
if ( !the_object->name.name_p )
continue;
if (!strncmp( name, the_object->name.name_p, information->name_length)) {
5489c: 4bf9 0005 8534 lea 58534 <strncmp>,%a5 <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
name_length = information->name_length;
for ( index = 1; index <= information->maximum; index++ ) {
548a2: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED
the_object = information->local_table[ index ];
548a8: 245b moveal %a3@+,%a2 <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
name_length = information->name_length;
for ( index = 1; index <= information->maximum; index++ ) {
548aa: 5282 addql #1,%d2 <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
548ac: 4a8a tstl %a2 <== NOT EXECUTED 548ae: 671c beqs 548cc <_Objects_Name_to_id_string+0x58><== NOT EXECUTED
continue;
if ( !the_object->name.name_p )
548b0: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 548b4: 6716 beqs 548cc <_Objects_Name_to_id_string+0x58><== NOT EXECUTED
continue;
if (!strncmp( name, the_object->name.name_p, information->name_length)) {
548b6: 4281 clrl %d1 <== NOT EXECUTED 548b8: 322c 0034 movew %a4@(52),%d1 <== NOT EXECUTED 548bc: 2f01 movel %d1,%sp@- <== NOT EXECUTED 548be: 2f00 movel %d0,%sp@- <== NOT EXECUTED 548c0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 548c2: 4e95 jsr %a5@ <== NOT EXECUTED 548c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 548c8: 4a80 tstl %d0 <== NOT EXECUTED 548ca: 6710 beqs 548dc <_Objects_Name_to_id_string+0x68><== NOT EXECUTED
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
name_length = information->name_length;
for ( index = 1; index <= information->maximum; index++ ) {
548cc: b682 cmpl %d2,%d3 <== NOT EXECUTED 548ce: 64d8 bccs 548a8 <_Objects_Name_to_id_string+0x34><== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
}
}
return OBJECTS_INVALID_NAME;
548d0: 7001 moveq #1,%d0 <== NOT EXECUTED
}
548d2: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 548d8: 4e5e unlk %fp <== NOT EXECUTED 548da: 4e75 rts <== NOT EXECUTED
if ( !the_object->name.name_p )
continue;
if (!strncmp( name, the_object->name.name_p, information->name_length)) {
*id = the_object->id;
548dc: 2045 moveal %d5,%a0 <== NOT EXECUTED 548de: 20aa 0008 movel %a2@(8),%a0@ <== NOT EXECUTED
}
}
}
return OBJECTS_INVALID_NAME;
}
548e2: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 548e8: 4e5e unlk %fp <== NOT EXECUTED 548ea: 4e75 rts <== NOT EXECUTED
uint32_t name_length;
/* ASSERT: information->is_string == true */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
548ec: 7002 moveq #2,%d0 <== NOT EXECUTED
}
}
}
return OBJECTS_INVALID_NAME;
}
548ee: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 548f4: 4e5e unlk %fp <== NOT EXECUTED
00047f88 <_Objects_Name_to_id_u32>:
Objects_Information *information,
uint32_t name,
uint32_t node,
Objects_Id *id
)
{
47f88: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47f8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47f90: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 47f94: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 47f98: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 47f9c: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
Objects_Name name_for_mp;
#endif
/* ASSERT: information->is_string == false */
if ( !id )
47fa0: 4a8a tstl %a2 <== NOT EXECUTED 47fa2: 6758 beqs 47ffc <_Objects_Name_to_id_u32+0x74> <== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( name == 0 )
47fa4: 4a81 tstl %d1 <== NOT EXECUTED 47fa6: 6718 beqs 47fc0 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
search_local_node = false;
if ( information->maximum != 0 &&
47fa8: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED 47fac: 6712 beqs 47fc0 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED 47fae: 4a80 tstl %d0 <== NOT EXECUTED 47fb0: 6718 beqs 47fca <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
(node == OBJECTS_SEARCH_ALL_NODES ||
47fb2: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 47fb8: 6710 beqs 47fca <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
node == OBJECTS_SEARCH_LOCAL_NODE ||
47fba: 7601 moveq #1,%d3 <== NOT EXECUTED 47fbc: b680 cmpl %d0,%d3 <== NOT EXECUTED 47fbe: 670a beqs 47fca <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
name_for_mp.name_u32 = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else
return OBJECTS_INVALID_NAME;
47fc0: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif }
47fc2: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 47fc6: 4e5e unlk %fp <== NOT EXECUTED 47fc8: 4e75 rts <== NOT EXECUTED
* id - object id
* OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32(
47fca: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED 47fce: 7001 moveq #1,%d0 <== NOT EXECUTED 47fd0: 5889 addql #4,%a1 <== NOT EXECUTED
search_local_node = true;
if ( search_local_node ) {
name_length = information->name_length;
for ( index = 1; index <= information->maximum; index++ ) {
47fd2: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
the_object = information->local_table[ index ];
47fd8: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
search_local_node = true;
if ( search_local_node ) {
name_length = information->name_length;
for ( index = 1; index <= information->maximum; index++ ) {
47fda: 5280 addql #1,%d0 <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
47fdc: 4a88 tstl %a0 <== NOT EXECUTED 47fde: 6706 beqs 47fe6 <_Objects_Name_to_id_u32+0x5e> <== NOT EXECUTED
continue;
if ( name == the_object->name.name_u32 ) {
47fe0: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED 47fe4: 6708 beqs 47fee <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED
search_local_node = true;
if ( search_local_node ) {
name_length = information->name_length;
for ( index = 1; index <= information->maximum; index++ ) {
47fe6: b082 cmpl %d2,%d0 <== NOT EXECUTED 47fe8: 63ee blss 47fd8 <_Objects_Name_to_id_u32+0x50> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
name_for_mp.name_u32 = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else
return OBJECTS_INVALID_NAME;
47fea: 7001 moveq #1,%d0 <== NOT EXECUTED 47fec: 60d4 bras 47fc2 <_Objects_Name_to_id_u32+0x3a> <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
continue;
if ( name == the_object->name.name_u32 ) {
*id = the_object->id;
47fee: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
47ff2: 4280 clrl %d0 <== NOT EXECUTED
name_for_mp.name_u32 = name; return _Objects_MP_Global_name_search( information, name_for_mp, node, id ); #else return OBJECTS_INVALID_NAME; #endif }
47ff4: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 47ff8: 4e5e unlk %fp <== NOT EXECUTED 47ffa: 4e75 rts <== NOT EXECUTED
#endif
/* ASSERT: information->is_string == false */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
47ffc: 7002 moveq #2,%d0 <== NOT EXECUTED
name_for_mp.name_u32 = name; return _Objects_MP_Global_name_search( information, name_for_mp, node, id ); #else return OBJECTS_INVALID_NAME; #endif }
47ffe: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 48002: 4e5e unlk %fp <== NOT EXECUTED
...
00047f58 <_Objects_Namespace_remove>:
void _Objects_Namespace_remove(
Objects_Information *information,
Objects_Control *the_object
)
{
47f58: 4e56 0000 linkw %fp,#0
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/*
* If this is a string format name, then free the memory.
*/
if ( information->is_string && the_object->name.name_p )
47f5c: 206e 0008 moveal %fp@(8),%a0
void _Objects_Namespace_remove(
Objects_Information *information,
Objects_Control *the_object
)
{
47f60: 2f0a movel %a2,%sp@- 47f62: 246e 000c moveal %fp@(12),%a2
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/*
* If this is a string format name, then free the memory.
*/
if ( information->is_string && the_object->name.name_p )
47f66: 4a28 0032 tstb %a0@(50)
47f6a: 6710 beqs 47f7c <_Objects_Namespace_remove+0x24> <== ALWAYS TAKEN
47f6c: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 47f70: 670a beqs 47f7c <_Objects_Namespace_remove+0x24> <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
47f72: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47f74: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 47f7a: 588f addql #4,%sp <== NOT EXECUTED
* Clear out either format.
*/
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
the_object->name.name_p = NULL;
#endif
the_object->name.name_u32 = 0;
47f7c: 42aa 000c clrl %a2@(12)
}
47f80: 246e fffc moveal %fp@(-4),%a2
47f84: 4e5e unlk %fp <== NOT EXECUTED
00048390 <_Objects_Set_name>:
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
48390: 4280 clrl %d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
48392: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 48396: 48d7 3c00 moveml %a2-%a5,%sp@ <== NOT EXECUTED 4839a: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
4839e: 302c 0034 movew %a4@(52),%d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
483a2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
483a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
483a8: 2a6e 000c moveal %fp@(12),%a5 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
483ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 483ae: 4eb9 0005 065c jsr 5065c <strnlen> <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
483b4: 508f addql #8,%sp <== NOT EXECUTED
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
483b6: 2640 moveal %d0,%a3 <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
483b8: 4a2c 0032 tstb %a4@(50) <== NOT EXECUTED 483bc: 6662 bnes 48420 <_Objects_Set_name+0x90> <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
483be: 7018 moveq #24,%d0 <== NOT EXECUTED 483c0: 1212 moveb %a2@,%d1 <== NOT EXECUTED 483c2: 49c1 extbl %d1 <== NOT EXECUTED 483c4: e1a9 lsll %d0,%d1 <== NOT EXECUTED 483c6: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 483ca: b08b cmpl %a3,%d0 <== NOT EXECUTED 483cc: 643c bccs 4840a <_Objects_Set_name+0x7a> <== NOT EXECUTED 483ce: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED 483d2: 49c0 extbl %d0 <== NOT EXECUTED 483d4: 4840 swap %d0 <== NOT EXECUTED 483d6: 4240 clrw %d0 <== NOT EXECUTED 483d8: 8081 orl %d1,%d0 <== NOT EXECUTED 483da: 7202 moveq #2,%d1 <== NOT EXECUTED 483dc: b28b cmpl %a3,%d1 <== NOT EXECUTED 483de: 6730 beqs 48410 <_Objects_Set_name+0x80> <== NOT EXECUTED 483e0: 122a 0002 moveb %a2@(2),%d1 <== NOT EXECUTED 483e4: 49c1 extbl %d1 <== NOT EXECUTED 483e6: e189 lsll #8,%d1 <== NOT EXECUTED 483e8: 8081 orl %d1,%d0 <== NOT EXECUTED 483ea: 7203 moveq #3,%d1 <== NOT EXECUTED 483ec: b28b cmpl %a3,%d1 <== NOT EXECUTED 483ee: 6700 0088 beqw 48478 <_Objects_Set_name+0xe8> <== NOT EXECUTED 483f2: 122a 0003 moveb %a2@(3),%d1 <== NOT EXECUTED 483f6: 49c1 extbl %d1 <== NOT EXECUTED 483f8: 8081 orl %d1,%d0 <== NOT EXECUTED 483fa: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
483fe: 7001 moveq #1,%d0 <== NOT EXECUTED
}
48400: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED 48406: 4e5e unlk %fp <== NOT EXECUTED 48408: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4840a: 2001 movel %d1,%d0 <== NOT EXECUTED 4840c: 08c0 0015 bset #21,%d0 <== NOT EXECUTED 48410: 7220 moveq #32,%d1 <== NOT EXECUTED 48412: 08c0 000d bset #13,%d0 <== NOT EXECUTED 48416: 8081 orl %d1,%d0 <== NOT EXECUTED 48418: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
4841c: 7001 moveq #1,%d0 <== NOT EXECUTED 4841e: 60e0 bras 48400 <_Objects_Set_name+0x70> <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
char *d;
d = _Workspace_Allocate( length + 1 );
48420: 486b 0001 pea %a3@(1) <== NOT EXECUTED 48424: 4eb9 0004 a036 jsr 4a036 <_Workspace_Allocate> <== NOT EXECUTED
if ( !d )
4842a: 588f addql #4,%sp <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
char *d;
d = _Workspace_Allocate( length + 1 );
4842c: 2840 moveal %d0,%a4 <== NOT EXECUTED
if ( !d )
4842e: 4a80 tstl %d0 <== NOT EXECUTED 48430: 673a beqs 4846c <_Objects_Set_name+0xdc> <== NOT EXECUTED
return false;
if ( the_object->name.name_p ) {
48432: 202d 000c movel %a5@(12),%d0 <== NOT EXECUTED 48436: 670e beqs 48446 <_Objects_Set_name+0xb6> <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
48438: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4843a: 4eb9 0004 a052 jsr 4a052 <_Workspace_Free> <== NOT EXECUTED
the_object->name.name_p = NULL;
48440: 588f addql #4,%sp <== NOT EXECUTED 48442: 42ad 000c clrl %a5@(12) <== NOT EXECUTED
}
strncpy( d, name, length );
48446: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48448: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4844a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4844c: 4eb9 0005 05d8 jsr 505d8 <strncpy> <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
48452: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
the_object->name.name_p = NULL;
}
strncpy( d, name, length );
d[length] = '\0';
48456: 4200 clrb %d0 <== NOT EXECUTED 48458: 1980 b800 moveb %d0,%a4@(00000000,%a3:l) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
4845c: 7001 moveq #1,%d0 <== NOT EXECUTED
the_object->name.name_p = NULL;
}
strncpy( d, name, length );
d[length] = '\0';
the_object->name.name_p = d;
4845e: 2b4c 000c movel %a4,%a5@(12) <== NOT EXECUTED
);
}
return true;
}
48462: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED 48468: 4e5e unlk %fp <== NOT EXECUTED 4846a: 4e75 rts <== NOT EXECUTED 4846c: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED
if ( information->is_string ) {
char *d;
d = _Workspace_Allocate( length + 1 );
if ( !d )
return false;
48472: 4200 clrb %d0 <== NOT EXECUTED
);
}
return true;
}
48474: 4e5e unlk %fp <== NOT EXECUTED 48476: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
48478: 7220 moveq #32,%d1 <== NOT EXECUTED 4847a: 8081 orl %d1,%d0 <== NOT EXECUTED 4847c: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
48480: 7001 moveq #1,%d0 <== NOT EXECUTED 48482: 6000 ff7c braw 48400 <_Objects_Set_name+0x70> <== NOT EXECUTED
...
00048008 <_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) /
48008: 4281 clrl %d1 <== NOT EXECUTED
*/
void _Objects_Shrink_information(
Objects_Information *information
)
{
4800a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4800e: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 48012: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Search the list to find block or chunk with all objects inactive.
*/
index_base = _Objects_Get_index( information->minimum_id );
48016: 4283 clrl %d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
48018: 4284 clrl %d4 <== NOT EXECUTED
/*
* Search the list to find block or chunk with all objects inactive.
*/
index_base = _Objects_Get_index( information->minimum_id );
4801a: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
4801e: 382a 000e movew %a2@(14),%d4 <== NOT EXECUTED 48022: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED 48026: 9883 subl %d3,%d4 <== NOT EXECUTED 48028: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
4802c: 6774 beqs 480a2 <_Objects_Shrink_information+0x9a><== NOT EXECUTED
if ( information->inactive_per_block[ block ] ==
4802e: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED 48032: b290 cmpl %a0@,%d1 <== NOT EXECUTED 48034: 677e beqs 480b4 <_Objects_Shrink_information+0xac><== NOT EXECUTED
* the_block - the block to remove
*
* Output parameters: NONE
*/
void _Objects_Shrink_information(
48036: 5888 addql #4,%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++ ) {
48038: 4280 clrl %d0 <== NOT EXECUTED 4803a: 5280 addql #1,%d0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
4803c: d681 addl %d1,%d3 <== 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++ ) {
4803e: b084 cmpl %d4,%d0 <== NOT EXECUTED 48040: 6460 bccs 480a2 <_Objects_Shrink_information+0x9a><== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
48042: 2400 movel %d0,%d2 <== NOT EXECUTED 48044: e58a lsll #2,%d2 <== 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 ] ==
48046: b298 cmpl %a0@+,%d1 <== NOT EXECUTED 48048: 66f0 bnes 4803a <_Objects_Shrink_information+0x32><== NOT EXECUTED
information->allocation_size ) {
/*
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) information->Inactive.first;
4804a: 206a 001c moveal %a2@(28),%a0 <== 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 );
4804e: 47f9 0004 6f1c lea 46f1c <_Chain_Extract>,%a3 <== NOT EXECUTED
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) information->Inactive.first;
do {
index = _Objects_Get_index( the_object->id );
48054: 4280 clrl %d0 <== NOT EXECUTED 48056: 3028 000a movew %a0@(10),%d0 <== NOT EXECUTED
/*
* Get the next node before the node is extracted
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
4805a: 2810 movel %a0@,%d4 <== NOT EXECUTED
if ((index >= index_base) &&
4805c: b680 cmpl %d0,%d3 <== NOT EXECUTED 4805e: 620c bhis 4806c <_Objects_Shrink_information+0x64><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
48060: 4281 clrl %d1 <== NOT EXECUTED 48062: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED 48066: d283 addl %d3,%d1 <== NOT EXECUTED
/*
* 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) &&
48068: b280 cmpl %d0,%d1 <== NOT EXECUTED 4806a: 6240 bhis 480ac <_Objects_Shrink_information+0xa4><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
}
}
while ( the_object );
4806c: 4a84 tstl %d4 <== NOT EXECUTED 4806e: 6704 beqs 48074 <_Objects_Shrink_information+0x6c><== NOT EXECUTED
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;
48070: 2044 moveal %d4,%a0 <== NOT EXECUTED 48072: 60e0 bras 48054 <_Objects_Shrink_information+0x4c><== NOT EXECUTED
while ( the_object );
/*
* Free the memory and reset the structures in the object' information
*/
_Workspace_Free( information->object_blocks[ block ] );
48074: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED 48078: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@- <== NOT EXECUTED 4807c: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED
information->object_blocks[ block ] = NULL;
48082: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
information->inactive -= information->allocation_size;
return;
48086: 588f addql #4,%sp <== NOT EXECUTED
/*
* Free the memory and reset the structures in the object' information
*/
_Workspace_Free( information->object_blocks[ block ] );
information->object_blocks[ block ] = NULL;
48088: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
4808c: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
48090: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED 48094: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
* 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;
48098: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive -= information->allocation_size;
4809c: 9081 subl %d1,%d0 <== NOT EXECUTED 4809e: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED
return;
}
index_base += information->allocation_size;
}
}
480a2: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 480a8: 4e5e unlk %fp <== NOT EXECUTED 480aa: 4e75 rts <== 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 );
480ac: 2f08 movel %a0,%sp@- <== NOT EXECUTED 480ae: 4e93 jsr %a3@ <== NOT EXECUTED 480b0: 588f addql #4,%sp <== NOT EXECUTED 480b2: 60b8 bras 4806c <_Objects_Shrink_information+0x64><== NOT EXECUTED
information->allocation_size ) {
/*
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) information->Inactive.first;
480b4: 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 ] ==
480b8: 4282 clrl %d2 <== 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 );
480ba: 47f9 0004 6f1c lea 46f1c <_Chain_Extract>,%a3 <== NOT EXECUTED 480c0: 6092 bras 48054 <_Objects_Shrink_information+0x4c><== NOT EXECUTED
...
00048794 <_POSIX_Absolute_timeout_to_ticks>:
*/
POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks(
const struct timespec *abstime,
Watchdog_Interval *ticks_out
)
{
48794: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 48798: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4879c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 487a0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
*ticks_out = 0;
/*
* Is the absolute time even valid?
*/
if ( !_Timespec_Is_valid(abstime) )
487a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Make sure there is always a value returned.
*/
*ticks_out = 0;
487a6: 4292 clrl %a2@ <== NOT EXECUTED
/*
* Is the absolute time even valid?
*/
if ( !_Timespec_Is_valid(abstime) )
487a8: 4eb9 0004 ca0c jsr 4ca0c <_Timespec_Is_valid> <== NOT EXECUTED 487ae: 588f addql #4,%sp <== NOT EXECUTED 487b0: 4a00 tstb %d0 <== NOT EXECUTED 487b2: 660c bnes 487c0 <_POSIX_Absolute_timeout_to_ticks+0x2c><== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_INVALID;
487b4: 4280 clrl %d0 <== NOT EXECUTED
/* * This is the case we were expecting and it took this long to * get here. */ return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE; }
487b6: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED 487bc: 4e5e unlk %fp <== NOT EXECUTED 487be: 4e75 rts <== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_INVALID;
/*
* Is the absolute time in the past?
*/
_TOD_Get( ¤t_time );
487c0: 260e movel %fp,%d3 <== NOT EXECUTED 487c2: 5183 subql #8,%d3 <== NOT EXECUTED 487c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 487c6: 4eb9 0004 a76c jsr 4a76c <_TOD_Get> <== NOT EXECUTED
if ( _Timespec_Less_than( abstime, ¤t_time ) )
487cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 487ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED 487d0: 4eb9 0004 ca38 jsr 4ca38 <_Timespec_Less_than> <== NOT EXECUTED 487d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 487da: 4a00 tstb %d0 <== NOT EXECUTED 487dc: 670c beqs 487ea <_POSIX_Absolute_timeout_to_ticks+0x56><== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST;
487de: 7001 moveq #1,%d0 <== NOT EXECUTED
/* * This is the case we were expecting and it took this long to * get here. */ return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE; }
487e0: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED 487e6: 4e5e unlk %fp <== NOT EXECUTED 487e8: 4e75 rts <== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST;
/*
* How long until the requested absolute time?
*/
_Timespec_Subtract( ¤t_time, abstime, &difference );
487ea: 280e movel %fp,%d4 <== NOT EXECUTED 487ec: 0684 ffff fff0 addil #-16,%d4 <== NOT EXECUTED 487f2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 487f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 487f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 487f8: 4eb9 0004 ca6c jsr 4ca6c <_Timespec_Subtract> <== NOT EXECUTED
/*
* Internally the SuperCore uses ticks, so convert to them.
*/
*ticks_out = _Timespec_To_ticks( &difference );
487fe: 2f04 movel %d4,%sp@- <== NOT EXECUTED 48800: 4eb9 0004 cabc jsr 4cabc <_Timespec_To_ticks> <== NOT EXECUTED
/*
* If the difference was 0, then the future is now. It is so bright
* we better wear shades.
*/
if ( !*ticks_out )
48806: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_IS_NOW;
4880a: 4a80 tstl %d0 <== NOT EXECUTED 4880c: 56c1 sne %d1 <== NOT EXECUTED
_Timespec_Subtract( ¤t_time, abstime, &difference );
/*
* Internally the SuperCore uses ticks, so convert to them.
*/
*ticks_out = _Timespec_To_ticks( &difference );
4880e: 2480 movel %d0,%a2@ <== NOT EXECUTED
/*
* If the difference was 0, then the future is now. It is so bright
* we better wear shades.
*/
if ( !*ticks_out )
return POSIX_ABSOLUTE_TIMEOUT_IS_NOW;
48810: 1001 moveb %d1,%d0 <== NOT EXECUTED 48812: 7202 moveq #2,%d1 <== NOT EXECUTED 48814: 49c0 extbl %d0 <== NOT EXECUTED 48816: 9280 subl %d0,%d1 <== NOT EXECUTED 48818: 2001 movel %d1,%d0 <== NOT EXECUTED
/* * This is the case we were expecting and it took this long to * get here. */ return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE; }
4881a: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED 48820: 4e5e unlk %fp <== NOT EXECUTED
0004cc4c <_POSIX_Barrier_Translate_core_barrier_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( the_barrier_status > CORE_BARRIER_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Barrier_Return_codes[the_barrier_status];
4cc4c: 41f9 0005 f0b8 lea 5f0b8 <_POSIX_Barrier_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_Barrier_Translate_core_barrier_return_code(
CORE_barrier_Status the_barrier_status
)
{
4cc52: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_barrier_status > CORE_BARRIER_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Barrier_Return_codes[the_barrier_status];
}
4cc56: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4cc5a: 4e5e unlk %fp <== NOT EXECUTED 4cc5c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004710c <_POSIX_Condition_variables_Get>:
POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get (
pthread_cond_t *cond,
Objects_Locations *location
)
{
4710c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47110: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47112: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 47116: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47118: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int status;
if ( !cond ) {
4711c: 4a8a tstl %a2 <== NOT EXECUTED 4711e: 6750 beqs 47170 <_POSIX_Condition_variables_Get+0x64><== NOT EXECUTED
*location = OBJECTS_ERROR;
return (POSIX_Condition_variables_Control *) 0;
}
if ( *cond == PTHREAD_COND_INITIALIZER ) {
47120: 2012 movel %a2@,%d0 <== NOT EXECUTED 47122: 72ff moveq #-1,%d1 <== NOT EXECUTED 47124: b280 cmpl %d0,%d1 <== NOT EXECUTED 47126: 6720 beqs 47148 <_POSIX_Condition_variables_Get+0x3c><== NOT EXECUTED
}
/*
* Now call Objects_Get()
*/
return (POSIX_Condition_variables_Control *)_Objects_Get(
47128: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4712a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4712c: 4879 0006 2aac pea 62aac <_POSIX_Condition_variables_Information><== NOT EXECUTED 47132: 4eb9 0004 a01c jsr 4a01c <_Objects_Get> <== NOT EXECUTED 47138: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
&_POSIX_Condition_variables_Information,
(Objects_Id) *cond,
location
);
}
4713c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47140: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 47144: 4e5e unlk %fp <== NOT EXECUTED 47146: 4e75 rts <== NOT EXECUTED
if ( *cond == PTHREAD_COND_INITIALIZER ) {
/*
* Do an "auto-create" here.
*/
status = pthread_cond_init( cond, 0 );
47148: 42a7 clrl %sp@- <== NOT EXECUTED 4714a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4714c: 4eb9 0004 7184 jsr 47184 <pthread_cond_init> <== NOT EXECUTED
if ( status ) {
47152: 508f addql #8,%sp <== NOT EXECUTED 47154: 4a80 tstl %d0 <== NOT EXECUTED 47156: 6618 bnes 47170 <_POSIX_Condition_variables_Get+0x64><== NOT EXECUTED 47158: 2012 movel %a2@,%d0 <== NOT EXECUTED
}
/*
* Now call Objects_Get()
*/
return (POSIX_Condition_variables_Control *)_Objects_Get(
4715a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4715c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4715e: 4879 0006 2aac pea 62aac <_POSIX_Condition_variables_Information><== NOT EXECUTED 47164: 4eb9 0004 a01c jsr 4a01c <_Objects_Get> <== NOT EXECUTED 4716a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4716e: 60cc bras 4713c <_POSIX_Condition_variables_Get+0x30><== NOT EXECUTED
* Do an "auto-create" here.
*/
status = pthread_cond_init( cond, 0 );
if ( status ) {
*location = OBJECTS_ERROR;
47170: 7001 moveq #1,%d0 <== NOT EXECUTED 47172: 2680 movel %d0,%a3@ <== NOT EXECUTED
return (POSIX_Condition_variables_Control *)_Objects_Get(
&_POSIX_Condition_variables_Information,
(Objects_Id) *cond,
location
);
}
47174: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
*/
status = pthread_cond_init( cond, 0 );
if ( status ) {
*location = OBJECTS_ERROR;
return (POSIX_Condition_variables_Control *) 0;
47178: 4280 clrl %d0 <== NOT EXECUTED
return (POSIX_Condition_variables_Control *)_Objects_Get(
&_POSIX_Condition_variables_Information,
(Objects_Id) *cond,
location
);
}
4717a: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4717e: 4e5e unlk %fp <== NOT EXECUTED
...
00047258 <_POSIX_Condition_variables_Signal_support>:
int _POSIX_Condition_variables_Signal_support(
pthread_cond_t *cond,
bool is_broadcast
)
{
47258: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4725c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
Thread_Control *the_thread;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
47260: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47264: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int _POSIX_Condition_variables_Signal_support(
pthread_cond_t *cond,
bool is_broadcast
)
{
47268: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
Thread_Control *the_thread;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
4726c: 4eb9 0004 710c jsr 4710c <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
47272: 508f addql #8,%sp <== NOT EXECUTED
{
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
Thread_Control *the_thread;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
47274: 2640 moveal %d0,%a3 <== NOT EXECUTED
switch ( location ) {
47276: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4727a: 670c beqs 47288 <_POSIX_Condition_variables_Signal_support+0x30><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4727c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4727e: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 47284: 4e5e unlk %fp <== NOT EXECUTED 47286: 4e75 rts <== NOT EXECUTED 47288: 2600 movel %d0,%d3 <== NOT EXECUTED 4728a: 0683 0000 0018 addil #24,%d3 <== NOT EXECUTED 47290: 45f9 0004 ac8c lea 4ac8c <_Thread_queue_Dequeue>,%a2 <== NOT EXECUTED
the_cond = _POSIX_Condition_variables_Get( cond, &location );
switch ( location ) {
case OBJECTS_LOCAL:
do {
the_thread = _Thread_queue_Dequeue( &the_cond->Wait_queue );
47296: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47298: 4e92 jsr %a2@ <== NOT EXECUTED
if ( !the_thread )
4729a: 588f addql #4,%sp <== NOT EXECUTED 4729c: 4a80 tstl %d0 <== NOT EXECUTED 4729e: 671a beqs 472ba <_POSIX_Condition_variables_Signal_support+0x62><== NOT EXECUTED
the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
} while ( is_broadcast && the_thread );
472a0: 4a02 tstb %d2 <== NOT EXECUTED 472a2: 6704 beqs 472a8 <_POSIX_Condition_variables_Signal_support+0x50><== NOT EXECUTED 472a4: 4a80 tstl %d0 <== NOT EXECUTED 472a6: 66ee bnes 47296 <_POSIX_Condition_variables_Signal_support+0x3e><== NOT EXECUTED
_Thread_Enable_dispatch();
472a8: 4eb9 0004 a8aa jsr 4a8aa <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
472ae: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
472b0: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 472b6: 4e5e unlk %fp <== NOT EXECUTED 472b8: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
do {
the_thread = _Thread_queue_Dequeue( &the_cond->Wait_queue );
if ( !the_thread )
the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
472ba: 42ab 0014 clrl %a3@(20) <== NOT EXECUTED 472be: 60e0 bras 472a0 <_POSIX_Condition_variables_Signal_support+0x48><== NOT EXECUTED
00047324 <_POSIX_Condition_variables_Wait_support>:
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
47324: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 47328: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
int status;
int mutex_status;
if ( !_POSIX_Mutex_Get( mutex, &location ) ) {
4732c: 240e movel %fp,%d2 <== NOT EXECUTED 4732e: 5982 subql #4,%d2 <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
47330: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
int status;
int mutex_status;
if ( !_POSIX_Mutex_Get( mutex, &location ) ) {
47334: 2f02 movel %d2,%sp@- <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
47336: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
int status;
int mutex_status;
if ( !_POSIX_Mutex_Get( mutex, &location ) ) {
4733a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
4733c: 162e 0017 moveb %fp@(23),%d3 <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
int status;
int mutex_status;
if ( !_POSIX_Mutex_Get( mutex, &location ) ) {
47340: 4eb9 0004 74a4 jsr 474a4 <_POSIX_Mutex_Get> <== NOT EXECUTED 47346: 508f addql #8,%sp <== NOT EXECUTED 47348: 4a80 tstl %d0 <== NOT EXECUTED 4734a: 6764 beqs 473b0 <_POSIX_Condition_variables_Wait_support+0x8c><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4734c: 2039 0006 26fc movel 626fc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47352: 5380 subql #1,%d0 <== NOT EXECUTED
return EINVAL;
}
_Thread_Unnest_dispatch();
the_cond = _POSIX_Condition_variables_Get( cond, &location );
47354: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47356: 23c0 0006 26fc movel %d0,626fc <_Thread_Dispatch_disable_level><== NOT EXECUTED 4735c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4735e: 4eb9 0004 710c jsr 4710c <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
47364: 508f addql #8,%sp <== NOT EXECUTED
return EINVAL;
}
_Thread_Unnest_dispatch();
the_cond = _POSIX_Condition_variables_Get( cond, &location );
47366: 2840 moveal %d0,%a4 <== NOT EXECUTED
switch ( location ) {
47368: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4736c: 6642 bnes 473b0 <_POSIX_Condition_variables_Wait_support+0x8c><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) {
4736e: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED 47372: 6718 beqs 4738c <_POSIX_Condition_variables_Wait_support+0x68><== NOT EXECUTED 47374: b092 cmpl %a2@,%d0 <== NOT EXECUTED 47376: 6714 beqs 4738c <_POSIX_Condition_variables_Wait_support+0x68><== NOT EXECUTED
_Thread_Enable_dispatch();
47378: 4eb9 0004 a8aa jsr 4a8aa <_Thread_Enable_dispatch> <== NOT EXECUTED
return EINVAL;
4737e: 7416 moveq #22,%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47380: 2002 movel %d2,%d0 <== NOT EXECUTED 47382: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 47388: 4e5e unlk %fp <== NOT EXECUTED 4738a: 4e75 rts <== NOT EXECUTED
if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) {
_Thread_Enable_dispatch();
return EINVAL;
}
(void) pthread_mutex_unlock( mutex );
4738c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4738e: 4eb9 0004 7774 jsr 47774 <pthread_mutex_unlock> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EINVAL;
}
*/
if ( !already_timedout ) {
47394: 588f addql #4,%sp <== NOT EXECUTED 47396: 4a03 tstb %d3 <== NOT EXECUTED 47398: 6724 beqs 473be <_POSIX_Condition_variables_Wait_support+0x9a><== NOT EXECUTED
status = _Thread_Executing->Wait.return_code;
if ( status == EINTR )
status = 0;
} else {
_Thread_Enable_dispatch();
4739a: 4eb9 0004 a8aa jsr 4a8aa <_Thread_Enable_dispatch> <== NOT EXECUTED
status = ETIMEDOUT;
473a0: 7474 moveq #116,%d2 <== NOT EXECUTED
/*
* When we get here the dispatch disable level is 0.
*/
mutex_status = pthread_mutex_lock( mutex );
473a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 473a4: 4eb9 0004 76d8 jsr 476d8 <pthread_mutex_lock> <== NOT EXECUTED
if ( mutex_status )
473aa: 588f addql #4,%sp <== NOT EXECUTED 473ac: 4a80 tstl %d0 <== NOT EXECUTED 473ae: 67d0 beqs 47380 <_POSIX_Condition_variables_Wait_support+0x5c><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
473b0: 7416 moveq #22,%d2 <== NOT EXECUTED
}
473b2: 2002 movel %d2,%d0 <== NOT EXECUTED 473b4: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 473ba: 4e5e unlk %fp <== NOT EXECUTED 473bc: 4e75 rts <== NOT EXECUTED
return EINVAL;
}
*/
if ( !already_timedout ) {
the_cond->Mutex = *mutex;
473be: 2952 0014 movel %a2@,%a4@(20) <== NOT EXECUTED
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;
473c2: 7201 moveq #1,%d1 <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
_Thread_Executing->Wait.return_code = 0;
_Thread_Executing->Wait.queue = &the_cond->Wait_queue;
473c4: 200c movel %a4,%d0 <== NOT EXECUTED 473c6: 0680 0000 0018 addil #24,%d0 <== NOT EXECUTED 473cc: 2941 0048 movel %d1,%a4@(72) <== NOT EXECUTED
if ( !already_timedout ) {
the_cond->Mutex = *mutex;
_Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
_Thread_Executing->Wait.return_code = 0;
473d0: 2079 0006 2b8c moveal 62b8c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 473d6: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
_Thread_Executing->Wait.queue = &the_cond->Wait_queue;
_Thread_Executing->Wait.id = *cond;
473da: 2153 0020 movel %a3@,%a0@(32) <== NOT EXECUTED
if ( !already_timedout ) {
the_cond->Mutex = *mutex;
_Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
_Thread_Executing->Wait.return_code = 0;
_Thread_Executing->Wait.queue = &the_cond->Wait_queue;
473de: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
_Thread_Executing->Wait.id = *cond;
_Thread_queue_Enqueue( &the_cond->Wait_queue, timeout );
473e2: 4879 0004 b22c pea 4b22c <_Thread_queue_Timeout> <== NOT EXECUTED 473e8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 473ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 473ee: 4eb9 0004 adfc jsr 4adfc <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
473f4: 4eb9 0004 a8aa jsr 4a8aa <_Thread_Enable_dispatch> <== NOT EXECUTED
* a POSIX signal, then pthread_cond_wait returns spuriously,
* according to the POSIX standard. It means that pthread_cond_wait
* returns a success status, except for the fact that it was not
* woken up a pthread_cond_signal or a pthread_cond_broadcast.
*/
status = _Thread_Executing->Wait.return_code;
473fa: 2079 0006 2b8c moveal 62b8c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
if ( status == EINTR )
status = 0;
47400: 7004 moveq #4,%d0 <== NOT EXECUTED
* according to the POSIX standard. It means that pthread_cond_wait
* returns a success status, except for the fact that it was not
* woken up a pthread_cond_signal or a pthread_cond_broadcast.
*/
status = _Thread_Executing->Wait.return_code;
if ( status == EINTR )
47402: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* a POSIX signal, then pthread_cond_wait returns spuriously,
* according to the POSIX standard. It means that pthread_cond_wait
* returns a success status, except for the fact that it was not
* woken up a pthread_cond_signal or a pthread_cond_broadcast.
*/
status = _Thread_Executing->Wait.return_code;
47406: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED
if ( status == EINTR )
status = 0;
4740a: b082 cmpl %d2,%d0 <== NOT EXECUTED 4740c: 56c0 sne %d0 <== NOT EXECUTED
/*
* When we get here the dispatch disable level is 0.
*/
mutex_status = pthread_mutex_lock( mutex );
4740e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
* returns a success status, except for the fact that it was not
* woken up a pthread_cond_signal or a pthread_cond_broadcast.
*/
status = _Thread_Executing->Wait.return_code;
if ( status == EINTR )
status = 0;
47410: 49c0 extbl %d0 <== NOT EXECUTED 47412: c480 andl %d0,%d2 <== NOT EXECUTED
/*
* When we get here the dispatch disable level is 0.
*/
mutex_status = pthread_mutex_lock( mutex );
47414: 4eb9 0004 76d8 jsr 476d8 <pthread_mutex_lock> <== NOT EXECUTED
if ( mutex_status )
4741a: 588f addql #4,%sp <== NOT EXECUTED 4741c: 4a80 tstl %d0 <== NOT EXECUTED 4741e: 6700 ff60 beqw 47380 <_POSIX_Condition_variables_Wait_support+0x5c><== NOT EXECUTED 47422: 608c bras 473b0 <_POSIX_Condition_variables_Wait_support+0x8c><== NOT EXECUTED
0004651c <_POSIX_Keys_Free_memory>:
#include <rtems/posix/key.h>
void _POSIX_Keys_Free_memory(
POSIX_Keys_Control *the_key
)
{
4651c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46520: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/thread.h>
#include <rtems/score/wkspace.h>
#include <rtems/posix/key.h>
void _POSIX_Keys_Free_memory(
46524: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46528: 7403 moveq #3,%d2 <== NOT EXECUTED 4652a: 45ea 0018 lea %a2@(24),%a2 <== NOT EXECUTED
{
uint32_t the_api;
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ )
if ( the_key->Values[ the_api ] )
_Workspace_Free( the_key->Values[ the_api ] );
4652e: 47f9 0004 acfa lea 4acfa <_Workspace_Free>,%a3 <== NOT EXECUTED
)
{
uint32_t the_api;
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ )
if ( the_key->Values[ the_api ] )
46534: 201a movel %a2@+,%d0 <== NOT EXECUTED
_Workspace_Free( the_key->Values[ the_api ] );
46536: 5382 subql #1,%d2 <== NOT EXECUTED
)
{
uint32_t the_api;
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ )
if ( the_key->Values[ the_api ] )
46538: 4a80 tstl %d0 <== NOT EXECUTED 4653a: 6706 beqs 46542 <_POSIX_Keys_Free_memory+0x26> <== NOT EXECUTED
_Workspace_Free( the_key->Values[ the_api ] );
4653c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4653e: 4e93 jsr %a3@ <== NOT EXECUTED 46540: 588f addql #4,%sp <== NOT EXECUTED
POSIX_Keys_Control *the_key
)
{
uint32_t the_api;
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ )
46542: 4a82 tstl %d2 <== NOT EXECUTED 46544: 66ee bnes 46534 <_POSIX_Keys_Free_memory+0x18> <== NOT EXECUTED
if ( the_key->Values[ the_api ] )
_Workspace_Free( the_key->Values[ the_api ] );
}
46546: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4654c: 4e5e unlk %fp <== NOT EXECUTED
0004dfd0 <_POSIX_Keys_Run_destructors>:
4dfd0: 7218 moveq #24,%d1
*/
void _POSIX_Keys_Run_destructors(
Thread_Control *thread
)
{
4dfd2: 4e56 ffec linkw %fp,#-20 4dfd6: 206e 0008 moveal %fp@(8),%a0 4dfda: 48d7 007c moveml %d2-%d6,%sp@
Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id );
4dfde: 2628 0008 movel %a0@(8),%d3 4dfe2: 2003 movel %d3,%d0 4dfe4: e2a8 lsrl %d1,%d0 4dfe6: 123c 0007 moveb #7,%d1 4dfea: c081 andl %d1,%d0
for ( index = 1 ; index <= max ; ++index ) {
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
_POSIX_Keys_Information.local_table [ index ];
if ( key != NULL && key->destructor != NULL ) {
void *value = key->Values [ thread_api ][ thread_index ];
4dfec: 0283 0000 ffff andil #65535,%d3 4dff2: 2c00 movel %d0,%d6 4dff4: 5a86 addql #5,%d6
*
* Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99.
*/
while ( !done ) {
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
4dff6: 3039 0006 0010 movew 60010 <_POSIX_Keys_Information+0xe>,%d0
for ( index = 1 ; index <= max ; ++index ) {
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
_POSIX_Keys_Information.local_table [ index ];
if ( key != NULL && key->destructor != NULL ) {
void *value = key->Values [ thread_api ][ thread_index ];
4dffc: e58b lsll #2,%d3
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4dffe: 4a40 tstw %d0
4e000: 660a bnes 4e00c <_POSIX_Keys_Run_destructors+0x3c><== NEVER TAKEN
done = false;
}
}
}
}
}
4e002: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 4e008: 4e5e unlk %fp 4e00a: 4e75 rts
4e00c: 4285 clrl %d5 <== NOT EXECUTED 4e00e: 7201 moveq #1,%d1 <== NOT EXECUTED
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4e010: 7401 moveq #1,%d2 <== NOT EXECUTED 4e012: 7801 moveq #1,%d4 <== NOT EXECUTED 4e014: 3a00 movew %d0,%d5 <== NOT EXECUTED
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
4e016: 2079 0006 001a moveal 6001a <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4e01c: 5282 addql #1,%d2 <== NOT EXECUTED
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
4e01e: 2070 1c00 moveal %a0@(00000000,%d1:l:4),%a0 <== NOT EXECUTED
_POSIX_Keys_Information.local_table [ index ];
if ( key != NULL && key->destructor != NULL ) {
4e022: 4a88 tstl %a0 <== NOT EXECUTED 4e024: 671c beqs 4e042 <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED 4e026: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED 4e02a: 4a89 tstl %a1 <== NOT EXECUTED 4e02c: 6714 beqs 4e042 <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED
void *value = key->Values [ thread_api ][ thread_index ];
4e02e: 2070 6c00 moveal %a0@(00000000,%d6:l:4),%a0 <== NOT EXECUTED 4e032: d1c3 addal %d3,%a0 <== NOT EXECUTED 4e034: 2210 movel %a0@,%d1 <== NOT EXECUTED
if ( value != NULL ) {
4e036: 670a beqs 4e042 <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED
key->Values [ thread_api ][ thread_index ] = NULL;
4e038: 4290 clrl %a0@ <== NOT EXECUTED
(*key->destructor)( value );
done = false;
4e03a: 4204 clrb %d4 <== NOT EXECUTED
if ( key != NULL && key->destructor != NULL ) {
void *value = key->Values [ thread_api ][ thread_index ];
if ( value != NULL ) {
key->Values [ thread_api ][ thread_index ] = NULL;
(*key->destructor)( value );
4e03c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4e03e: 4e91 jsr %a1@ <== NOT EXECUTED 4e040: 588f addql #4,%sp <== NOT EXECUTED
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4e042: 4281 clrl %d1 <== NOT EXECUTED 4e044: 3202 movew %d2,%d1 <== NOT EXECUTED 4e046: b285 cmpl %d5,%d1 <== NOT EXECUTED 4e048: 63cc blss 4e016 <_POSIX_Keys_Run_destructors+0x46><== NOT EXECUTED
* number of iterations. An infinite loop may happen if destructors set
* thread specific data. This can be considered dubious.
*
* Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99.
*/
while ( !done ) {
4e04a: 4a04 tstb %d4 <== NOT EXECUTED 4e04c: 66b4 bnes 4e002 <_POSIX_Keys_Run_destructors+0x32><== NOT EXECUTED
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
4e04e: 3039 0006 0010 movew 60010 <_POSIX_Keys_Information+0xe>,%d0<== NOT EXECUTED
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4e054: 67ac beqs 4e002 <_POSIX_Keys_Run_destructors+0x32><== NOT EXECUTED 4e056: 60b4 bras 4e00c <_POSIX_Keys_Run_destructors+0x3c><== NOT EXECUTED
000531cc <_POSIX_Message_queue_Create_support>:
const char *name_arg,
int pshared,
struct mq_attr *attr_ptr,
POSIX_Message_queue_Control **message_queue
)
{
531cc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 531d0: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED
CORE_message_queue_Attributes *the_mq_attr;
struct mq_attr attr;
char *name;
size_t n;
n = strnlen( name_arg, NAME_MAX );
531d4: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
const char *name_arg,
int pshared,
struct mq_attr *attr_ptr,
POSIX_Message_queue_Control **message_queue
)
{
531d8: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 531dc: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
CORE_message_queue_Attributes *the_mq_attr;
struct mq_attr attr;
char *name;
size_t n;
n = strnlen( name_arg, NAME_MAX );
531e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 531e2: 4eb9 0005 86a8 jsr 586a8 <strnlen> <== NOT EXECUTED 531e8: 2800 movel %d0,%d4 <== NOT EXECUTED 531ea: 2039 0006 9a38 movel 69a38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 531f0: 5280 addql #1,%d0 <== NOT EXECUTED 531f2: 23c0 0006 9a38 movel %d0,69a38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* There is no real basis for the default values. They will work
* but were not compared against any existing implementation for
* compatibility. See README.mqueue for an example program we
* think will print out the defaults. Report anything you find with it.
*/
if ( attr_ptr == NULL ) {
531f8: 508f addql #8,%sp <== NOT EXECUTED 531fa: 4a8a tstl %a2 <== NOT EXECUTED 531fc: 6700 00a4 beqw 532a2 <_POSIX_Message_queue_Create_support+0xd6><== NOT EXECUTED
attr.mq_maxmsg = 10;
attr.mq_msgsize = 16;
} else {
if ( attr_ptr->mq_maxmsg <= 0 ){
53200: 2a2a 0004 movel %a2@(4),%d5 <== NOT EXECUTED 53204: 6f00 00a4 blew 532aa <_POSIX_Message_queue_Create_support+0xde><== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( attr_ptr->mq_msgsize <= 0 ){
53208: 2c2a 0008 movel %a2@(8),%d6 <== NOT EXECUTED 5320c: 6f00 009c blew 532aa <_POSIX_Message_queue_Create_support+0xde><== NOT EXECUTED
RTEMS_INLINE_ROUTINE
POSIX_Message_queue_Control *_POSIX_Message_queue_Allocate( void )
{
return (POSIX_Message_queue_Control *)
_Objects_Allocate( &_POSIX_Message_queue_Information );
53210: 4879 0006 9ce8 pea 69ce8 <_POSIX_Message_queue_Information><== NOT EXECUTED 53216: 4eb9 0004 f1f0 jsr 4f1f0 <_Objects_Allocate> <== NOT EXECUTED
attr = *attr_ptr;
}
the_mq = _POSIX_Message_queue_Allocate();
if ( !the_mq ) {
5321c: 588f addql #4,%sp <== NOT EXECUTED 5321e: 2440 moveal %d0,%a2 <== NOT EXECUTED 53220: 4a80 tstl %d0 <== NOT EXECUTED 53222: 6700 010a beqw 5332e <_POSIX_Message_queue_Create_support+0x162><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
}
the_mq->process_shared = pshared;
the_mq->named = true;
the_mq->open_count = 1;
53226: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Make a copy of the user's string for name just in case it was
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
53228: 5284 addql #1,%d4 <== NOT EXECUTED
if ( !the_mq ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENFILE );
}
the_mq->process_shared = pshared;
5322a: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED
the_mq->named = true;
53230: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_mq->open_count = 1;
53234: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED
the_mq->linked = true;
53238: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
/*
* Make a copy of the user's string for name just in case it was
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
5323c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5323e: 4eb9 0005 159a jsr 5159a <_Workspace_Allocate> <== NOT EXECUTED
if (!name) {
53244: 588f addql #4,%sp <== NOT EXECUTED
/*
* Make a copy of the user's string for name just in case it was
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
53246: 2400 movel %d0,%d2 <== NOT EXECUTED
if (!name) {
53248: 6700 00b6 beqw 53300 <_POSIX_Message_queue_Create_support+0x134><== NOT EXECUTED
_POSIX_Message_queue_Free( the_mq );
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOMEM );
}
strncpy( name, name_arg, n+1 );
5324c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5324e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 53250: 2f00 movel %d0,%sp@- <== NOT EXECUTED 53252: 4eb9 0005 8624 jsr 58624 <strncpy> <== NOT EXECUTED
* * Joel: Cite POSIX or OpenGroup on above statement so we can determine * if it is a real requirement. */ the_mq_attr = &the_mq->Message_queue.Attributes; the_mq_attr->discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
53258: 42aa 005a clrl %a2@(90) <== NOT EXECUTED
if ( !_CORE_message_queue_Initialize(
5325c: 2f06 movel %d6,%sp@- <== NOT EXECUTED 5325e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 53260: 486a 005a pea %a2@(90) <== NOT EXECUTED 53264: 486a 001a pea %a2@(26) <== NOT EXECUTED 53268: 4eb9 0005 41c4 jsr 541c4 <_CORE_message_queue_Initialize> <== NOT EXECUTED 5326e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 53272: 4a00 tstb %d0 <== NOT EXECUTED 53274: 6752 beqs 532c8 <_POSIX_Message_queue_Create_support+0xfc><== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
53276: 4280 clrl %d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
53278: 2079 0006 9d00 moveal 69d00 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
5327e: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
53282: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Message_queue_Information,
&the_mq->Object,
name
);
*message_queue = the_mq;
53286: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
5328a: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 5328e: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
53290: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
53296: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
);
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
5329c: 4280 clrl %d0 <== NOT EXECUTED
}
5329e: 4e5e unlk %fp <== NOT EXECUTED 532a0: 4e75 rts <== NOT EXECUTED
* compatibility. See README.mqueue for an example program we
* think will print out the defaults. Report anything you find with it.
*/
if ( attr_ptr == NULL ) {
attr.mq_maxmsg = 10;
attr.mq_msgsize = 16;
532a2: 7c10 moveq #16,%d6 <== NOT EXECUTED
* but were not compared against any existing implementation for
* compatibility. See README.mqueue for an example program we
* think will print out the defaults. Report anything you find with it.
*/
if ( attr_ptr == NULL ) {
attr.mq_maxmsg = 10;
532a4: 7a0a moveq #10,%d5 <== NOT EXECUTED 532a6: 6000 ff68 braw 53210 <_POSIX_Message_queue_Create_support+0x44><== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( attr_ptr->mq_msgsize <= 0 ){
_Thread_Enable_dispatch();
532aa: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
532b0: 7816 moveq #22,%d4 <== NOT EXECUTED 532b2: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 532b8: 2040 moveal %d0,%a0 <== NOT EXECUTED 532ba: 70ff moveq #-1,%d0 <== NOT EXECUTED 532bc: 2084 movel %d4,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
532be: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 532c4: 4e5e unlk %fp <== NOT EXECUTED 532c6: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free (
POSIX_Message_queue_Control *the_mq
)
{
_Objects_Free( &_POSIX_Message_queue_Information, &the_mq->Object );
532c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 532ca: 4879 0006 9ce8 pea 69ce8 <_POSIX_Message_queue_Information><== NOT EXECUTED 532d0: 4eb9 0004 f544 jsr 4f544 <_Objects_Free> <== NOT EXECUTED
attr.mq_maxmsg,
attr.mq_msgsize
) ) {
_POSIX_Message_queue_Free( the_mq );
_Workspace_Free(name);
532d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 532d8: 4eb9 0005 15b6 jsr 515b6 <_Workspace_Free> <== NOT EXECUTED
_Thread_Enable_dispatch();
532de: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
532e4: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 532ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 532ee: 721c moveq #28,%d1 <== NOT EXECUTED 532f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 532f2: 70ff moveq #-1,%d0 <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
532f4: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
) ) {
_POSIX_Message_queue_Free( the_mq );
_Workspace_Free(name);
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOSPC );
532fa: 2081 movel %d1,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
532fc: 4e5e unlk %fp <== NOT EXECUTED 532fe: 4e75 rts <== NOT EXECUTED 53300: 2f0a movel %a2,%sp@- <== NOT EXECUTED 53302: 4879 0006 9ce8 pea 69ce8 <_POSIX_Message_queue_Information><== NOT EXECUTED
*/
name = _Workspace_Allocate(n+1);
if (!name) {
_POSIX_Message_queue_Free( the_mq );
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOMEM );
53308: 740c moveq #12,%d2 <== NOT EXECUTED 5330a: 4eb9 0004 f544 jsr 4f544 <_Objects_Free> <== NOT EXECUTED
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
if (!name) {
_POSIX_Message_queue_Free( the_mq );
_Thread_Enable_dispatch();
53310: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
53316: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 5331c: 508f addql #8,%sp <== NOT EXECUTED 5331e: 2040 moveal %d0,%a0 <== NOT EXECUTED 53320: 70ff moveq #-1,%d0 <== NOT EXECUTED 53322: 2082 movel %d2,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
53324: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 5332a: 4e5e unlk %fp <== NOT EXECUTED 5332c: 4e75 rts <== NOT EXECUTED
attr = *attr_ptr;
}
the_mq = _POSIX_Message_queue_Allocate();
if ( !the_mq ) {
_Thread_Enable_dispatch();
5332e: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
53334: 7617 moveq #23,%d3 <== NOT EXECUTED 53336: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 5333c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5333e: 70ff moveq #-1,%d0 <== NOT EXECUTED 53340: 2083 movel %d3,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
53342: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 53348: 4e5e unlk %fp <== NOT EXECUTED
0004be08 <_POSIX_Message_queue_Delete>:
*/
void _POSIX_Message_queue_Delete(
POSIX_Message_queue_Control *the_mq
)
{
4be08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4be0c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4be0e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !the_mq->linked && !the_mq->open_count ) {
4be12: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 4be16: 6606 bnes 4be1e <_POSIX_Message_queue_Delete+0x16><== NOT EXECUTED 4be18: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 4be1c: 6708 beqs 4be26 <_POSIX_Message_queue_Delete+0x1e><== NOT EXECUTED
);
_POSIX_Message_queue_Free( the_mq );
}
}
4be1e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4be22: 4e5e unlk %fp <== NOT EXECUTED 4be24: 4e75 rts <== NOT EXECUTED
);
_Workspace_Free( (void *)the_object->name.name_p );
}
#endif
_Objects_Close( &_POSIX_Message_queue_Information, the_object );
4be26: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4be28: 4879 0006 9ce8 pea 69ce8 <_POSIX_Message_queue_Information><== NOT EXECUTED 4be2e: 4eb9 0004 f280 jsr 4f280 <_Objects_Close> <== NOT EXECUTED
_CORE_message_queue_Close(
4be34: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 4be38: 42a7 clrl %sp@- <== NOT EXECUTED 4be3a: 486a 001a pea %a2@(26) <== NOT EXECUTED 4be3e: 4eb9 0004 e508 jsr 4e508 <_CORE_message_queue_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free (
POSIX_Message_queue_Control *the_mq
)
{
_Objects_Free( &_POSIX_Message_queue_Information, &the_mq->Object );
4be44: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4be46: 4879 0006 9ce8 pea 69ce8 <_POSIX_Message_queue_Information><== NOT EXECUTED 4be4c: 4eb9 0004 f544 jsr 4f544 <_Objects_Free> <== NOT EXECUTED
);
_POSIX_Message_queue_Free( the_mq );
}
}
4be52: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4be56: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4be5a: 4e5e unlk %fp <== NOT EXECUTED
...
0005334c <_POSIX_Message_queue_Name_to_id>:
*/
int _POSIX_Message_queue_Name_to_id(
const char *name,
Objects_Id *id
)
{
5334c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 53350: 2f0a movel %a2,%sp@- <== NOT EXECUTED 53352: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Id the_id;
if ( !name )
53356: 4a8a tstl %a2 <== NOT EXECUTED 53358: 6704 beqs 5335e <_POSIX_Message_queue_Name_to_id+0x12><== NOT EXECUTED
return EINVAL;
if ( !name[0] )
5335a: 4a12 tstb %a2@ <== NOT EXECUTED 5335c: 660a bnes 53368 <_POSIX_Message_queue_Name_to_id+0x1c><== NOT EXECUTED
return EINVAL;
5335e: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
53360: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 53364: 4e5e unlk %fp <== NOT EXECUTED 53366: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( !name[0] )
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
53368: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED 5336c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5336e: 4eb9 0005 86a8 jsr 586a8 <strnlen> <== NOT EXECUTED 53374: 508f addql #8,%sp <== NOT EXECUTED 53376: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED 5337c: 630a blss 53388 <_POSIX_Message_queue_Name_to_id+0x3c><== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
5337e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !name[0] )
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
return ENAMETOOLONG;
53382: 705b moveq #91,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
53384: 4e5e unlk %fp <== NOT EXECUTED 53386: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
return ENAMETOOLONG;
status = _Objects_Name_to_id_string(
53388: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5338c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5338e: 4879 0006 9ce8 pea 69ce8 <_POSIX_Message_queue_Information><== NOT EXECUTED 53394: 4eb9 0005 4874 jsr 54874 <_Objects_Name_to_id_string> <== NOT EXECUTED
&_POSIX_Message_queue_Information,
name,
&the_id
);
*id = the_id;
5339a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
5339e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status = _Objects_Name_to_id_string(
&_POSIX_Message_queue_Information,
name,
&the_id
);
*id = the_id;
533a2: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
533a6: 4a80 tstl %d0 <== NOT EXECUTED 533a8: 67b6 beqs 53360 <_POSIX_Message_queue_Name_to_id+0x14><== NOT EXECUTED
return 0;
return ENOENT;
}
533aa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
*id = the_id;
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
533ae: 7002 moveq #2,%d0 <== NOT EXECUTED
}
533b0: 4e5e unlk %fp <== NOT EXECUTED
0004bee4 <_POSIX_Message_queue_Notify_handler>:
*/
void _POSIX_Message_queue_Notify_handler(
void *user_data
)
{
4bee4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4bee8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4beea: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4beee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
the_mq = user_data;
kill( getpid(), the_mq->notification.sigev_signo );
4bef0: 242a 0092 movel %a2@(146),%d2 <== NOT EXECUTED 4bef4: 4eb9 0005 2a64 jsr 52a64 <getpid> <== NOT EXECUTED 4befa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4befc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4befe: 4eb9 0005 31b4 jsr 531b4 <kill> <== NOT EXECUTED
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
}
4bf04: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
the_message_queue->notify_argument = the_argument;
4bf08: 508f addql #8,%sp <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
4bf0a: 42aa 007a clrl %a2@(122) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4bf0e: 42aa 007e clrl %a2@(126) <== NOT EXECUTED 4bf12: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4bf16: 4e5e unlk %fp <== NOT EXECUTED
0004c1c0 <_POSIX_Message_queue_Receive_support>:
size_t msg_len,
unsigned int *msg_prio,
bool wait,
Watchdog_Interval timeout
)
{
4c1c0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4c1c4: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
mqd_t id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control_fd *) _Objects_Get(
4c1c8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c1cc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4c1d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c1d2: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c1d8: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED 4c1dc: 4eb9 0004 f6b0 jsr 4f6b0 <_Objects_Get> <== NOT EXECUTED
Objects_Locations location;
size_t length_out;
bool do_wait;
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
4c1e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c1e6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4c1ea: 671a beqs 4c206 <_POSIX_Message_queue_Receive_support+0x46><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c1ec: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c1f2: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c1f4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c1f6: 7009 moveq #9,%d0 <== NOT EXECUTED
}
4c1f8: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c1fe: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4c200: 2001 movel %d1,%d0 <== NOT EXECUTED 4c202: 4e5e unlk %fp <== NOT EXECUTED 4c204: 4e75 rts <== NOT EXECUTED
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {
4c206: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c208: 7803 moveq #3,%d4 <== NOT EXECUTED 4c20a: 7a01 moveq #1,%d5 <== NOT EXECUTED 4c20c: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED 4c210: c881 andl %d1,%d4 <== NOT EXECUTED 4c212: ba84 cmpl %d4,%d5 <== NOT EXECUTED 4c214: 6700 00f0 beqw 4c306 <_POSIX_Message_queue_Receive_support+0x146><== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EBADF );
}
the_mq = the_mq_fd->Queue;
4c218: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( msg_len < the_mq->Message_queue.maximum_message_size ) {
4c21a: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EBADF );
}
the_mq = the_mq_fd->Queue;
4c21e: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
if ( msg_len < the_mq->Message_queue.maximum_message_size ) {
4c222: b0a8 0066 cmpl %a0@(102),%d0 <== NOT EXECUTED 4c226: 6500 0094 bcsw 4c2bc <_POSIX_Message_queue_Receive_support+0xfc><== NOT EXECUTED
/*
* Now if something goes wrong, we return a "length" of -1
* to indicate an error.
*/
length_out = -1;
4c22a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c22c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
4c230: 4a03 tstb %d3 <== NOT EXECUTED 4c232: 6756 beqs 4c28a <_POSIX_Message_queue_Receive_support+0xca><== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
4c234: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED
length_out = -1;
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
4c238: 0801 000e btst #14,%d1 <== NOT EXECUTED 4c23c: 57c0 seq %d0 <== NOT EXECUTED 4c23e: 49c0 extbl %d0 <== NOT EXECUTED 4c240: 4480 negl %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
4c242: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c244: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c248: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c24c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c24e: 4868 001a pea %a0@(26) <== NOT EXECUTED 4c252: 4eb9 0004 e5b8 jsr 4e5b8 <_CORE_message_queue_Seize> <== NOT EXECUTED
&length_out,
do_wait,
timeout
);
_Thread_Enable_dispatch();
4c258: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
*msg_prio =
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
4c25e: 2079 0006 9ec8 moveal 69ec8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core(
CORE_message_queue_Submit_types priority
)
{
/* absolute value without a library dependency */
return ((priority >= 0) ? priority : -priority);
4c264: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED 4c268: 6d4e blts 4c2b8 <_POSIX_Message_queue_Receive_support+0xf8><== NOT EXECUTED
do_wait,
timeout
);
_Thread_Enable_dispatch();
*msg_prio =
4c26a: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
if ( !_Thread_Executing->Wait.return_code )
4c26e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
do_wait,
timeout
);
_Thread_Enable_dispatch();
*msg_prio =
4c272: 2280 movel %d0,%a1@ <== NOT EXECUTED
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
if ( !_Thread_Executing->Wait.return_code )
4c274: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 4c278: 6662 bnes 4c2dc <_POSIX_Message_queue_Receive_support+0x11c><== NOT EXECUTED
return length_out;
4c27a: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c27e: 2001 movel %d1,%d0 <== NOT EXECUTED 4c280: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 4c286: 4e5e unlk %fp <== NOT EXECUTED 4c288: 4e75 rts <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
4c28a: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED
length_out = -1;
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
4c28e: 4280 clrl %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
4c290: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c292: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c296: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c29a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c29c: 4868 001a pea %a0@(26) <== NOT EXECUTED 4c2a0: 4eb9 0004 e5b8 jsr 4e5b8 <_CORE_message_queue_Seize> <== NOT EXECUTED
&length_out,
do_wait,
timeout
);
_Thread_Enable_dispatch();
4c2a6: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
*msg_prio =
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
4c2ac: 2079 0006 9ec8 moveal 69ec8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4c2b2: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED 4c2b6: 6cb2 bges 4c26a <_POSIX_Message_queue_Receive_support+0xaa><== NOT EXECUTED 4c2b8: 4480 negl %d0 <== NOT EXECUTED 4c2ba: 60ae bras 4c26a <_POSIX_Message_queue_Receive_support+0xaa><== NOT EXECUTED
}
the_mq = the_mq_fd->Queue;
if ( msg_len < the_mq->Message_queue.maximum_message_size ) {
_Thread_Enable_dispatch();
4c2bc: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EMSGSIZE );
4c2c2: 747a moveq #122,%d2 <== NOT EXECUTED 4c2c4: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c2ca: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c2cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c2ce: 2001 movel %d1,%d0 <== NOT EXECUTED
the_mq = the_mq_fd->Queue;
if ( msg_len < the_mq->Message_queue.maximum_message_size ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EMSGSIZE );
4c2d0: 2082 movel %d2,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c2d2: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 4c2d8: 4e5e unlk %fp <== NOT EXECUTED 4c2da: 4e75 rts <== NOT EXECUTED
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
if ( !_Thread_Executing->Wait.return_code )
return length_out;
rtems_set_errno_and_return_minus_one(
4c2dc: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c2e2: 2079 0006 9ec8 moveal 69ec8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4c2e8: 2440 moveal %d0,%a2 <== NOT EXECUTED 4c2ea: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4c2ee: 4eb9 0004 c5bc jsr 4c5bc <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4c2f4: 588f addql #4,%sp <== NOT EXECUTED 4c2f6: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c2f8: 2480 movel %d0,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c2fa: 2001 movel %d1,%d0 <== NOT EXECUTED 4c2fc: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 4c302: 4e5e unlk %fp <== NOT EXECUTED 4c304: 4e75 rts <== NOT EXECUTED
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {
_Thread_Enable_dispatch();
4c306: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
4c30c: 7609 moveq #9,%d3 <== NOT EXECUTED 4c30e: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c314: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c316: 2040 moveal %d0,%a0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c318: 2001 movel %d1,%d0 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EBADF );
4c31a: 2083 movel %d3,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c31c: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 4c322: 4e5e unlk %fp <== NOT EXECUTED
...
0004c34c <_POSIX_Message_queue_Send_support>:
/*
* Validate the priority.
* XXX - Do not validate msg_prio is not less than 0.
*/
if ( msg_prio > MQ_PRIO_MAX )
4c34c: 7020 moveq #32,%d0 <== NOT EXECUTED
size_t msg_len,
uint32_t msg_prio,
bool wait,
Watchdog_Interval timeout
)
{
4c34e: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4c352: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 4c356: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4c35a: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED 4c35e: 182e 001b moveb %fp@(27),%d4 <== NOT EXECUTED
/*
* Validate the priority.
* XXX - Do not validate msg_prio is not less than 0.
*/
if ( msg_prio > MQ_PRIO_MAX )
4c362: b082 cmpl %d2,%d0 <== NOT EXECUTED 4c364: 6500 00e2 bcsw 4c448 <_POSIX_Message_queue_Send_support+0xfc><== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
mqd_t id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control_fd *) _Objects_Get(
4c368: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c36c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c36e: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c374: 4eb9 0004 f6b0 jsr 4f6b0 <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
4c37a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c37e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4c382: 6600 00aa bnew 4c42e <_POSIX_Message_queue_Send_support+0xe2><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) {
4c386: 2240 moveal %d0,%a1 <== NOT EXECUTED 4c388: 7a03 moveq #3,%d5 <== NOT EXECUTED 4c38a: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED 4c38e: ca81 andl %d1,%d5 <== NOT EXECUTED 4c390: 6700 00d0 beqw 4c462 <_POSIX_Message_queue_Send_support+0x116><== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EBADF );
}
the_mq = the_mq_fd->Queue;
4c394: 2240 moveal %d0,%a1 <== NOT EXECUTED 4c396: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
4c39a: 4a04 tstb %d4 <== NOT EXECUTED 4c39c: 6750 beqs 4c3ee <_POSIX_Message_queue_Send_support+0xa2><== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c39e: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED 4c3a2: 4482 negl %d2 <== NOT EXECUTED
the_mq = the_mq_fd->Queue;
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
4c3a4: 0801 000e btst #14,%d1 <== NOT EXECUTED 4c3a8: 57c0 seq %d0 <== NOT EXECUTED 4c3aa: 49c0 extbl %d0 <== NOT EXECUTED 4c3ac: 4480 negl %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c3ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c3b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c3b2: 42a7 clrl %sp@- <== NOT EXECUTED 4c3b4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c3b6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c3ba: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c3be: 4868 001a pea %a0@(26) <== NOT EXECUTED 4c3c2: 4eb9 0004 e6f0 jsr 4e6f0 <_CORE_message_queue_Submit> <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
4c3c8: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c3cc: 2400 movel %d0,%d2 <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
4c3ce: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
* after it wakes up. The returned status is correct for
* non-blocking operations but if we blocked, then we need
* to look at the status in our TCB.
*/
if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT )
4c3d4: 7007 moveq #7,%d0 <== NOT EXECUTED 4c3d6: b082 cmpl %d2,%d0 <== NOT EXECUTED 4c3d8: 6748 beqs 4c422 <_POSIX_Message_queue_Send_support+0xd6><== NOT EXECUTED
msg_status = _Thread_Executing->Wait.return_code;
if ( !msg_status )
4c3da: 4a82 tstl %d2 <== NOT EXECUTED 4c3dc: 6600 00a4 bnew 4c482 <_POSIX_Message_queue_Send_support+0x136><== NOT EXECUTED
return msg_status;
4c3e0: 4281 clrl %d1 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c3e2: 2001 movel %d1,%d0 <== NOT EXECUTED 4c3e4: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4c3ea: 4e5e unlk %fp <== NOT EXECUTED 4c3ec: 4e75 rts <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c3ee: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED
the_mq = the_mq_fd->Queue;
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
4c3f2: 4280 clrl %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c3f4: 4482 negl %d2 <== NOT EXECUTED 4c3f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c3f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c3fa: 42a7 clrl %sp@- <== NOT EXECUTED 4c3fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c3fe: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c402: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c406: 4868 001a pea %a0@(26) <== NOT EXECUTED 4c40a: 4eb9 0004 e6f0 jsr 4e6f0 <_CORE_message_queue_Submit> <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
4c410: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c414: 2400 movel %d0,%d2 <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
4c416: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
* after it wakes up. The returned status is correct for
* non-blocking operations but if we blocked, then we need
* to look at the status in our TCB.
*/
if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT )
4c41c: 7007 moveq #7,%d0 <== NOT EXECUTED 4c41e: b082 cmpl %d2,%d0 <== NOT EXECUTED 4c420: 66b8 bnes 4c3da <_POSIX_Message_queue_Send_support+0x8e><== NOT EXECUTED
msg_status = _Thread_Executing->Wait.return_code;
4c422: 2079 0006 9ec8 moveal 69ec8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4c428: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED 4c42c: 60ac bras 4c3da <_POSIX_Message_queue_Send_support+0x8e><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c42e: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c434: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c436: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c438: 7009 moveq #9,%d0 <== NOT EXECUTED
}
4c43a: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c440: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4c442: 2001 movel %d1,%d0 <== NOT EXECUTED 4c444: 4e5e unlk %fp <== NOT EXECUTED 4c446: 4e75 rts <== NOT EXECUTED
* Validate the priority.
* XXX - Do not validate msg_prio is not less than 0.
*/
if ( msg_prio > MQ_PRIO_MAX )
rtems_set_errno_and_return_minus_one( EINVAL );
4c448: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c44e: 7616 moveq #22,%d3 <== NOT EXECUTED 4c450: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c452: 2040 moveal %d0,%a0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c454: 2001 movel %d1,%d0 <== NOT EXECUTED
* Validate the priority.
* XXX - Do not validate msg_prio is not less than 0.
*/
if ( msg_prio > MQ_PRIO_MAX )
rtems_set_errno_and_return_minus_one( EINVAL );
4c456: 2083 movel %d3,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c458: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4c45e: 4e5e unlk %fp <== NOT EXECUTED 4c460: 4e75 rts <== NOT EXECUTED
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) {
_Thread_Enable_dispatch();
4c462: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
4c468: 7409 moveq #9,%d2 <== NOT EXECUTED 4c46a: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c470: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c472: 2040 moveal %d0,%a0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c474: 2001 movel %d1,%d0 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EBADF );
4c476: 2082 movel %d2,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c478: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4c47e: 4e5e unlk %fp <== NOT EXECUTED 4c480: 4e75 rts <== NOT EXECUTED
msg_status = _Thread_Executing->Wait.return_code;
if ( !msg_status )
return msg_status;
rtems_set_errno_and_return_minus_one(
4c482: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c488: 2440 moveal %d0,%a2 <== NOT EXECUTED 4c48a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c48c: 4eb9 0004 c5bc jsr 4c5bc <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4c492: 588f addql #4,%sp <== NOT EXECUTED 4c494: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c496: 2480 movel %d0,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c498: 2001 movel %d1,%d0 <== NOT EXECUTED 4c49a: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 4c4a0: 4e5e unlk %fp <== NOT EXECUTED
0004c5bc <_POSIX_Message_queue_Translate_core_message_queue_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( the_message_queue_status > CORE_MESSAGE_QUEUE_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Message_queue_Return_codes[the_message_queue_status];
4c5bc: 41f9 0006 6c00 lea 66c00 <_POSIX_Message_queue_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Message_queue_Translate_core_message_queue_return_code(
uint32_t the_message_queue_status
)
{
4c5c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_message_queue_status > CORE_MESSAGE_QUEUE_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Message_queue_Return_codes[the_message_queue_status];
}
4c5c6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c5ca: 4e5e unlk %fp <== NOT EXECUTED 4c5cc: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
000482e0 <_POSIX_Mutex_Get>:
POSIX_Mutex_Control *_POSIX_Mutex_Get (
pthread_mutex_t *mutex,
Objects_Locations *location
)
{
482e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 482e4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 482e6: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 482ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 482ec: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
___POSIX_Mutex_Get_support_error_check( mutex, location );
482f0: 4a8a tstl %a2 <== NOT EXECUTED 482f2: 6750 beqs 48344 <_POSIX_Mutex_Get+0x64> <== NOT EXECUTED
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
482f4: 2012 movel %a2@,%d0 <== NOT EXECUTED 482f6: 72ff moveq #-1,%d1 <== NOT EXECUTED 482f8: b280 cmpl %d0,%d1 <== NOT EXECUTED 482fa: 6720 beqs 4831c <_POSIX_Mutex_Get+0x3c> <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
482fc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 482fe: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48300: 4879 0006 52d6 pea 652d6 <_POSIX_Mutex_Information> <== NOT EXECUTED 48306: 4eb9 0004 b280 jsr 4b280 <_Objects_Get> <== NOT EXECUTED
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
return (POSIX_Mutex_Control *)
4830c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
}
48310: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48314: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 48318: 4e5e unlk %fp <== NOT EXECUTED 4831a: 4e75 rts <== NOT EXECUTED
Objects_Locations *location
)
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
4831c: 42a7 clrl %sp@- <== NOT EXECUTED 4831e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48320: 4eb9 0004 8424 jsr 48424 <pthread_mutex_init> <== NOT EXECUTED 48326: 508f addql #8,%sp <== NOT EXECUTED 48328: 4a80 tstl %d0 <== NOT EXECUTED 4832a: 6618 bnes 48344 <_POSIX_Mutex_Get+0x64> <== NOT EXECUTED 4832c: 2012 movel %a2@,%d0 <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
4832e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48330: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48332: 4879 0006 52d6 pea 652d6 <_POSIX_Mutex_Information> <== NOT EXECUTED 48338: 4eb9 0004 b280 jsr 4b280 <_Objects_Get> <== NOT EXECUTED
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
return (POSIX_Mutex_Control *)
4833e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48342: 60cc bras 48310 <_POSIX_Mutex_Get+0x30> <== NOT EXECUTED
Objects_Locations *location
)
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
48344: 7001 moveq #1,%d0 <== NOT EXECUTED 48346: 2680 movel %d0,%a3@ <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
}
48348: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
Objects_Locations *location
)
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
4834c: 4280 clrl %d0 <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
}
4834e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 48352: 4e5e unlk %fp <== NOT EXECUTED
00048356 <_POSIX_Mutex_Get_interrupt_disable>:
POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable (
pthread_mutex_t *mutex,
Objects_Locations *location,
ISR_Level *level
)
{
48356: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4835a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4835c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 48360: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48362: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
___POSIX_Mutex_Get_support_error_check( mutex, location );
48366: 4a8a tstl %a2 <== NOT EXECUTED 48368: 6758 beqs 483c2 <_POSIX_Mutex_Get_interrupt_disable+0x6c><== NOT EXECUTED
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
4836a: 2012 movel %a2@,%d0 <== NOT EXECUTED 4836c: 72ff moveq #-1,%d1 <== NOT EXECUTED 4836e: b280 cmpl %d0,%d1 <== NOT EXECUTED 48370: 6724 beqs 48396 <_POSIX_Mutex_Get_interrupt_disable+0x40><== NOT EXECUTED
return (POSIX_Mutex_Control *) _Objects_Get_isr_disable(
48372: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48376: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48378: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4837a: 4879 0006 52d6 pea 652d6 <_POSIX_Mutex_Information> <== NOT EXECUTED 48380: 4eb9 0004 b220 jsr 4b220 <_Objects_Get_isr_disable> <== NOT EXECUTED 48386: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
&_POSIX_Mutex_Information,
(Objects_Id) *mutex,
location,
level
);
}
4838a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4838e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 48392: 4e5e unlk %fp <== NOT EXECUTED 48394: 4e75 rts <== NOT EXECUTED
ISR_Level *level
)
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
48396: 42a7 clrl %sp@- <== NOT EXECUTED 48398: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4839a: 4eb9 0004 8424 jsr 48424 <pthread_mutex_init> <== NOT EXECUTED 483a0: 508f addql #8,%sp <== NOT EXECUTED 483a2: 4a80 tstl %d0 <== NOT EXECUTED 483a4: 661c bnes 483c2 <_POSIX_Mutex_Get_interrupt_disable+0x6c><== NOT EXECUTED 483a6: 2012 movel %a2@,%d0 <== NOT EXECUTED
return (POSIX_Mutex_Control *) _Objects_Get_isr_disable(
483a8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 483ac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 483ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED 483b0: 4879 0006 52d6 pea 652d6 <_POSIX_Mutex_Information> <== NOT EXECUTED 483b6: 4eb9 0004 b220 jsr 4b220 <_Objects_Get_isr_disable> <== NOT EXECUTED 483bc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 483c0: 60c8 bras 4838a <_POSIX_Mutex_Get_interrupt_disable+0x34><== NOT EXECUTED
ISR_Level *level
)
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
483c2: 7201 moveq #1,%d1 <== NOT EXECUTED 483c4: 4280 clrl %d0 <== NOT EXECUTED 483c6: 2681 movel %d1,%a3@ <== NOT EXECUTED
&_POSIX_Mutex_Information,
(Objects_Id) *mutex,
location,
level
);
}
483c8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 483cc: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 483d0: 4e5e unlk %fp <== NOT EXECUTED
0004857c <_POSIX_Mutex_Lock_support>:
int _POSIX_Mutex_Lock_support(
pthread_mutex_t *mutex,
bool blocking,
Watchdog_Interval timeout
)
{
4857c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 48580: 2f02 movel %d2,%sp@- <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
ISR_Level level;
the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level );
48582: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 48586: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4858a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int _POSIX_Mutex_Lock_support(
pthread_mutex_t *mutex,
bool blocking,
Watchdog_Interval timeout
)
{
4858e: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
ISR_Level level;
the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level );
48592: 4eb9 0004 8356 jsr 48356 <_POSIX_Mutex_Get_interrupt_disable><== NOT EXECUTED
switch ( location ) {
48598: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4859c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 485a0: 663c bnes 485de <_POSIX_Mutex_Lock_support+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_mutex_Seize(
485a2: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 485a6: 2040 moveal %d0,%a0 <== NOT EXECUTED 485a8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 485ac: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 485b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 485b4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 485b8: 4868 0014 pea %a0@(20) <== NOT EXECUTED 485bc: 4eb9 0004 a518 jsr 4a518 <_CORE_mutex_Seize> <== NOT EXECUTED
blocking,
timeout,
level
);
return _POSIX_Mutex_Translate_core_mutex_return_code(
(CORE_mutex_Status) _Thread_Executing->Wait.return_code
485c2: 2079 0006 547c moveal 6547c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
the_mutex->Object.id,
blocking,
timeout,
level
);
return _POSIX_Mutex_Translate_core_mutex_return_code(
485c8: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 485cc: 4eb9 0004 8710 jsr 48710 <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
485d2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
the_mutex->Object.id,
blocking,
timeout,
level
);
return _POSIX_Mutex_Translate_core_mutex_return_code(
485d6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
485da: 4e5e unlk %fp <== NOT EXECUTED 485dc: 4e75 rts <== NOT EXECUTED 485de: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
485e2: 7016 moveq #22,%d0 <== NOT EXECUTED
}
485e4: 4e5e unlk %fp <== NOT EXECUTED
00048710 <_POSIX_Mutex_Translate_core_mutex_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( the_mutex_status > CORE_MUTEX_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Mutex_Return_codes[the_mutex_status];
48710: 41f9 0006 2690 lea 62690 <_POSIX_Mutex_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_Mutex_Translate_core_mutex_return_code(
CORE_mutex_Status the_mutex_status
)
{
48716: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_mutex_status > CORE_MUTEX_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Mutex_Return_codes[the_mutex_status];
}
4871a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4871e: 4e5e unlk %fp <== NOT EXECUTED 48720: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004d128 <_POSIX_Priority_Is_valid>:
#include <rtems/posix/priority.h>
bool _POSIX_Priority_Is_valid(
int priority
)
{
4d128: 4e56 0000 linkw %fp,#0 4d12c: 202e 0008 movel %fp@(8),%d0
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
4d130: 6f12 bles 4d144 <_POSIX_Priority_Is_valid+0x1c> <== NEVER TAKEN
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
4d132: 4281 clrl %d1 4d134: 1239 0005 f866 moveb 5f866 <rtems_maximum_priority>,%d1
}
4d13a: 4e5e unlk %fp
#endif
#include <rtems/system.h>
#include <rtems/posix/priority.h>
bool _POSIX_Priority_Is_valid(
4d13c: b280 cmpl %d0,%d1 4d13e: 5ec0 sgt %d0 4d140: 4480 negl %d0
)
{
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
}
4d142: 4e75 rts
4d144: 4e5e unlk %fp <== NOT EXECUTED
bool _POSIX_Priority_Is_valid(
int priority
)
{
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
4d146: 4200 clrb %d0 <== NOT EXECUTED
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
}
...
00047590 <_POSIX_RWLock_Translate_core_RWLock_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( the_rwlock_status > CORE_RWLOCK_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_RWLock_Return_codes[the_rwlock_status];
47590: 41f9 0006 02c4 lea 602c4 <_POSIX_RWLock_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_RWLock_Translate_core_RWLock_return_code(
CORE_RWLock_Status the_rwlock_status
)
{
47596: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_rwlock_status > CORE_RWLOCK_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_RWLock_Return_codes[the_rwlock_status];
}
4759a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4759e: 4e5e unlk %fp <== NOT EXECUTED 475a0: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004fb68 <_POSIX_Semaphore_Create_support>:
const char *name,
int pshared,
unsigned int value,
POSIX_Semaphore_Control **the_sem
)
{
4fb68: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4fb6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fb6e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fb70: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
CORE_semaphore_Attributes *the_sem_attr;
char *name_p = (char *)name;
/* Sharing semaphores among processes is not currently supported */
if (pshared != 0)
4fb74: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 4fb78: 6600 0112 bnew 4fc8c <_POSIX_Semaphore_Create_support+0x124><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
if ( name ) {
4fb7c: 4a82 tstl %d2 <== NOT EXECUTED 4fb7e: 6718 beqs 4fb98 <_POSIX_Semaphore_Create_support+0x30><== NOT EXECUTED
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
4fb80: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED 4fb84: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fb86: 4eb9 0005 4164 jsr 54164 <strnlen> <== NOT EXECUTED 4fb8c: 508f addql #8,%sp <== NOT EXECUTED 4fb8e: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED 4fb94: 6200 00dc bhiw 4fc72 <_POSIX_Semaphore_Create_support+0x10a><== NOT EXECUTED 4fb98: 2039 0006 4f98 movel 64f98 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4fb9e: 5280 addql #1,%d0 <== NOT EXECUTED 4fba0: 23c0 0006 4f98 movel %d0,64f98 <_Thread_Dispatch_disable_level><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Allocate( void )
{
return (POSIX_Semaphore_Control *)
_Objects_Allocate( &_POSIX_Semaphore_Information );
4fba6: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fbac: 4eb9 0004 b0d0 jsr 4b0d0 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
4fbb2: 588f addql #4,%sp <== NOT EXECUTED 4fbb4: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fbb6: 4a80 tstl %d0 <== NOT EXECUTED 4fbb8: 6700 00ec beqw 4fca6 <_POSIX_Semaphore_Create_support+0x13e><== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOSPC );
}
the_semaphore->process_shared = pshared;
4fbbc: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
if ( name ) {
4fbc0: 4a82 tstl %d2 <== NOT EXECUTED 4fbc2: 675c beqs 4fc20 <_POSIX_Semaphore_Create_support+0xb8><== NOT EXECUTED
the_semaphore->named = true;
the_semaphore->open_count = 1;
4fbc4: 7001 moveq #1,%d0 <== NOT EXECUTED 4fbc6: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED
}
the_semaphore->process_shared = pshared;
if ( name ) {
the_semaphore->named = true;
4fbca: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_semaphore->open_count = 1;
the_semaphore->linked = true;
4fbce: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
/*
* This effectively disables limit checking.
*/
the_sem_attr->maximum_count = 0xFFFFFFFF;
4fbd2: 70ff moveq #-1,%d0 <== NOT EXECUTED
* blocking tasks on this semaphore should be. It could somehow * be derived from the current scheduling policy. One * thing is certain, no matter what we decide, it won't be * the same as all other POSIX implementations. :) */ the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
4fbd4: 42aa 005e clrl %a2@(94) <== NOT EXECUTED
/*
* This effectively disables limit checking.
*/
the_sem_attr->maximum_count = 0xFFFFFFFF;
4fbd8: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED
_CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
4fbdc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fbe0: 486a 005a pea %a2@(90) <== NOT EXECUTED 4fbe4: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fbe8: 4eb9 0004 aa7c jsr 4aa7c <_CORE_semaphore_Initialize> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fbee: 2079 0006 51ec moveal 651ec <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4fbf4: 4280 clrl %d0 <== NOT EXECUTED 4fbf6: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fbfa: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Semaphore_Information,
&the_semaphore->Object,
name_p
);
*the_sem = the_semaphore;
4fbfe: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
4fc02: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 4fc06: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fc08: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4fc0e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fc12: 4280 clrl %d0 <== NOT EXECUTED
}
4fc14: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4fc18: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc1c: 4e5e unlk %fp <== NOT EXECUTED 4fc1e: 4e75 rts <== NOT EXECUTED
the_semaphore->named = true;
the_semaphore->open_count = 1;
the_semaphore->linked = true;
} else {
the_semaphore->named = false;
the_semaphore->open_count = 0;
4fc20: 42aa 0016 clrl %a2@(22) <== NOT EXECUTED
if ( name ) {
the_semaphore->named = true;
the_semaphore->open_count = 1;
the_semaphore->linked = true;
} else {
the_semaphore->named = false;
4fc24: 4200 clrb %d0 <== NOT EXECUTED
* blocking tasks on this semaphore should be. It could somehow * be derived from the current scheduling policy. One * thing is certain, no matter what we decide, it won't be * the same as all other POSIX implementations. :) */ the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
4fc26: 42aa 005e clrl %a2@(94) <== NOT EXECUTED
if ( name ) {
the_semaphore->named = true;
the_semaphore->open_count = 1;
the_semaphore->linked = true;
} else {
the_semaphore->named = false;
4fc2a: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_semaphore->open_count = 0;
the_semaphore->linked = false;
4fc2e: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
/*
* This effectively disables limit checking.
*/
the_sem_attr->maximum_count = 0xFFFFFFFF;
4fc32: 70ff moveq #-1,%d0 <== NOT EXECUTED 4fc34: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED
_CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
4fc38: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fc3c: 486a 005a pea %a2@(90) <== NOT EXECUTED 4fc40: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fc44: 4eb9 0004 aa7c jsr 4aa7c <_CORE_semaphore_Initialize> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fc4a: 2079 0006 51ec moveal 651ec <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4fc50: 4280 clrl %d0 <== NOT EXECUTED 4fc52: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fc56: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Semaphore_Information,
&the_semaphore->Object,
name_p
);
*the_sem = the_semaphore;
4fc5a: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
4fc5e: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 4fc62: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fc64: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4fc6a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fc6e: 4280 clrl %d0 <== NOT EXECUTED 4fc70: 60a2 bras 4fc14 <_POSIX_Semaphore_Create_support+0xac><== NOT EXECUTED
if (pshared != 0)
rtems_set_errno_and_return_minus_one( ENOSYS );
if ( name ) {
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
4fc72: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 4fc78: 745b moveq #91,%d2 <== NOT EXECUTED 4fc7a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fc7c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4fc7e: 2082 movel %d2,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc80: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4fc84: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc88: 4e5e unlk %fp <== NOT EXECUTED 4fc8a: 4e75 rts <== NOT EXECUTED
CORE_semaphore_Attributes *the_sem_attr;
char *name_p = (char *)name;
/* Sharing semaphores among processes is not currently supported */
if (pshared != 0)
rtems_set_errno_and_return_minus_one( ENOSYS );
4fc8c: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc92: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
CORE_semaphore_Attributes *the_sem_attr;
char *name_p = (char *)name;
/* Sharing semaphores among processes is not currently supported */
if (pshared != 0)
rtems_set_errno_and_return_minus_one( ENOSYS );
4fc96: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fc98: 7258 moveq #88,%d1 <== NOT EXECUTED 4fc9a: 70ff moveq #-1,%d0 <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc9c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fca0: 4e5e unlk %fp <== NOT EXECUTED
CORE_semaphore_Attributes *the_sem_attr;
char *name_p = (char *)name;
/* Sharing semaphores among processes is not currently supported */
if (pshared != 0)
rtems_set_errno_and_return_minus_one( ENOSYS );
4fca2: 2081 movel %d1,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fca4: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
4fca6: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4fcac: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fcb2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOSPC );
4fcb6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fcb8: 721c moveq #28,%d1 <== NOT EXECUTED 4fcba: 70ff moveq #-1,%d0 <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fcbc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fcc0: 4e5e unlk %fp <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOSPC );
4fcc2: 2081 movel %d1,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
...
0004fcc8 <_POSIX_Semaphore_Delete>:
*/
void _POSIX_Semaphore_Delete(
POSIX_Semaphore_Control *the_semaphore
)
{
4fcc8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4fccc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fcce: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !the_semaphore->linked && !the_semaphore->open_count ) {
4fcd2: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 4fcd6: 6606 bnes 4fcde <_POSIX_Semaphore_Delete+0x16> <== NOT EXECUTED 4fcd8: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 4fcdc: 6708 beqs 4fce6 <_POSIX_Semaphore_Delete+0x1e> <== NOT EXECUTED
-1
);
_POSIX_Semaphore_Free( the_semaphore );
}
}
4fcde: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fce2: 4e5e unlk %fp <== NOT EXECUTED 4fce4: 4e75 rts <== NOT EXECUTED
void _POSIX_Semaphore_Delete(
POSIX_Semaphore_Control *the_semaphore
)
{
if ( !the_semaphore->linked && !the_semaphore->open_count ) {
_Objects_Close( &_POSIX_Semaphore_Information, &the_semaphore->Object );
4fce6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fce8: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fcee: 4eb9 0004 b160 jsr 4b160 <_Objects_Close> <== NOT EXECUTED
_CORE_semaphore_Flush(
4fcf4: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 4fcf8: 42a7 clrl %sp@- <== NOT EXECUTED 4fcfa: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fcfe: 4eb9 0004 aa70 jsr 4aa70 <_CORE_semaphore_Flush> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Free (
POSIX_Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_POSIX_Semaphore_Information, &the_semaphore->Object );
4fd04: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fd06: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fd0c: 4eb9 0004 b424 jsr 4b424 <_Objects_Free> <== NOT EXECUTED
-1
);
_POSIX_Semaphore_Free( the_semaphore );
}
}
4fd12: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fd16: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4fd1a: 4e5e unlk %fp <== NOT EXECUTED
...
0004fd20 <_POSIX_Semaphore_Name_to_id>:
int _POSIX_Semaphore_Name_to_id(
const char *name,
sem_t *id
)
{
4fd20: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fd24: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Id the_id;
if ( !name )
4fd28: 4a88 tstl %a0 <== NOT EXECUTED 4fd2a: 6704 beqs 4fd30 <_POSIX_Semaphore_Name_to_id+0x10><== NOT EXECUTED
return EINVAL;
if ( !name[0] )
4fd2c: 4a10 tstb %a0@ <== NOT EXECUTED 4fd2e: 6606 bnes 4fd36 <_POSIX_Semaphore_Name_to_id+0x16><== NOT EXECUTED
return EINVAL;
4fd30: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
4fd32: 4e5e unlk %fp <== NOT EXECUTED 4fd34: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( !name[0] )
return EINVAL;
status = _Objects_Name_to_id_string(
4fd36: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fd3a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4fd3c: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fd42: 4eb9 0005 09c0 jsr 509c0 <_Objects_Name_to_id_string> <== NOT EXECUTED
&_POSIX_Semaphore_Information,
name,
&the_id
);
*id = the_id;
4fd48: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4fd4c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status = _Objects_Name_to_id_string(
&_POSIX_Semaphore_Information,
name,
&the_id
);
*id = the_id;
4fd50: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4fd54: 4a80 tstl %d0 <== NOT EXECUTED 4fd56: 67da beqs 4fd32 <_POSIX_Semaphore_Name_to_id+0x12><== NOT EXECUTED
return 0;
return ENOENT;
4fd58: 7002 moveq #2,%d0 <== NOT EXECUTED
}
4fd5a: 4e5e unlk %fp <== NOT EXECUTED
...
00052598 <_POSIX_Semaphore_Translate_core_semaphore_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( the_semaphore_status > CORE_SEMAPHORE_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Semaphore_Return_codes[the_semaphore_status];
52598: 41f9 0006 2ab4 lea 62ab4 <_POSIX_Semaphore_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Semaphore_Translate_core_semaphore_return_code(
CORE_semaphore_Status the_semaphore_status
)
{
5259e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_semaphore_status > CORE_SEMAPHORE_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Semaphore_Return_codes[the_semaphore_status];
}
525a2: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 525a6: 4e5e unlk %fp <== NOT EXECUTED 525a8: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004fd94 <_POSIX_Semaphore_Wait_support>:
int _POSIX_Semaphore_Wait_support(
sem_t *sem,
bool blocking,
Watchdog_Interval timeout
)
{
4fd94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fd98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4fd9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fd9e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
sem_t *id,
Objects_Locations *location
)
{
return (POSIX_Semaphore_Control *)
_Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location );
4fda0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fda4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4fda6: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fdac: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED 4fdb0: 4eb9 0004 b590 jsr 4b590 <_Objects_Get> <== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
4fdb6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fdba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fdbe: 671c beqs 4fddc <_POSIX_Semaphore_Wait_support+0x48><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fdc0: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED
}
4fdc6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fdca: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fdcc: 7016 moveq #22,%d0 <== NOT EXECUTED 4fdce: 72ff moveq #-1,%d1 <== NOT EXECUTED
}
4fdd0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fdd4: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fdd6: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4fdd8: 2001 movel %d1,%d0 <== NOT EXECUTED 4fdda: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_CORE_semaphore_Seize(
4fddc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fde0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fde2: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 4fde8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fdea: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4fdee: 4868 001a pea %a0@(26) <== NOT EXECUTED 4fdf2: 4eb9 0005 04a4 jsr 504a4 <_CORE_semaphore_Seize> <== NOT EXECUTED
&the_semaphore->Semaphore,
the_semaphore->Object.id,
blocking,
timeout
);
_Thread_Enable_dispatch();
4fdf8: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !_Thread_Executing->Wait.return_code )
4fdfe: 2079 0006 5428 moveal 65428 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4fe04: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4fe08: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 4fe0c: 6610 bnes 4fe1e <_POSIX_Semaphore_Wait_support+0x8a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fe0e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
timeout
);
_Thread_Enable_dispatch();
if ( !_Thread_Executing->Wait.return_code )
return 0;
4fe12: 4281 clrl %d1 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fe14: 2001 movel %d1,%d0 <== NOT EXECUTED 4fe16: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fe1a: 4e5e unlk %fp <== NOT EXECUTED 4fe1c: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( !_Thread_Executing->Wait.return_code )
return 0;
rtems_set_errno_and_return_minus_one(
4fe1e: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 4fe24: 2079 0006 5428 moveal 65428 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4fe2a: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fe2c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4fe30: 4eb9 0005 2598 jsr 52598 <_POSIX_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fe36: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( !_Thread_Executing->Wait.return_code )
return 0;
rtems_set_errno_and_return_minus_one(
4fe3a: 588f addql #4,%sp <== NOT EXECUTED 4fe3c: 72ff moveq #-1,%d1 <== NOT EXECUTED 4fe3e: 2480 movel %d0,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fe40: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fe44: 2001 movel %d1,%d0 <== NOT EXECUTED 4fe46: 4e5e unlk %fp <== NOT EXECUTED
...
00046728 <_POSIX_Spinlock_Translate_core_spinlock_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( the_spinlock_status > CORE_SPINLOCK_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Spinlock_Return_codes[the_spinlock_status];
46728: 41f9 0005 e5d0 lea 5e5d0 <_POSIX_Spinlock_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Spinlock_Translate_core_spinlock_return_code(
CORE_spinlock_Status the_spinlock_status
)
{
4672e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_spinlock_status > CORE_SPINLOCK_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Spinlock_Return_codes[the_spinlock_status];
}
46732: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46736: 4e5e unlk %fp <== NOT EXECUTED 46738: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004b9c8 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>:
#include <rtems/posix/pthread.h>
void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(
Thread_Control *the_thread
)
{
4b9c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b9cc: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
POSIX_API_Control *thread_support;
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
4b9d0: 2069 010e moveal %a1@(270),%a0 <== NOT EXECUTED
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
4b9d4: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED 4b9d8: 6608 bnes 4b9e2 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1a><== NOT EXECUTED 4b9da: 7001 moveq #1,%d0 <== NOT EXECUTED 4b9dc: b0a8 00dc cmpl %a0@(220),%d0 <== NOT EXECUTED 4b9e0: 6708 beqs 4b9ea <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x22><== NOT EXECUTED
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
} else
_Thread_Enable_dispatch();
}
4b9e2: 4e5e unlk %fp <== NOT EXECUTED
thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
thread_support->cancelation_requested ) {
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
} else
_Thread_Enable_dispatch();
4b9e4: 4ef9 0004 8a4a jmp 48a4a <_Thread_Enable_dispatch> <== NOT EXECUTED
POSIX_API_Control *thread_support;
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
4b9ea: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED 4b9ee: 67f2 beqs 4b9e2 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1a><== NOT EXECUTED
thread_support->cancelation_requested ) {
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
4b9f0: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4b9f4: 2039 0006 0490 movel 60490 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4b9fa: 5380 subql #1,%d0 <== NOT EXECUTED 4b9fc: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4b9fe: 23c0 0006 0490 movel %d0,60490 <_Thread_Dispatch_disable_level><== NOT EXECUTED 4ba04: 4eb9 0004 c318 jsr 4c318 <_POSIX_Thread_Exit> <== NOT EXECUTED 4ba0a: 508f addql #8,%sp <== NOT EXECUTED
} else
_Thread_Enable_dispatch();
}
4ba0c: 4e5e unlk %fp <== NOT EXECUTED
0004e324 <_POSIX_Thread_Exit>:
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
4e324: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4e328: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4e32c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e330: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
4e334: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e338: 4eb9 0004 7cf0 jsr 47cf0 <_Objects_Get_information_id> <== NOT EXECUTED
* are ready to be switched out. Otherwise, an ISR could
* occur and preempt us out while we still hold the
* allocator mutex.
*/
_RTEMS_Lock_allocator();
4e33e: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
void *value_ptr
)
{
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e344: 2600 movel %d0,%d3 <== NOT EXECUTED
* are ready to be switched out. Otherwise, an ISR could
* occur and preempt us out while we still hold the
* allocator mutex.
*/
_RTEMS_Lock_allocator();
4e346: 4eb9 0004 6e50 jsr 46e50 <_API_Mutex_Lock> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4e34c: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4e352: 5280 addql #1,%d0 <== NOT EXECUTED 4e354: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
the_thread->Wait.return_argument = value_ptr;
_Thread_Close( the_information, the_thread );
4e35a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
*/
_RTEMS_Lock_allocator();
_Thread_Disable_dispatch();
the_thread->Wait.return_argument = value_ptr;
4e35c: 2542 0028 movel %d2,%a2@(40) <== NOT EXECUTED
_Thread_Close( the_information, the_thread );
4e360: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e362: 4eb9 0004 83b4 jsr 483b4 <_Thread_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (
Thread_Control *the_pthread
)
{
_Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object );
4e368: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e36a: 4879 0005 fe54 pea 5fe54 <_POSIX_Threads_Information> <== NOT EXECUTED 4e370: 4eb9 0004 7c6c jsr 47c6c <_Objects_Free> <== NOT EXECUTED
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
4e376: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e37c: 4eb9 0004 6eb0 jsr 46eb0 <_API_Mutex_Unlock> <== NOT EXECUTED
_Thread_Enable_dispatch();
4e382: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4e386: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4e38c: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Close( the_information, the_thread );
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
_Thread_Enable_dispatch();
4e38e: 4ef9 0004 86e6 jmp 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
0004d14c <_POSIX_Thread_Translate_sched_param>:
int policy,
struct sched_param *param,
Thread_CPU_budget_algorithms *budget_algorithm,
Thread_CPU_budget_algorithm_callout *budget_callout
)
{
4d14c: 4e56 ffe8 linkw %fp,#-24 4d150: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ 4d154: 246e 000c moveal %fp@(12),%a2
if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )
4d158: 47f9 0004 d128 lea 4d128 <_POSIX_Priority_Is_valid>,%a3 4d15e: 2f12 movel %a2@,%sp@-
int policy,
struct sched_param *param,
Thread_CPU_budget_algorithms *budget_algorithm,
Thread_CPU_budget_algorithm_callout *budget_callout
)
{
4d160: 242e 0008 movel %fp@(8),%d2 4d164: 286e 0010 moveal %fp@(16),%a4 4d168: 2a6e 0014 moveal %fp@(20),%a5
if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )
4d16c: 4e93 jsr %a3@ 4d16e: 588f addql #4,%sp 4d170: 4a00 tstb %d0
4d172: 6720 beqs 4d194 <_POSIX_Thread_Translate_sched_param+0x48><== NEVER TAKEN
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
4d174: 4294 clrl %a4@
*budget_callout = NULL;
4d176: 4295 clrl %a5@
if ( policy == SCHED_OTHER ) {
4d178: 4a82 tstl %d2
4d17a: 6724 beqs 4d1a0 <_POSIX_Thread_Translate_sched_param+0x54><== NEVER TAKEN
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
return 0;
}
if ( policy == SCHED_FIFO ) {
4d17c: 7001 moveq #1,%d0 4d17e: b082 cmpl %d2,%d0 4d180: 6700 0086 beqw 4d208 <_POSIX_Thread_Translate_sched_param+0xbc>
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
}
if ( policy == SCHED_RR ) {
4d184: 103c 0002 moveb #2,%d0 <== NOT EXECUTED 4d188: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d18a: 6700 0088 beqw 4d214 <_POSIX_Thread_Translate_sched_param+0xc8><== NOT EXECUTED
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
return 0;
}
if ( policy == SCHED_SPORADIC ) {
4d18e: 7004 moveq #4,%d0 <== NOT EXECUTED 4d190: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d192: 671c beqs 4d1b0 <_POSIX_Thread_Translate_sched_param+0x64><== NOT EXECUTED
if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )
return EINVAL;
4d194: 7016 moveq #22,%d0 <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d196: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d19c: 4e5e unlk %fp <== NOT EXECUTED 4d19e: 4e75 rts <== NOT EXECUTED
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
*budget_callout = NULL;
if ( policy == SCHED_OTHER ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
4d1a0: 7201 moveq #1,%d1 <== NOT EXECUTED
return 0;
4d1a2: 4280 clrl %d0 <== NOT EXECUTED
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
*budget_callout = NULL;
if ( policy == SCHED_OTHER ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
4d1a4: 2881 movel %d1,%a4@ <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d1a6: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d1ac: 4e5e unlk %fp <== NOT EXECUTED 4d1ae: 4e75 rts <== NOT EXECUTED
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
return 0;
}
if ( policy == SCHED_SPORADIC ) {
if ( (param->sched_ss_repl_period.tv_sec == 0) &&
4d1b0: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4d1b4: 6606 bnes 4d1bc <_POSIX_Thread_Translate_sched_param+0x70><== NOT EXECUTED 4d1b6: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED 4d1ba: 67d8 beqs 4d194 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED
(param->sched_ss_repl_period.tv_nsec == 0) )
return EINVAL;
if ( (param->sched_ss_init_budget.tv_sec == 0) &&
4d1bc: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d1c0: 6606 bnes 4d1c8 <_POSIX_Thread_Translate_sched_param+0x7c><== NOT EXECUTED 4d1c2: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4d1c6: 67cc beqs 4d194 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED
(param->sched_ss_init_budget.tv_nsec == 0) )
return EINVAL;
if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <
4d1c8: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4d1cc: 243c 0004 aa14 movel #305684,%d2 <== NOT EXECUTED 4d1d2: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d1d4: 4e90 jsr %a0@ <== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
4d1d6: 486a 0010 pea %a2@(16) <== NOT EXECUTED
if ( (param->sched_ss_init_budget.tv_sec == 0) &&
(param->sched_ss_init_budget.tv_nsec == 0) )
return EINVAL;
if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <
4d1da: 2600 movel %d0,%d3 <== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
4d1dc: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d1de: 4e90 jsr %a0@ <== NOT EXECUTED
if ( (param->sched_ss_init_budget.tv_sec == 0) &&
(param->sched_ss_init_budget.tv_nsec == 0) )
return EINVAL;
if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <
4d1e0: 508f addql #8,%sp <== NOT EXECUTED 4d1e2: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d1e4: 62ae bhis 4d194 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )
4d1e6: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 4d1ea: 4e93 jsr %a3@ <== NOT EXECUTED 4d1ec: 588f addql #4,%sp <== NOT EXECUTED 4d1ee: 4a00 tstb %d0 <== NOT EXECUTED 4d1f0: 67a2 beqs 4d194 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;
4d1f2: 7003 moveq #3,%d0 <== NOT EXECUTED 4d1f4: 2880 movel %d0,%a4@ <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
4d1f6: 4280 clrl %d0 <== NOT EXECUTED
if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
4d1f8: 2abc 0004 6e74 movel #290420,%a5@ <== NOT EXECUTED
return 0;
}
return EINVAL;
}
4d1fe: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d204: 4e5e unlk %fp <== NOT EXECUTED 4d206: 4e75 rts <== NOT EXECUTED
return 0;
}
if ( policy == SCHED_FIFO ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
4d208: 4280 clrl %d0
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d20a: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 4d210: 4e5e unlk %fp 4d212: 4e75 rts
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
}
if ( policy == SCHED_RR ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
4d214: 2880 movel %d0,%a4@ <== NOT EXECUTED
return 0;
4d216: 4200 clrb %d0 <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d218: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d21e: 4e5e unlk %fp <== NOT EXECUTED
...
0004bc88 <_POSIX_Threads_Create_extension>:
bool _POSIX_Threads_Create_extension(
Thread_Control *executing __attribute__((unused)),
Thread_Control *created
)
{
4bc88: 4e56 0000 linkw %fp,#0 4bc8c: 2f0b movel %a3,%sp@- 4bc8e: 266e 000c moveal %fp@(12),%a3 4bc92: 2f0a movel %a2,%sp@-
POSIX_API_Control *api;
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
4bc94: 4878 00f0 pea f0 <DBL_MANT_DIG+0xbb> 4bc98: 4eb9 0004 9bb6 jsr 49bb6 <_Workspace_Allocate>
if ( !api )
4bc9e: 588f addql #4,%sp
)
{
POSIX_API_Control *api;
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
4bca0: 2440 moveal %d0,%a2
if ( !api )
4bca2: 4a80 tstl %d0 4bca4: 6700 013c beqw 4bde2 <_POSIX_Threads_Create_extension+0x15a>
return false;
created->API_Extensions[ THREAD_API_POSIX ] = api;
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
4bca8: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> 4bcac: 42a7 clrl %sp@-
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
if ( !api )
return false;
created->API_Extensions[ THREAD_API_POSIX ] = api;
4bcae: 2740 010e movel %d0,%a3@(270)
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
4bcb2: 2f00 movel %d0,%sp@- 4bcb4: 4eb9 0004 f228 jsr 4f228 <memset>
* The check for class == 1 is debug. Should never really happen.
*/
/* XXX use signal constants */
api->signals_pending = 0;
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
4bcba: 4fef 000c lea %sp@(12),%sp
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
api->detachstate = _POSIX_Threads_Default_attributes.detachstate;
api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy;
api->schedparam = _POSIX_Threads_Default_attributes.schedparam;
4bcbe: 41ea 008c lea %a2@(140),%a0
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4bcc2: 4281 clrl %d1 4bcc4: 1239 0005 e3e2 moveb 5e3e2 <rtems_maximum_priority>,%d1 4bcca: 4280 clrl %d0 4bccc: 102b 0008 moveb %a3@(8),%d0 4bcd0: 92ab 0014 subl %a3@(20),%d1 4bcd4: 20f9 0005 d988 movel 5d988 <_POSIX_Threads_Default_attributes+0x1c>,%a0@+ 4bcda: 20f9 0005 d98c movel 5d98c <_POSIX_Threads_Default_attributes+0x20>,%a0@+ 4bce0: 20f9 0005 d990 movel 5d990 <_POSIX_Threads_Default_attributes+0x24>,%a0@+ 4bce6: 20f9 0005 d994 movel 5d994 <_POSIX_Threads_Default_attributes+0x28>,%a0@+ 4bcec: 20f9 0005 d998 movel 5d998 <_POSIX_Threads_Default_attributes+0x2c>,%a0@+ 4bcf2: 20b9 0005 d99c movel 5d99c <_POSIX_Threads_Default_attributes+0x30>,%a0@
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4bcf8: 41ea 00e8 lea %a2@(232),%a0 4bcfc: 2541 0088 movel %d1,%a2@(136) 4bd00: 7207 moveq #7,%d1 4bd02: c081 andl %d1,%d0
return false;
created->API_Extensions[ THREAD_API_POSIX ] = api;
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
4bd04: 123c 0001 moveb #1,%d1 4bd08: 2541 0010 movel %d1,%a2@(16) 4bd0c: 2541 0014 movel %d1,%a2@(20) 4bd10: 123c 0002 moveb #2,%d1 4bd14: 2541 0018 movel %d1,%a2@(24) 4bd18: 123c 0001 moveb #1,%d1 4bd1c: 2548 00e4 movel %a0,%a2@(228)
* POSIX 1003.1 1996, 18.2.2.2 */ api->cancelation_requested = 0; api->cancelability_state = PTHREAD_CANCEL_ENABLE; api->cancelability_type = PTHREAD_CANCEL_DEFERRED; _Chain_Initialize_empty (&api->Cancellation_Handlers);
4bd20: 41ea 00e4 lea %a2@(228),%a0
return false;
created->API_Extensions[ THREAD_API_POSIX ] = api;
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
4bd24: 2541 0038 movel %d1,%a2@(56) 4bd28: 2541 003c movel %d1,%a2@(60)
api->detachstate = _POSIX_Threads_Default_attributes.detachstate;
4bd2c: 2541 0040 movel %d1,%a2@(64)
api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy;
4bd30: 2541 0084 movel %d1,%a2@(132)
* The check for class == 1 is debug. Should never really happen.
*/
/* XXX use signal constants */
api->signals_pending = 0;
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
4bd34: 123c 0003 moveb #3,%d1
return false;
created->API_Extensions[ THREAD_API_POSIX ] = api;
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
4bd38: 24bc 0000 0001 movel #1,%a2@
* POSIX 1003.1 1996, 18.2.2.2 */ api->cancelation_requested = 0; api->cancelability_state = PTHREAD_CANCEL_ENABLE; api->cancelability_type = PTHREAD_CANCEL_DEFERRED; _Chain_Initialize_empty (&api->Cancellation_Handlers);
4bd3e: 2548 00ec movel %a0,%a2@(236)
_POSIX_Priority_From_core( created->current_priority );
/*
* POSIX 1003.1 1996, 18.2.2.2
*/
api->cancelation_requested = 0;
4bd42: 42aa 00e0 clrl %a2@(224)
api->cancelability_state = PTHREAD_CANCEL_ENABLE;
4bd46: 42aa 00d8 clrl %a2@(216)
api->cancelability_type = PTHREAD_CANCEL_DEFERRED;
4bd4a: 42aa 00dc clrl %a2@(220)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
4bd4e: 42aa 00e8 clrl %a2@(232)
*
* The check for class == 1 is debug. Should never really happen.
*/
/* XXX use signal constants */
api->signals_pending = 0;
4bd52: 42aa 00d4 clrl %a2@(212)
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
4bd56: b280 cmpl %d0,%d1
4bd58: 6744 beqs 4bd9e <_POSIX_Threads_Create_extension+0x116>
#endif
) {
executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
api->signals_blocked = executing_api->signals_blocked;
} else {
api->signals_blocked = 0xffffffff;
4bd5a: 70ff moveq #-1,%d0 4bd5c: 2540 00d0 movel %d0,%a2@(208)
}
_Thread_queue_Initialize(
4bd60: 42a7 clrl %sp@- 4bd62: 4878 1000 pea 1000 <D_MAX_EXP+0x801> 4bd66: 42a7 clrl %sp@- 4bd68: 486a 0044 pea %a2@(68) 4bd6c: 4eb9 0004 8ef4 jsr 48ef4 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_JOIN_AT_EXIT,
0
);
_Watchdog_Initialize(
4bd72: 222b 0008 movel %a3@(8),%d1
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4bd76: 41f9 0004 bdf0 lea 4bdf0 <_POSIX_Threads_Sporadic_budget_TSR>,%a0
_POSIX_Threads_Sporadic_budget_TSR,
created->Object.id,
created
);
return true;
4bd7c: 4fef 0010 lea %sp@(16),%sp 4bd80: 7001 moveq #1,%d0 4bd82: 2548 00c4 movel %a0,%a2@(196)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4bd86: 42aa 00b0 clrl %a2@(176)
the_watchdog->routine = routine; the_watchdog->id = id;
4bd8a: 2541 00c8 movel %d1,%a2@(200)
the_watchdog->user_data = user_data;
4bd8e: 254b 00cc movel %a3,%a2@(204)
}
4bd92: 246e fff8 moveal %fp@(-8),%a2 4bd96: 266e fffc moveal %fp@(-4),%a3 4bd9a: 4e5e unlk %fp 4bd9c: 4e75 rts
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
#if defined(RTEMS_DEBUG)
&& _Objects_Get_class( created->Object.id ) == 1
#endif
) {
executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4bd9e: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0
api->signals_blocked = executing_api->signals_blocked;
4bda4: 2068 010e moveal %a0@(270),%a0 4bda8: 2568 00d0 00d0 movel %a0@(208),%a2@(208)
} else {
api->signals_blocked = 0xffffffff;
}
_Thread_queue_Initialize(
4bdae: 42a7 clrl %sp@- 4bdb0: 4878 1000 pea 1000 <D_MAX_EXP+0x801> 4bdb4: 42a7 clrl %sp@- 4bdb6: 486a 0044 pea %a2@(68) 4bdba: 4eb9 0004 8ef4 jsr 48ef4 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_JOIN_AT_EXIT,
0
);
_Watchdog_Initialize(
4bdc0: 222b 0008 movel %a3@(8),%d1
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4bdc4: 41f9 0004 bdf0 lea 4bdf0 <_POSIX_Threads_Sporadic_budget_TSR>,%a0
_POSIX_Threads_Sporadic_budget_TSR,
created->Object.id,
created
);
return true;
4bdca: 4fef 0010 lea %sp@(16),%sp 4bdce: 2548 00c4 movel %a0,%a2@(196) 4bdd2: 7001 moveq #1,%d0
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4bdd4: 42aa 00b0 clrl %a2@(176)
the_watchdog->routine = routine; the_watchdog->id = id;
4bdd8: 2541 00c8 movel %d1,%a2@(200)
the_watchdog->user_data = user_data;
4bddc: 254b 00cc movel %a3,%a2@(204) 4bde0: 60b0 bras 4bd92 <_POSIX_Threads_Create_extension+0x10a>
}
4bde2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4bde6: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4bdea: 4e5e unlk %fp <== NOT EXECUTED
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
if ( !api )
return false;
4bdec: 4200 clrb %d0 <== NOT EXECUTED
created->Object.id,
created
);
return true;
}
0004bbf6 <_POSIX_Threads_Delete_extension>:
*/
void _POSIX_Threads_Delete_extension(
Thread_Control *executing __attribute__((unused)),
Thread_Control *deleted
)
{
4bbf6: 4e56 ffec linkw %fp,#-20 4bbfa: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ 4bbfe: 266e 000c moveal %fp@(12),%a3 4bc02: 45f9 0004 8ac8 lea 48ac8 <_Thread_queue_Dequeue>,%a2
api = deleted->API_Extensions[ THREAD_API_POSIX ];
/*
* Run the POSIX cancellation handlers
*/
_POSIX_Threads_cancel_run( deleted );
4bc08: 2f0b movel %a3,%sp@-
{
Thread_Control *the_thread;
POSIX_API_Control *api;
void **value_ptr;
api = deleted->API_Extensions[ THREAD_API_POSIX ];
4bc0a: 286b 010e moveal %a3@(270),%a4 4bc0e: 240c movel %a4,%d2 4bc10: 0682 0000 0044 addil #68,%d2
/*
* Run the POSIX cancellation handlers
*/
_POSIX_Threads_cancel_run( deleted );
4bc16: 4eb9 0004 df68 jsr 4df68 <_POSIX_Threads_cancel_run>
/*
* Run all the key destructors
*/
_POSIX_Keys_Run_destructors( deleted );
4bc1c: 2f0b movel %a3,%sp@- 4bc1e: 4eb9 0004 dfd0 jsr 4dfd0 <_POSIX_Keys_Run_destructors>
/*
* Wakeup all the tasks which joined with this one
*/
value_ptr = (void **) deleted->Wait.return_argument;
4bc24: 262b 0028 movel %a3@(40),%d3
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
4bc28: 508f addql #8,%sp 4bc2a: 2f02 movel %d2,%sp@- 4bc2c: 4e92 jsr %a2@ 4bc2e: 588f addql #4,%sp 4bc30: 4a80 tstl %d0
4bc32: 6712 beqs 4bc46 <_POSIX_Threads_Delete_extension+0x50><== ALWAYS TAKEN
*(void **)the_thread->Wait.return_argument = value_ptr;
4bc34: 2240 moveal %d0,%a1 <== NOT EXECUTED 4bc36: 2069 0028 moveal %a1@(40),%a0 <== NOT EXECUTED 4bc3a: 2083 movel %d3,%a0@ <== NOT EXECUTED
/*
* Wakeup all the tasks which joined with this one
*/
value_ptr = (void **) deleted->Wait.return_argument;
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
4bc3c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bc3e: 4e92 jsr %a2@ <== NOT EXECUTED 4bc40: 588f addql #4,%sp <== NOT EXECUTED 4bc42: 4a80 tstl %d0 <== NOT EXECUTED 4bc44: 66ee bnes 4bc34 <_POSIX_Threads_Delete_extension+0x3e><== NOT EXECUTED
*(void **)the_thread->Wait.return_argument = value_ptr;
if ( api->schedpolicy == SCHED_SPORADIC )
4bc46: 103c 0004 moveb #4,%d0 4bc4a: b0ac 0084 cmpl %a4@(132),%d0
4bc4e: 6716 beqs 4bc66 <_POSIX_Threads_Delete_extension+0x70><== NEVER TAKEN
(void) _Watchdog_Remove( &api->Sporadic_timer );
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
4bc50: 42ab 010e clrl %a3@(270)
(void) _Workspace_Free( api );
4bc54: 2d4c 0008 movel %a4,%fp@(8)
}
4bc58: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 4bc5e: 4e5e unlk %fp
if ( api->schedpolicy == SCHED_SPORADIC )
(void) _Watchdog_Remove( &api->Sporadic_timer );
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
(void) _Workspace_Free( api );
4bc60: 4ef9 0004 9bd2 jmp 49bd2 <_Workspace_Free>
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
*(void **)the_thread->Wait.return_argument = value_ptr;
if ( api->schedpolicy == SCHED_SPORADIC )
(void) _Watchdog_Remove( &api->Sporadic_timer );
4bc66: 486c 00a8 pea %a4@(168) <== NOT EXECUTED 4bc6a: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> <== NOT EXECUTED 4bc70: 588f addql #4,%sp <== NOT EXECUTED
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
4bc72: 42ab 010e clrl %a3@(270) <== NOT EXECUTED
(void) _Workspace_Free( api );
4bc76: 2d4c 0008 movel %a4,%fp@(8) <== NOT EXECUTED
}
4bc7a: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4bc80: 4e5e unlk %fp <== NOT EXECUTED
if ( api->schedpolicy == SCHED_SPORADIC )
(void) _Watchdog_Remove( &api->Sporadic_timer );
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
(void) _Workspace_Free( api );
4bc82: 4ef9 0004 9bd2 jmp 49bd2 <_Workspace_Free> <== NOT EXECUTED
0004bbca <_POSIX_Threads_Exitted_extension>:
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
4bbca: 4280 clrl %d0 4bbcc: 7207 moveq #7,%d1
* This method is invoked each time a thread exits.
*/
void _POSIX_Threads_Exitted_extension(
Thread_Control *executing
)
{
4bbce: 4e56 0000 linkw %fp,#0 4bbd2: 206e 0008 moveal %fp@(8),%a0 4bbd6: 1028 0008 moveb %a0@(8),%d0 4bbda: c081 andl %d1,%d0
/* * If the executing thread was not created with the POSIX API, then this * API do not get to define its exit behavior. */ if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
4bbdc: 123c 0003 moveb #3,%d1 4bbe0: b280 cmpl %d0,%d1
4bbe2: 6704 beqs 4bbe8 <_POSIX_Threads_Exitted_extension+0x1e><== NEVER TAKEN
pthread_exit( executing->Wait.return_argument );
}
4bbe4: 4e5e unlk %fp 4bbe6: 4e75 rts
/*
* If the executing thread was not created with the POSIX API, then this
* API do not get to define its exit behavior.
*/
if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
pthread_exit( executing->Wait.return_argument );
4bbe8: 2d68 0028 0008 movel %a0@(40),%fp@(8) <== NOT EXECUTED
}
4bbee: 4e5e unlk %fp <== NOT EXECUTED
/*
* If the executing thread was not created with the POSIX API, then this
* API do not get to define its exit behavior.
*/
if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
pthread_exit( executing->Wait.return_argument );
4bbf0: 4ef9 0004 e394 jmp 4e394 <pthread_exit> <== NOT EXECUTED
00046b04 <_POSIX_Threads_Initialize_user_threads_body>:
*
* Output parameters: NONE
*/
void _POSIX_Threads_Initialize_user_threads_body(void)
{
46b04: 4e56 ff98 linkw %fp,#-104 46b08: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
uint32_t maximum;
posix_initialization_threads_table *user_threads;
pthread_t thread_id;
pthread_attr_t attr;
user_threads = Configuration_POSIX_API.User_initialization_threads_table;
46b0c: 2479 0005 f85e moveal 5f85e <Configuration_POSIX_API+0x34>,%a2
maximum = Configuration_POSIX_API.number_of_initialization_threads;
46b12: 2839 0005 f85a movel 5f85a <Configuration_POSIX_API+0x30>,%d4
if ( !user_threads || maximum == 0 )
46b18: 4a8a tstl %a2
46b1a: 675a beqs 46b76 <_POSIX_Threads_Initialize_user_threads_body+0x72><== NEVER TAKEN
46b1c: 4a84 tstl %d4
46b1e: 6756 beqs 46b76 <_POSIX_Threads_Initialize_user_threads_body+0x72><== NEVER TAKEN
46b20: 240e movel %fp,%d2 46b22: 2a0e movel %fp,%d5 46b24: 4283 clrl %d3 46b26: 0682 ffff ffbc addil #-68,%d2 46b2c: 2c3c 0004 d224 movel #315940,%d6 46b32: 4bf9 0004 d250 lea 4d250 <pthread_attr_setinheritsched>,%a5 46b38: 49f9 0004 d290 lea 4d290 <pthread_attr_setstacksize>,%a4 46b3e: 5985 subql #4,%d5 46b40: 47f9 0004 6750 lea 46750 <pthread_create>,%a3
for ( index=0 ; index < maximum ; index++ ) {
/*
* There is no way for these calls to fail in this situation.
*/
(void) pthread_attr_init( &attr );
46b46: 2f02 movel %d2,%sp@- 46b48: 2046 moveal %d6,%a0 46b4a: 4e90 jsr %a0@
(void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
46b4c: 4878 0002 pea 2 <DOUBLE_FLOAT> 46b50: 2f02 movel %d2,%sp@- 46b52: 4e95 jsr %a5@
(void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
46b54: 2f2a 0004 movel %a2@(4),%sp@- 46b58: 2f02 movel %d2,%sp@- 46b5a: 4e94 jsr %a4@
status = pthread_create(
46b5c: 42a7 clrl %sp@- 46b5e: 2f12 movel %a2@,%sp@- 46b60: 2f02 movel %d2,%sp@- 46b62: 2f05 movel %d5,%sp@- 46b64: 4e93 jsr %a3@
&thread_id,
&attr,
user_threads[ index ].thread_entry,
NULL
);
if ( status )
46b66: 4fef 0024 lea %sp@(36),%sp 46b6a: 4a80 tstl %d0
46b6c: 6612 bnes 46b80 <_POSIX_Threads_Initialize_user_threads_body+0x7c>
*
* Setting the attributes explicitly is critical, since we don't want
* to inherit the idle tasks attributes.
*/
for ( index=0 ; index < maximum ; index++ ) {
46b6e: 5283 addql #1,%d3 46b70: 508a addql #8,%a2 46b72: b684 cmpl %d4,%d3
46b74: 65d0 bcss 46b46 <_POSIX_Threads_Initialize_user_threads_body+0x42><== NEVER TAKEN
NULL
);
if ( status )
_Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
}
}
46b76: 4cee 3c7c ff98 moveml %fp@(-104),%d2-%d6/%a2-%a5 46b7c: 4e5e unlk %fp 46b7e: 4e75 rts
&attr,
user_threads[ index ].thread_entry,
NULL
);
if ( status )
_Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
46b80: 2f00 movel %d0,%sp@- 46b82: 4878 0001 pea 1 <ADD> 46b86: 4878 0002 pea 2 <DOUBLE_FLOAT> 46b8a: 4eb9 0004 8c80 jsr 48c80 <_Internal_error_Occurred>
0004bdf0 <_POSIX_Threads_Sporadic_budget_TSR>:
*/
void _POSIX_Threads_Sporadic_budget_TSR(
Objects_Id id __attribute__((unused)),
void *argument
)
{
4bdf0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4bdf4: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 4bdf8: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
the_thread = argument;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
4bdfc: 49f9 0004 cd54 lea 4cd54 <_Timespec_To_ticks>,%a4 <== NOT EXECUTED
Thread_Control *the_thread;
POSIX_API_Control *api;
the_thread = argument;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4be02: 246b 010e moveal %a3@(270),%a2 <== NOT EXECUTED
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
4be06: 486a 0098 pea %a2@(152) <== NOT EXECUTED 4be0a: 4e94 jsr %a4@ <== NOT EXECUTED
*/
#if 0
printk( "TSR %d %d %d\n", the_thread->resource_count,
the_thread->current_priority, new_priority );
#endif
if ( the_thread->resource_count == 0 ) {
4be0c: 588f addql #4,%sp <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4be0e: 4281 clrl %d1 <== NOT EXECUTED 4be10: 1239 0005 e3e2 moveb 5e3e2 <rtems_maximum_priority>,%d1 <== NOT EXECUTED 4be16: 92aa 0088 subl %a2@(136),%d1 <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
the_thread->cpu_time_budget = ticks;
4be1a: 2740 0076 movel %d0,%a3@(118) <== NOT EXECUTED
new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority );
the_thread->real_priority = new_priority;
4be1e: 2741 0018 movel %d1,%a3@(24) <== NOT EXECUTED
*/
#if 0
printk( "TSR %d %d %d\n", the_thread->resource_count,
the_thread->current_priority, new_priority );
#endif
if ( the_thread->resource_count == 0 ) {
4be22: 4aab 001c tstl %a3@(28) <== NOT EXECUTED 4be26: 6606 bnes 4be2e <_POSIX_Threads_Sporadic_budget_TSR+0x3e><== NOT EXECUTED
/*
* If this would make them less important, then do not change it.
*/
if ( the_thread->current_priority > new_priority ) {
4be28: b2ab 0014 cmpl %a3@(20),%d1 <== NOT EXECUTED 4be2c: 652c bcss 4be5a <_POSIX_Threads_Sporadic_budget_TSR+0x6a><== NOT EXECUTED
#endif
}
}
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
4be2e: 486a 0090 pea %a2@(144) <== NOT EXECUTED 4be32: 4e94 jsr %a4@ <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4be34: 588f addql #4,%sp <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4be36: 2540 00b4 movel %d0,%a2@(180) <== NOT EXECUTED
_Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );
4be3a: 45ea 00a8 lea %a2@(168),%a2 <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4be3e: 203c 0005 fd4e movel #392526,%d0 <== NOT EXECUTED 4be44: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
4be48: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4be4e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 4be52: 4e5e unlk %fp <== NOT EXECUTED 4be54: 4ef9 0004 98ec jmp 498ec <_Watchdog_Insert> <== NOT EXECUTED
if ( the_thread->resource_count == 0 ) {
/*
* If this would make them less important, then do not change it.
*/
if ( the_thread->current_priority > new_priority ) {
_Thread_Change_priority( the_thread, new_priority, true );
4be5a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4be5e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4be60: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4be62: 4eb9 0004 81b4 jsr 481b4 <_Thread_Change_priority> <== NOT EXECUTED 4be68: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#endif
}
}
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
4be6c: 486a 0090 pea %a2@(144) <== NOT EXECUTED 4be70: 4e94 jsr %a4@ <== NOT EXECUTED 4be72: 588f addql #4,%sp <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4be74: 2540 00b4 movel %d0,%a2@(180) <== NOT EXECUTED
_Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );
4be78: 45ea 00a8 lea %a2@(168),%a2 <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4be7c: 203c 0005 fd4e movel #392526,%d0 <== NOT EXECUTED 4be82: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
4be86: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4be8c: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 4be90: 4e5e unlk %fp <== NOT EXECUTED 4be92: 4ef9 0004 98ec jmp 498ec <_Watchdog_Insert> <== NOT EXECUTED
0004be98 <_POSIX_Threads_Sporadic_budget_callout>:
4be98: 4280 clrl %d0 <== NOT EXECUTED
/*
* This will prevent the thread from consuming its entire "budget"
* while at low priority.
*/
the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */
4be9a: 72ff moveq #-1,%d1 <== NOT EXECUTED
* _POSIX_Threads_Sporadic_budget_callout
*/
void _POSIX_Threads_Sporadic_budget_callout(
Thread_Control *the_thread
)
{
4be9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4bea0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4bea4: 1039 0005 e3e2 moveb 5e3e2 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
POSIX_API_Control *api;
uint32_t new_priority;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4beaa: 2268 010e moveal %a0@(270),%a1 <== NOT EXECUTED 4beae: 90a9 008c subl %a1@(140),%d0 <== NOT EXECUTED
/*
* This will prevent the thread from consuming its entire "budget"
* while at low priority.
*/
the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */
4beb2: 2141 0076 movel %d1,%a0@(118) <== NOT EXECUTED
new_priority = _POSIX_Priority_To_core(api->schedparam.sched_ss_low_priority);
the_thread->real_priority = new_priority;
4beb6: 2140 0018 movel %d0,%a0@(24) <== NOT EXECUTED
*/
#if 0
printk( "callout %d %d %d\n", the_thread->resource_count,
the_thread->current_priority, new_priority );
#endif
if ( the_thread->resource_count == 0 ) {
4beba: 4aa8 001c tstl %a0@(28) <== NOT EXECUTED 4bebe: 6606 bnes 4bec6 <_POSIX_Threads_Sporadic_budget_callout+0x2e><== NOT EXECUTED
/*
* Make sure we are actually lowering it. If they have lowered it
* to logically lower than sched_ss_low_priority, then we do not want to
* change it.
*/
if ( the_thread->current_priority < new_priority ) {
4bec0: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 4bec4: 6204 bhis 4beca <_POSIX_Threads_Sporadic_budget_callout+0x32><== NOT EXECUTED
#if 0
printk( "lower priority\n" );
#endif
}
}
}
4bec6: 4e5e unlk %fp <== NOT EXECUTED 4bec8: 4e75 rts <== NOT EXECUTED
* Make sure we are actually lowering it. If they have lowered it
* to logically lower than sched_ss_low_priority, then we do not want to
* change it.
*/
if ( the_thread->current_priority < new_priority ) {
_Thread_Change_priority( the_thread, new_priority, true );
4beca: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4bece: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4bed0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4bed2: 4eb9 0004 81b4 jsr 481b4 <_Thread_Change_priority> <== NOT EXECUTED 4bed8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#if 0
printk( "lower priority\n" );
#endif
}
}
}
4bedc: 4e5e unlk %fp <== NOT EXECUTED
0004df68 <_POSIX_Threads_cancel_run>:
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
4df68: 7001 moveq #1,%d0
#include <rtems/posix/threadsup.h>
void _POSIX_Threads_cancel_run(
Thread_Control *the_thread
)
{
4df6a: 4e56 ffec linkw %fp,#-20 4df6e: 206e 0008 moveal %fp@(8),%a0 4df72: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
POSIX_Cancel_Handler_control *handler;
Chain_Control *handler_stack;
POSIX_API_Control *thread_support;
ISR_Level level;
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
4df76: 2668 010e moveal %a0@(270),%a3
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4df7a: 45eb 00e8 lea %a3@(232),%a2
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
4df7e: 2740 00d8 movel %d0,%a3@(216)
while ( !_Chain_Is_empty( handler_stack ) ) {
4df82: b5eb 00e4 cmpal %a3@(228),%a2
4df86: 673c beqs 4dfc4 <_POSIX_Threads_cancel_run+0x5c> <== ALWAYS TAKEN
4df88: 49f9 0004 9bd2 lea 49bd2 <_Workspace_Free>,%a4 <== NOT EXECUTED
_ISR_Disable( level );
4df8e: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED 4df94: 2002 movel %d2,%d0 <== NOT EXECUTED 4df96: 40c1 movew %sr,%d1 <== NOT EXECUTED 4df98: 8081 orl %d1,%d0 <== NOT EXECUTED 4df9a: 46c0 movew %d0,%sr <== NOT EXECUTED
handler = (POSIX_Cancel_Handler_control *)
4df9c: 2a6a 0004 moveal %a2@(4),%a5 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4dfa0: 2255 moveal %a5@,%a1 <== NOT EXECUTED
previous = the_node->previous;
4dfa2: 206d 0004 moveal %a5@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4dfa6: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4dfaa: 2089 movel %a1,%a0@ <== NOT EXECUTED
_Chain_Tail( handler_stack )->previous;
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
4dfac: 46c1 movew %d1,%sr <== NOT EXECUTED
(*handler->routine)( handler->arg );
4dfae: 2f2d 000c movel %a5@(12),%sp@- <== NOT EXECUTED 4dfb2: 206d 0008 moveal %a5@(8),%a0 <== NOT EXECUTED 4dfb6: 4e90 jsr %a0@ <== NOT EXECUTED
_Workspace_Free( handler );
4dfb8: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4dfba: 4e94 jsr %a4@ <== NOT EXECUTED
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
while ( !_Chain_Is_empty( handler_stack ) ) {
4dfbc: 508f addql #8,%sp <== NOT EXECUTED 4dfbe: b5eb 00e4 cmpal %a3@(228),%a2 <== NOT EXECUTED 4dfc2: 66d0 bnes 4df94 <_POSIX_Threads_cancel_run+0x2c> <== NOT EXECUTED
(*handler->routine)( handler->arg );
_Workspace_Free( handler );
}
}
4dfc4: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 4dfca: 4e5e unlk %fp
...
0004c988 <_POSIX_Timer_Insert_helper>:
Watchdog_Interval ticks,
Objects_Id id,
Watchdog_Service_routine_entry TSR,
void *arg
)
{
4c988: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c98c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c98e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4c992: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
(void) _Watchdog_Remove( timer );
4c994: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c996: 4eb9 0004 a328 jsr 4a328 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
4c99c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4c9a2: 40c2 movew %sr,%d2 <== NOT EXECUTED 4c9a4: 8082 orl %d2,%d0 <== NOT EXECUTED 4c9a6: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( timer->state != WATCHDOG_INACTIVE ) {
4c9a8: 588f addql #4,%sp <== NOT EXECUTED 4c9aa: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4c9ae: 6710 beqs 4c9c0 <_POSIX_Timer_Insert_helper+0x38><== NOT EXECUTED
_ISR_Enable( level );
4c9b0: 46c2 movew %d2,%sr <== NOT EXECUTED
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
return true;
}
4c9b2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c9b6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c9ba: 4e5e unlk %fp <== NOT EXECUTED
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( timer->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return false;
4c9bc: 4200 clrb %d0 <== NOT EXECUTED
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
return true;
}
4c9be: 4e75 rts <== NOT EXECUTED 4c9c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c9c2: 4879 0006 0aae pea 60aae <_Watchdog_Ticks_chain> <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4c9c8: 256e 0014 001c movel %fp@(20),%a2@(28) <== NOT EXECUTED
the_watchdog->id = id;
4c9ce: 256e 0010 0020 movel %fp@(16),%a2@(32) <== NOT EXECUTED
the_watchdog->user_data = user_data;
4c9d4: 256e 0018 0024 movel %fp@(24),%a2@(36) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4c9da: 256e 000c 000c movel %fp@(12),%a2@(12) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4c9e0: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4c9e4: 4eb9 0004 a1e0 jsr 4a1e0 <_Watchdog_Insert> <== NOT EXECUTED
* OK. Now we now the timer was not rescheduled by an interrupt
* so we can atomically initialize it as in use.
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
4c9ea: 46c2 movew %d2,%sr <== NOT EXECUTED
return true;
4c9ec: 508f addql #8,%sp <== NOT EXECUTED
}
4c9ee: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c9f2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c9f6: 4e5e unlk %fp <== NOT EXECUTED
* so we can atomically initialize it as in use.
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
return true;
4c9f8: 7001 moveq #1,%d0 <== NOT EXECUTED
}
00046420 <_POSIX_Timer_TSR>:
* This is the operation that is run when a timer expires
*/
void _POSIX_Timer_TSR(
Objects_Id timer __attribute__((unused)),
void *data)
{
46420: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46424: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46426: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
bool activated;
ptimer = (POSIX_Timer_Control *)data;
/* Increment the number of expirations. */
ptimer->overrun = ptimer->overrun + 1;
4642a: 52aa 0066 addql #1,%a2@(102) <== NOT EXECUTED
/* The timer must be reprogrammed */
if ( ( ptimer->timer_data.it_interval.tv_sec != 0 ) ||
4642e: 4aaa 0052 tstl %a2@(82) <== NOT EXECUTED 46432: 6606 bnes 4643a <_POSIX_Timer_TSR+0x1a> <== NOT EXECUTED 46434: 4aaa 0056 tstl %a2@(86) <== NOT EXECUTED 46438: 672a beqs 46464 <_POSIX_Timer_TSR+0x44> <== NOT EXECUTED
( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) {
activated = _POSIX_Timer_Insert_helper(
4643a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4643c: 4879 0004 6420 pea 46420 <_POSIX_Timer_TSR> <== NOT EXECUTED 46442: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 46446: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED 4644a: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4644e: 4eb9 0004 c988 jsr 4c988 <_POSIX_Timer_Insert_helper> <== NOT EXECUTED
ptimer->ticks,
ptimer->Object.id,
_POSIX_Timer_TSR,
ptimer
);
if ( !activated )
46454: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46458: 4a00 tstb %d0 <== NOT EXECUTED 4645a: 662a bnes 46486 <_POSIX_Timer_TSR+0x66> <== NOT EXECUTED
/* After the signal handler returns, the count of expirations of the
* timer must be set to 0.
*/
ptimer->overrun = 0;
}
4645c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46460: 4e5e unlk %fp <== NOT EXECUTED 46462: 4e75 rts <== NOT EXECUTED
/* The state really did not change but just to be safe */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
} else {
/* Indicates that the timer is stopped */
ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;
46464: 7004 moveq #4,%d0 <== NOT EXECUTED 46466: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
/*
* The sending of the signal to the process running the handling function
* specified for that signal is simulated
*/
if ( pthread_kill ( ptimer->thread_id, ptimer->inf.sigev_signo ) ) {
4646a: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED 4646e: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED 46472: 4eb9 0004 c4a8 jsr 4c4a8 <pthread_kill> <== NOT EXECUTED
}
/* After the signal handler returns, the count of expirations of the
* timer must be set to 0.
*/
ptimer->overrun = 0;
46478: 508f addql #8,%sp <== NOT EXECUTED 4647a: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED
}
4647e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46482: 4e5e unlk %fp <== NOT EXECUTED 46484: 4e75 rts <== NOT EXECUTED
);
if ( !activated )
return;
/* Store the time when the timer was started again */
_TOD_Get( &ptimer->time );
46486: 486a 006a pea %a2@(106) <== NOT EXECUTED 4648a: 4eb9 0004 7c10 jsr 47c10 <_TOD_Get> <== NOT EXECUTED
/* The state really did not change but just to be safe */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
46490: 588f addql #4,%sp <== NOT EXECUTED 46492: 7003 moveq #3,%d0 <== NOT EXECUTED 46494: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
/*
* The sending of the signal to the process running the handling function
* specified for that signal is simulated
*/
if ( pthread_kill ( ptimer->thread_id, ptimer->inf.sigev_signo ) ) {
46498: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED 4649c: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED 464a0: 4eb9 0004 c4a8 jsr 4c4a8 <pthread_kill> <== NOT EXECUTED
}
/* After the signal handler returns, the count of expirations of the
* timer must be set to 0.
*/
ptimer->overrun = 0;
464a6: 508f addql #8,%sp <== NOT EXECUTED 464a8: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED 464ac: 60d0 bras 4647e <_POSIX_Timer_TSR+0x5e> <== NOT EXECUTED
...
0004b7f4 <_POSIX_signals_Abnormal_termination_handler>:
sigset_t _POSIX_signals_Pending;
void _POSIX_signals_Abnormal_termination_handler(
int signo __attribute__((unused)) )
{
4b7f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
exit( 1 );
4b7f8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4b7fc: 4eb9 0004 e91c jsr 4e91c <exit> <== NOT EXECUTED
00048410 <_POSIX_signals_Alarm_TSR>:
void _POSIX_signals_Alarm_TSR(
Objects_Id id __attribute__((unused)),
void *argument __attribute__((unused))
)
{
48410: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
int status;
status = kill( getpid(), SIGALRM );
48414: 4eb9 0004 544c jsr 4544c <getpid> <== NOT EXECUTED 4841a: 720e moveq #14,%d1 <== NOT EXECUTED 4841c: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 48420: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
/* XXX can't print from an ISR, should this be fatal? */ }
48424: 4e5e unlk %fp <== NOT EXECUTED
void *argument __attribute__((unused))
)
{
int status;
status = kill( getpid(), SIGALRM );
48426: 4ef9 0004 854c jmp 4854c <kill> <== NOT EXECUTED
0004e058 <_POSIX_signals_Check_signal>:
{
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4e058: 4280 clrl %d0 <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e05a: 4e56 ff98 linkw %fp,#-104 <== NOT EXECUTED
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4e05e: 102e 0013 moveb %fp@(19),%d0 <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e062: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4e066: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4e06a: 260e movel %fp,%d3 <== NOT EXECUTED 4e06c: 0683 ffff fff4 addil #-12,%d3 <== NOT EXECUTED 4e072: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e074: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4e078: 2f03 movel %d3,%sp@- <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e07a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4e07e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e080: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e082: 4eb9 0004 e1fc jsr 4e1fc <_POSIX_signals_Clear_signals> <== NOT EXECUTED 4e088: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4e08c: 4a00 tstb %d0 <== NOT EXECUTED 4e08e: 6700 015e beqw 4e1ee <_POSIX_signals_Check_signal+0x196><== NOT EXECUTED
#endif
/*
* Just to prevent sending a signal which is currently being ignored.
*/
if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN )
4e092: 2202 movel %d2,%d1 <== NOT EXECUTED 4e094: 2002 movel %d2,%d0 <== NOT EXECUTED 4e096: e589 lsll #2,%d1 <== NOT EXECUTED 4e098: e988 lsll #4,%d0 <== NOT EXECUTED 4e09a: 9081 subl %d1,%d0 <== NOT EXECUTED 4e09c: 2240 moveal %d0,%a1 <== NOT EXECUTED 4e09e: d3fc 0006 012a addal #393514,%a1 <== NOT EXECUTED 4e0a4: 7201 moveq #1,%d1 <== NOT EXECUTED 4e0a6: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED 4e0aa: 2d48 ffc8 movel %a0,%fp@(-56) <== NOT EXECUTED 4e0ae: b288 cmpl %a0,%d1 <== NOT EXECUTED 4e0b0: 6700 013c beqw 4e1ee <_POSIX_signals_Check_signal+0x196><== NOT EXECUTED
/* * We have to save the blocking information of the current wait queue * because the signal handler may subsequently go on and put the thread * on a wait queue, for its own purposes. */ memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,
4e0b4: 2e0e movel %fp,%d7 <== NOT EXECUTED 4e0b6: 0687 ffff ffd0 addil #-48,%d7 <== NOT EXECUTED 4e0bc: 2647 moveal %d7,%a3 <== NOT EXECUTED 4e0be: 2c0e movel %fp,%d6 <== NOT EXECUTED 4e0c0: 0686 ffff ffd4 addil #-44,%d6 <== NOT EXECUTED 4e0c6: 2a0e movel %fp,%d5 <== NOT EXECUTED 4e0c8: 0685 ffff ffd8 addil #-40,%d5 <== NOT EXECUTED 4e0ce: 280e movel %fp,%d4 <== NOT EXECUTED 4e0d0: 0684 ffff ffdc addil #-36,%d4 <== NOT EXECUTED 4e0d6: 4bee ffe0 lea %fp@(-32),%a5 <== NOT EXECUTED 4e0da: 49ee ffe4 lea %fp@(-28),%a4 <== NOT EXECUTED 4e0de: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e0e4: 26a8 0024 movel %a0@(36),%a3@ <== NOT EXECUTED 4e0e8: 2646 moveal %d6,%a3 <== NOT EXECUTED 4e0ea: 26a8 0028 movel %a0@(40),%a3@ <== NOT EXECUTED 4e0ee: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e0f0: 26a8 002c movel %a0@(44),%a3@ <== NOT EXECUTED 4e0f4: 2644 moveal %d4,%a3 <== NOT EXECUTED
return false;
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
4e0f6: 222a 00d0 movel %a2@(208),%d1 <== NOT EXECUTED
/* * We have to save the blocking information of the current wait queue * because the signal handler may subsequently go on and put the thread * on a wait queue, for its own purposes. */ memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,
4e0fa: 2d68 0020 ffcc movel %a0@(32),%fp@(-52) <== NOT EXECUTED 4e100: 26a8 0030 movel %a0@(48),%a3@ <== NOT EXECUTED 4e104: 2aa8 0034 movel %a0@(52),%a5@ <== NOT EXECUTED 4e108: 28a8 0038 movel %a0@(56),%a4@ <== NOT EXECUTED 4e10c: 2d68 003c ffe8 movel %a0@(60),%fp@(-24) <== NOT EXECUTED 4e112: 2d68 0040 ffec movel %a0@(64),%fp@(-20) <== NOT EXECUTED 4e118: 2d68 0044 fff0 movel %a0@(68),%fp@(-16) <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Here, the signal handler function executes
*/
switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {
4e11e: 41f9 0006 012a lea 6012a <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
return false;
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
4e124: 2d41 ffc4 movel %d1,%fp@(-60) <== NOT EXECUTED
api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;
4e128: 82a9 0004 orl %a1@(4),%d1 <== NOT EXECUTED 4e12c: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Here, the signal handler function executes
*/
switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {
4e130: 7202 moveq #2,%d1 <== NOT EXECUTED 4e132: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED 4e136: 675c beqs 4e194 <_POSIX_signals_Check_signal+0x13c><== NOT EXECUTED
&siginfo_struct,
NULL /* context is undefined per 1003.1b-1993, p. 66 */
);
break;
default:
(*_POSIX_signals_Vectors[ signo ].sa_handler)( signo );
4e138: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e13a: 226e ffc8 moveal %fp@(-56),%a1 <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e13e: 2647 moveal %d7,%a3 <== NOT EXECUTED
&siginfo_struct,
NULL /* context is undefined per 1003.1b-1993, p. 66 */
);
break;
default:
(*_POSIX_signals_Vectors[ signo ].sa_handler)( signo );
4e140: 4e91 jsr %a1@ <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e142: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e148: 2246 moveal %d6,%a1 <== NOT EXECUTED
NULL /* context is undefined per 1003.1b-1993, p. 66 */
);
break;
default:
(*_POSIX_signals_Vectors[ signo ].sa_handler)( signo );
break;
4e14a: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e14c: 216e ffcc 0020 movel %fp@(-52),%a0@(32) <== NOT EXECUTED 4e152: 2153 0024 movel %a3@,%a0@(36) <== NOT EXECUTED 4e156: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e158: 2151 0028 movel %a1@,%a0@(40) <== NOT EXECUTED 4e15c: 2244 moveal %d4,%a1 <== NOT EXECUTED 4e15e: 2153 002c movel %a3@,%a0@(44) <== NOT EXECUTED 4e162: 2151 0030 movel %a1@,%a0@(48) <== NOT EXECUTED 4e166: 2155 0034 movel %a5@,%a0@(52) <== NOT EXECUTED 4e16a: 2154 0038 movel %a4@,%a0@(56) <== NOT EXECUTED 4e16e: 216e ffe8 003c movel %fp@(-24),%a0@(60) <== NOT EXECUTED 4e174: 216e ffec 0040 movel %fp@(-20),%a0@(64) <== NOT EXECUTED 4e17a: 216e fff0 0044 movel %fp@(-16),%a0@(68) <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
4e180: 222e ffc4 movel %fp@(-60),%d1 <== NOT EXECUTED
return true;
4e184: 7001 moveq #1,%d0 <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
4e186: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED
return true;
}
4e18a: 4cee 3cfc ff98 moveml %fp@(-104),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4e190: 4e5e unlk %fp <== NOT EXECUTED 4e192: 4e75 rts <== NOT EXECUTED
/*
* Here, the signal handler function executes
*/
switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {
case SA_SIGINFO:
(*_POSIX_signals_Vectors[ signo ].sa_sigaction)(
4e194: 42a7 clrl %sp@- <== NOT EXECUTED 4e196: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e19a: 2647 moveal %d7,%a3 <== NOT EXECUTED
/*
* Here, the signal handler function executes
*/
switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {
case SA_SIGINFO:
(*_POSIX_signals_Vectors[ signo ].sa_sigaction)(
4e19c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e19e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e1a0: 4e90 jsr %a0@ <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e1a2: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e1a8: 2246 moveal %d6,%a1 <== NOT EXECUTED
(*_POSIX_signals_Vectors[ signo ].sa_sigaction)(
signo,
&siginfo_struct,
NULL /* context is undefined per 1003.1b-1993, p. 66 */
);
break;
4e1aa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e1ae: 216e ffcc 0020 movel %fp@(-52),%a0@(32) <== NOT EXECUTED 4e1b4: 2153 0024 movel %a3@,%a0@(36) <== NOT EXECUTED 4e1b8: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e1ba: 2151 0028 movel %a1@,%a0@(40) <== NOT EXECUTED 4e1be: 2244 moveal %d4,%a1 <== NOT EXECUTED 4e1c0: 2153 002c movel %a3@,%a0@(44) <== NOT EXECUTED 4e1c4: 2151 0030 movel %a1@,%a0@(48) <== NOT EXECUTED 4e1c8: 2155 0034 movel %a5@,%a0@(52) <== NOT EXECUTED 4e1cc: 2154 0038 movel %a4@,%a0@(56) <== NOT EXECUTED 4e1d0: 216e ffe8 003c movel %fp@(-24),%a0@(60) <== NOT EXECUTED 4e1d6: 216e ffec 0040 movel %fp@(-20),%a0@(64) <== NOT EXECUTED 4e1dc: 216e fff0 0044 movel %fp@(-16),%a0@(68) <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
4e1e2: 222e ffc4 movel %fp@(-60),%d1 <== NOT EXECUTED 4e1e6: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED
return true;
4e1ea: 7001 moveq #1,%d0 <== NOT EXECUTED 4e1ec: 609c bras 4e18a <_POSIX_signals_Check_signal+0x132><== NOT EXECUTED
}
4e1ee: 4cee 3cfc ff98 moveml %fp@(-104),%d2-%d7/%a2-%a5 <== NOT EXECUTED
/*
* Just to prevent sending a signal which is currently being ignored.
*/
if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN )
return false;
4e1f4: 4200 clrb %d0 <== NOT EXECUTED
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
return true;
}
4e1f6: 4e5e unlk %fp <== NOT EXECUTED
...
0004e874 <_POSIX_signals_Clear_process_signals>:
clear_signal = true;
mask = signo_to_mask( signo );
ISR_Level level;
_ISR_Disable( level );
4e874: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _POSIX_signals_Clear_process_signals(
int signo
)
{
4e87a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e87e: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4e882: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e884: 2f02 movel %d2,%sp@- <== NOT EXECUTED
clear_signal = true;
mask = signo_to_mask( signo );
ISR_Level level;
_ISR_Disable( level );
4e886: 40c2 movew %sr,%d2 <== NOT EXECUTED 4e888: 8082 orl %d2,%d0 <== NOT EXECUTED 4e88a: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
4e88c: 2601 movel %d1,%d3 <== NOT EXECUTED 4e88e: 2001 movel %d1,%d0 <== NOT EXECUTED 4e890: 41f9 0006 012a lea 6012a <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4e896: e58b lsll #2,%d3 <== NOT EXECUTED 4e898: e988 lsll #4,%d0 <== NOT EXECUTED 4e89a: 9083 subl %d3,%d0 <== NOT EXECUTED 4e89c: 7602 moveq #2,%d3 <== NOT EXECUTED 4e89e: b6b0 0800 cmpl %a0@(00000000,%d0:l),%d3 <== NOT EXECUTED 4e8a2: 6718 beqs 4e8bc <_POSIX_signals_Clear_process_signals+0x48><== NOT EXECUTED 4e8a4: 5381 subql #1,%d1 <== NOT EXECUTED 4e8a6: 7001 moveq #1,%d0 <== NOT EXECUTED 4e8a8: e3a8 lsll %d1,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )
clear_signal = false;
}
if ( clear_signal ) {
_POSIX_signals_Pending &= ~mask;
4e8aa: 4680 notl %d0 <== NOT EXECUTED 4e8ac: c1b9 0006 031e andl %d0,6031e <_POSIX_signals_Pending> <== NOT EXECUTED
}
_ISR_Enable( level );
4e8b2: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4e8b4: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e8b6: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e8b8: 4e5e unlk %fp <== NOT EXECUTED 4e8ba: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4e8bc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4e8be: d1fc 0006 0326 addal #394022,%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )
4e8c4: 43f9 0006 0322 lea 60322 <_POSIX_signals_Siginfo>,%a1 <== NOT EXECUTED 4e8ca: b1f1 0800 cmpal %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED 4e8ce: 67d4 beqs 4e8a4 <_POSIX_signals_Clear_process_signals+0x30><== NOT EXECUTED
clear_signal = false;
}
if ( clear_signal ) {
_POSIX_signals_Pending &= ~mask;
}
_ISR_Enable( level );
4e8d0: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4e8d2: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e8d4: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e8d6: 4e5e unlk %fp <== NOT EXECUTED
...
0004e1fc <_POSIX_signals_Clear_signals>:
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
4e1fc: 7001 moveq #1,%d0 <== NOT EXECUTED
int signo,
siginfo_t *info,
bool is_global,
bool check_blocked
)
{
4e1fe: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4e202: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4e206: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4e20a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4e20e: 2202 movel %d2,%d1 <== NOT EXECUTED 4e210: 5381 subql #1,%d1 <== NOT EXECUTED 4e212: 1a2e 0017 moveb %fp@(23),%d5 <== NOT EXECUTED 4e216: e3a8 lsll %d1,%d0 <== NOT EXECUTED
/* set blocked signals based on if checking for them, SIGNAL_ALL_MASK
* insures that no signals are blocked and all are checked.
*/
if ( check_blocked )
4e218: 4a2e 001b tstb %fp@(27) <== NOT EXECUTED 4e21c: 6752 beqs 4e270 <_POSIX_signals_Clear_signals+0x74><== NOT EXECUTED
signals_blocked = ~api->signals_blocked;
4e21e: 2828 00d0 movel %a0@(208),%d4 <== NOT EXECUTED
signals_blocked = SIGNAL_ALL_MASK;
/* XXX is this right for siginfo type signals? */
/* XXX are we sure they can be cleared the same way? */
_ISR_Disable( level );
4e222: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
/* set blocked signals based on if checking for them, SIGNAL_ALL_MASK
* insures that no signals are blocked and all are checked.
*/
if ( check_blocked )
signals_blocked = ~api->signals_blocked;
4e228: 4684 notl %d4 <== NOT EXECUTED
signals_blocked = SIGNAL_ALL_MASK;
/* XXX is this right for siginfo type signals? */
/* XXX are we sure they can be cleared the same way? */
_ISR_Disable( level );
4e22a: 40c3 movew %sr,%d3 <== NOT EXECUTED 4e22c: 8283 orl %d3,%d1 <== NOT EXECUTED 4e22e: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( is_global ) {
4e230: 4a05 tstb %d5 <== NOT EXECUTED 4e232: 674e beqs 4e282 <_POSIX_signals_Clear_signals+0x86><== NOT EXECUTED
if ( mask & (_POSIX_signals_Pending & signals_blocked) ) {
4e234: c0b9 0006 031e andl 6031e <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 4e23a: c084 andl %d4,%d0 <== NOT EXECUTED 4e23c: 6768 beqs 4e2a6 <_POSIX_signals_Clear_signals+0xaa><== NOT EXECUTED
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
4e23e: 2202 movel %d2,%d1 <== NOT EXECUTED 4e240: 2002 movel %d2,%d0 <== NOT EXECUTED 4e242: 47f9 0004 e874 lea 4e874 <_POSIX_signals_Clear_process_signals>,%a3<== NOT EXECUTED 4e248: 41f9 0006 012a lea 6012a <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4e24e: e589 lsll #2,%d1 <== NOT EXECUTED 4e250: e988 lsll #4,%d0 <== NOT EXECUTED 4e252: 9081 subl %d1,%d0 <== NOT EXECUTED 4e254: 7202 moveq #2,%d1 <== NOT EXECUTED 4e256: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED 4e25a: 6758 beqs 4e2b4 <_POSIX_signals_Clear_signals+0xb8><== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e25c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e25e: 4e93 jsr %a3@ <== NOT EXECUTED 4e260: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e262: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( mask & (api->signals_pending & signals_blocked) ) {
api->signals_pending &= ~mask;
do_callout = true;
}
}
_ISR_Enable( level );
4e264: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout; }
4e266: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e26c: 4e5e unlk %fp <== NOT EXECUTED 4e26e: 4e75 rts <== NOT EXECUTED
*/
if ( check_blocked )
signals_blocked = ~api->signals_blocked;
else
signals_blocked = SIGNAL_ALL_MASK;
4e270: 78ff moveq #-1,%d4 <== NOT EXECUTED
/* XXX is this right for siginfo type signals? */
/* XXX are we sure they can be cleared the same way? */
_ISR_Disable( level );
4e272: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4e278: 40c3 movew %sr,%d3 <== NOT EXECUTED 4e27a: 8283 orl %d3,%d1 <== NOT EXECUTED 4e27c: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( is_global ) {
4e27e: 4a05 tstb %d5 <== NOT EXECUTED 4e280: 66b2 bnes 4e234 <_POSIX_signals_Clear_signals+0x38><== NOT EXECUTED
}
_POSIX_signals_Clear_process_signals( signo );
do_callout = true;
}
} else {
if ( mask & (api->signals_pending & signals_blocked) ) {
4e282: 2428 00d4 movel %a0@(212),%d2 <== NOT EXECUTED 4e286: 2200 movel %d0,%d1 <== NOT EXECUTED 4e288: c282 andl %d2,%d1 <== NOT EXECUTED 4e28a: c284 andl %d4,%d1 <== NOT EXECUTED 4e28c: 6718 beqs 4e2a6 <_POSIX_signals_Clear_signals+0xaa><== NOT EXECUTED
api->signals_pending &= ~mask;
4e28e: 2200 movel %d0,%d1 <== NOT EXECUTED 4e290: 4681 notl %d1 <== NOT EXECUTED 4e292: c282 andl %d2,%d1 <== NOT EXECUTED
do_callout = true;
4e294: 7001 moveq #1,%d0 <== NOT EXECUTED
_POSIX_signals_Clear_process_signals( signo );
do_callout = true;
}
} else {
if ( mask & (api->signals_pending & signals_blocked) ) {
api->signals_pending &= ~mask;
4e296: 2141 00d4 movel %d1,%a0@(212) <== NOT EXECUTED
do_callout = true;
}
}
_ISR_Enable( level );
4e29a: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout; }
4e29c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e2a2: 4e5e unlk %fp <== NOT EXECUTED 4e2a4: 4e75 rts <== NOT EXECUTED
bool do_callout;
POSIX_signals_Siginfo_node *psiginfo;
mask = signo_to_mask( signo );
do_callout = false;
4e2a6: 4200 clrb %d0 <== NOT EXECUTED
if ( mask & (api->signals_pending & signals_blocked) ) {
api->signals_pending &= ~mask;
do_callout = true;
}
}
_ISR_Enable( level );
4e2a8: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout; }
4e2aa: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e2b0: 4e5e unlk %fp <== NOT EXECUTED 4e2b2: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4e2b4: 41f9 0006 0322 lea 60322 <_POSIX_signals_Siginfo>,%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4e2ba: 2200 movel %d0,%d1 <== NOT EXECUTED 4e2bc: 0681 0006 0326 addil #394022,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4e2c2: 2470 0800 moveal %a0@(00000000,%d0:l),%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4e2c6: b28a cmpl %a2,%d1 <== NOT EXECUTED 4e2c8: 6746 beqs 4e310 <_POSIX_signals_Clear_signals+0x114><== NOT EXECUTED
{
Chain_Node *return_node;
Chain_Node *new_first;
return_node = the_chain->first;
new_first = return_node->next;
4e2ca: 2252 moveal %a2@,%a1 <== NOT EXECUTED
the_chain->first = new_first;
4e2cc: 2189 0800 movel %a1,%a0@(00000000,%d0:l) <== NOT EXECUTED
_ISR_Disable( level );
if ( is_global ) {
if ( mask & (_POSIX_signals_Pending & signals_blocked) ) {
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] );
4e2d0: d088 addl %a0,%d0 <== NOT EXECUTED 4e2d2: 2340 0004 movel %d0,%a1@(4) <== NOT EXECUTED
_POSIX_signals_Clear_process_signals( signo );
4e2d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e2d8: 4e93 jsr %a3@ <== NOT EXECUTED
* It may be impossible to get here with an empty chain
* BUT until that is proven we need to be defensive and
* protect against it.
*/
if ( psiginfo ) {
*info = psiginfo->Info;
4e2da: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
the_chain->last = the_node;
old_last_node->next = the_node;
the_node->previous = old_last_node;
4e2de: 588f addql #4,%sp <== NOT EXECUTED 4e2e0: 20ea 0008 movel %a2@(8),%a0@+ <== NOT EXECUTED 4e2e4: 20ea 000c movel %a2@(12),%a0@+ <== NOT EXECUTED 4e2e8: 20aa 0010 movel %a2@(16),%a0@ <== NOT EXECUTED
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
4e2ec: 2079 0006 02b2 moveal 602b2 <_POSIX_signals_Inactive_siginfo+0x8>,%a0<== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
4e2f2: 24bc 0006 02ae movel #393902,%a2@ <== NOT EXECUTED
old_last_node = the_chain->last; the_chain->last = the_node;
4e2f8: 23ca 0006 02b2 movel %a2,602b2 <_POSIX_signals_Inactive_siginfo+0x8><== NOT EXECUTED
old_last_node->next = the_node;
4e2fe: 208a movel %a2,%a0@ <== NOT EXECUTED
the_node->previous = old_last_node;
4e300: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e304: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e306: 4e93 jsr %a3@ <== NOT EXECUTED 4e308: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e30a: 7001 moveq #1,%d0 <== NOT EXECUTED 4e30c: 6000 ff56 braw 4e264 <_POSIX_signals_Clear_signals+0x68><== NOT EXECUTED
if ( is_global ) {
if ( mask & (_POSIX_signals_Pending & signals_blocked) ) {
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] );
_POSIX_signals_Clear_process_signals( signo );
4e310: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e312: 4e93 jsr %a3@ <== NOT EXECUTED 4e314: 588f addql #4,%sp <== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e316: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e318: 4e93 jsr %a3@ <== NOT EXECUTED 4e31a: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e31c: 7001 moveq #1,%d0 <== NOT EXECUTED 4e31e: 6000 ff44 braw 4e264 <_POSIX_signals_Clear_signals+0x68><== NOT EXECUTED
...
000471f8 <_POSIX_signals_Get_lowest>:
sigset_t set
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
471f8: 701b moveq #27,%d0 <== NOT EXECUTED
#include <rtems/score/isr.h>
int _POSIX_signals_Get_lowest(
sigset_t set
)
{
471fa: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 471fe: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 47202: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 47206: 7601 moveq #1,%d3 <== NOT EXECUTED
#include <rtems/posix/psignal.h>
#include <rtems/seterr.h>
#include <rtems/posix/time.h>
#include <rtems/score/isr.h>
int _POSIX_signals_Get_lowest(
47208: 2200 movel %d0,%d1 <== NOT EXECUTED 4720a: 5381 subql #1,%d1 <== NOT EXECUTED 4720c: 2803 movel %d3,%d4 <== NOT EXECUTED 4720e: e3ac lsll %d1,%d4 <== NOT EXECUTED 47210: 2204 movel %d4,%d1 <== NOT EXECUTED
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
if ( set & signo_to_mask( signo ) ) {
47212: c282 andl %d2,%d1 <== NOT EXECUTED 47214: 6626 bnes 4723c <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED
sigset_t set
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
47216: 5280 addql #1,%d0 <== NOT EXECUTED 47218: 123c 0020 moveb #32,%d1 <== NOT EXECUTED 4721c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4721e: 66e8 bnes 47208 <_POSIX_signals_Get_lowest+0x10> <== NOT EXECUTED 47220: 7001 moveq #1,%d0 <== NOT EXECUTED 47222: 7601 moveq #1,%d3 <== NOT EXECUTED
#include <rtems/posix/psignal.h>
#include <rtems/seterr.h>
#include <rtems/posix/time.h>
#include <rtems/score/isr.h>
int _POSIX_signals_Get_lowest(
47224: 2200 movel %d0,%d1 <== NOT EXECUTED 47226: 5381 subql #1,%d1 <== NOT EXECUTED 47228: 2803 movel %d3,%d4 <== NOT EXECUTED 4722a: e3ac lsll %d1,%d4 <== NOT EXECUTED 4722c: 2204 movel %d4,%d1 <== NOT EXECUTED
#if (SIGHUP != 1)
#error "Assumption that SIGHUP==1 violated!!"
#endif
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
if ( set & signo_to_mask( signo ) ) {
4722e: c282 andl %d2,%d1 <== NOT EXECUTED 47230: 660a bnes 4723c <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED
*/
#if (SIGHUP != 1)
#error "Assumption that SIGHUP==1 violated!!"
#endif
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
47232: 5280 addql #1,%d0 <== NOT EXECUTED 47234: 123c 001b moveb #27,%d1 <== NOT EXECUTED 47238: b280 cmpl %d0,%d1 <== NOT EXECUTED 4723a: 66e8 bnes 47224 <_POSIX_signals_Get_lowest+0x2c> <== NOT EXECUTED
* a return 0. This routine will NOT be called unless a signal * is pending in the set passed in. */ found_it: return signo; }
4723c: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 47240: 4e5e unlk %fp <== NOT EXECUTED
0004b802 <_POSIX_signals_Post_switch_extension>:
*/
void _POSIX_signals_Post_switch_extension(
Thread_Control *the_thread
)
{
4b802: 4e56 fff0 linkw %fp,#-16 4b806: 206e 0008 moveal %fp@(8),%a0 4b80a: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
POSIX_API_Control *api;
int signo;
ISR_Level level;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4b80e: 2468 010e moveal %a0@(270),%a2
/*
* api may be NULL in case of a thread close in progress
*/
if ( !api )
4b812: 4a8a tstl %a2 4b814: 6700 008e beqw 4b8a4 <_POSIX_signals_Post_switch_extension+0xa2>
*
* The first thing done is to check there are any signals to be
* processed at all. No point in doing this loop otherwise.
*/
while (1) {
_ISR_Disable( level );
4b818: 263c 0000 0700 movel #1792,%d3 4b81e: 47f9 0004 e058 lea 4e058 <_POSIX_signals_Check_signal>,%a3 4b824: 2003 movel %d3,%d0 4b826: 40c1 movew %sr,%d1 4b828: 8081 orl %d1,%d0 4b82a: 46c0 movew %d0,%sr
if ( !(~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending)) ) {
4b82c: 2039 0006 031e movel 6031e <_POSIX_signals_Pending>,%d0
* The first thing done is to check there are any signals to be
* processed at all. No point in doing this loop otherwise.
*/
while (1) {
_ISR_Disable( level );
if ( !(~api->signals_blocked &
4b832: 242a 00d0 movel %a2@(208),%d2 4b836: 4682 notl %d2
(api->signals_pending | _POSIX_signals_Pending)) ) {
4b838: 80aa 00d4 orl %a2@(212),%d0
* The first thing done is to check there are any signals to be
* processed at all. No point in doing this loop otherwise.
*/
while (1) {
_ISR_Disable( level );
if ( !(~api->signals_blocked &
4b83c: c082 andl %d2,%d0
4b83e: 6762 beqs 4b8a2 <_POSIX_signals_Post_switch_extension+0xa0><== ALWAYS TAKEN
(api->signals_pending | _POSIX_signals_Pending)) ) {
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
4b840: 46c1 movew %d1,%sr <== NOT EXECUTED
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b842: 741b moveq #27,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
4b844: 42a7 clrl %sp@- <== NOT EXECUTED 4b846: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b848: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b84a: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b84c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4b850: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b852: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b854: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b856: 4e93 jsr %a3@ <== NOT EXECUTED
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b858: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b85c: 7020 moveq #32,%d0 <== NOT EXECUTED 4b85e: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b860: 66e2 bnes 4b844 <_POSIX_signals_Post_switch_extension+0x42><== NOT EXECUTED 4b862: 7401 moveq #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
}
/* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
_POSIX_signals_Check_signal( api, signo, false );
4b864: 42a7 clrl %sp@- <== NOT EXECUTED 4b866: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b868: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b86a: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b86c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4b870: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
/* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
4b872: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b874: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b876: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
/* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
4b878: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b87c: 701b moveq #27,%d0 <== NOT EXECUTED 4b87e: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b880: 67a2 beqs 4b824 <_POSIX_signals_Post_switch_extension+0x22><== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
4b882: 42a7 clrl %sp@- <== NOT EXECUTED 4b884: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b886: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b888: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b88a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4b88e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
/* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
4b890: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b892: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b894: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
/* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
4b896: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b89a: 701b moveq #27,%d0 <== NOT EXECUTED 4b89c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b89e: 66c4 bnes 4b864 <_POSIX_signals_Post_switch_extension+0x62><== NOT EXECUTED 4b8a0: 6082 bras 4b824 <_POSIX_signals_Post_switch_extension+0x22><== NOT EXECUTED
*/
while (1) {
_ISR_Disable( level );
if ( !(~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending)) ) {
_ISR_Enable( level );
4b8a2: 46c1 movew %d1,%sr
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
}
}
4b8a4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4b8aa: 4e5e unlk %fp <== NOT EXECUTED
0005c3e0 <_POSIX_signals_Set_process_signals>:
sigset_t mask
)
{
ISR_Level level;
_ISR_Disable( level );
5c3e0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _POSIX_signals_Set_process_signals(
sigset_t mask
)
{
5c3e6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
5c3ea: 40c1 movew %sr,%d1 <== NOT EXECUTED 5c3ec: 8081 orl %d1,%d0 <== NOT EXECUTED 5c3ee: 46c0 movew %d0,%sr <== NOT EXECUTED
_POSIX_signals_Pending |= mask;
5c3f0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5c3f4: 81b9 0006 031e orl %d0,6031e <_POSIX_signals_Pending> <== NOT EXECUTED
_ISR_Enable( level );
5c3fa: 46c1 movew %d1,%sr <== NOT EXECUTED
}
5c3fc: 4e5e unlk %fp <== NOT EXECUTED
000461e4 <_POSIX_signals_Ualarm_TSR>:
void _POSIX_signals_Ualarm_TSR(
Objects_Id id __attribute__((unused)),
void *argument __attribute__((unused))
)
{
461e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* * Send a SIGALRM but if there is a problem, ignore it. * It's OK, there isn't a way this should fail. */ (void) kill( getpid(), SIGALRM );
461e8: 4eb9 0004 2fa4 jsr 42fa4 <getpid> <== NOT EXECUTED 461ee: 4878 000e pea e <OPER1+0x2> <== NOT EXECUTED 461f2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 461f4: 4eb9 0004 5fdc jsr 45fdc <kill> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Reset(
Watchdog_Control *the_watchdog
)
{
(void) _Watchdog_Remove( the_watchdog );
461fa: 4879 0006 1eb2 pea 61eb2 <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 46200: 4eb9 0004 a09c jsr 4a09c <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46206: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4620a: 203c 0006 1eb2 movel #401074,%d0 <== NOT EXECUTED 46210: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 46214: 203c 0006 175e movel #399198,%d0 <== NOT EXECUTED 4621a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
/*
* If the reset interval is non-zero, reschedule ourselves.
*/
_Watchdog_Reset( &_POSIX_signals_Ualarm_timer );
}
4621e: 4e5e unlk %fp <== NOT EXECUTED 46220: 4ef9 0004 9f54 jmp 49f54 <_Watchdog_Insert> <== NOT EXECUTED
0005c400 <_POSIX_signals_Unblock_thread>:
5c400: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _POSIX_signals_Unblock_thread(
Thread_Control *the_thread,
int signo,
siginfo_t *info
)
{
5c402: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 5c406: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 5c40a: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 5c40e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5c412: 2608 movel %a0,%d3 <== NOT EXECUTED 5c414: 5383 subql #1,%d3 <== NOT EXECUTED
/*
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
5c416: 222a 0010 movel %a2@(16),%d1 <== NOT EXECUTED 5c41a: 2401 movel %d1,%d2 <== NOT EXECUTED 5c41c: 0282 1000 8000 andil #268468224,%d2 <== NOT EXECUTED
bool _POSIX_signals_Unblock_thread(
Thread_Control *the_thread,
int signo,
siginfo_t *info
)
{
5c422: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
POSIX_API_Control *api;
sigset_t mask;
siginfo_t *the_info = NULL;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5c426: 226a 010e moveal %a2@(270),%a1 <== NOT EXECUTED 5c42a: e7a8 lsll %d3,%d0 <== NOT EXECUTED
/*
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
5c42c: 0c82 1000 8000 cmpil #268468224,%d2 <== NOT EXECUTED 5c432: 6770 beqs 5c4a4 <_POSIX_signals_Unblock_thread+0xa4><== NOT EXECUTED
}
/*
* Thread is not waiting due to a sigwait.
*/
if ( ~api->signals_blocked & mask ) {
5c434: 2429 00d0 movel %a1@(208),%d2 <== NOT EXECUTED 5c438: 4682 notl %d2 <== NOT EXECUTED 5c43a: c082 andl %d2,%d0 <== NOT EXECUTED 5c43c: 675a beqs 5c498 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
* it is not blocked, THEN
* we need to dispatch at the end of this ISR.
* + Any other combination, do nothing.
*/
if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) {
5c43e: 0801 001c btst #28,%d1 <== NOT EXECUTED 5c442: 673e beqs 5c482 <_POSIX_signals_Unblock_thread+0x82><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c444: 7004 moveq #4,%d0 <== NOT EXECUTED 5c446: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
5c44a: 2001 movel %d1,%d0 <== NOT EXECUTED 5c44c: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED
/*
* In pthread_cond_wait, a thread will be blocking on a thread
* queue, but is also interruptible by a POSIX signal.
*/
if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
5c452: 6600 00a0 bnew 5c4f4 <_POSIX_signals_Unblock_thread+0xf4><== NOT EXECUTED
_Thread_queue_Extract_with_proxy( the_thread );
else if ( _States_Is_delaying(the_thread->current_state) ) {
5c456: 44c1 movew %d1,%ccr <== NOT EXECUTED 5c458: 6a3e bpls 5c498 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
5c45a: 486a 0048 pea %a2@(72) <== NOT EXECUTED 5c45e: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
5c464: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 5c46a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c46c: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> <== NOT EXECUTED 5c472: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c476: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
} else if ( the_thread->current_state == STATES_READY ) {
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
5c47c: 4200 clrb %d0 <== NOT EXECUTED
}
5c47e: 4e5e unlk %fp <== NOT EXECUTED 5c480: 4e75 rts <== NOT EXECUTED
else if ( _States_Is_delaying(the_thread->current_state) ) {
(void) _Watchdog_Remove( &the_thread->Timer );
_Thread_Unblock( the_thread );
}
} else if ( the_thread->current_state == STATES_READY ) {
5c482: 4a81 tstl %d1 <== NOT EXECUTED 5c484: 6612 bnes 5c498 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
5c486: 4ab9 0006 0118 tstl 60118 <_Per_CPU_Information+0x8> <== NOT EXECUTED 5c48c: 670a beqs 5c498 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED 5c48e: b5f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 5c494: 6700 0090 beqw 5c526 <_POSIX_signals_Unblock_thread+0x126><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c498: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
} else if ( the_thread->current_state == STATES_READY ) {
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
5c49e: 4200 clrb %d0 <== NOT EXECUTED
}
5c4a0: 4e5e unlk %fp <== NOT EXECUTED 5c4a2: 4e75 rts <== NOT EXECUTED
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
5c4a4: 2200 movel %d0,%d1 <== NOT EXECUTED 5c4a6: c2aa 0030 andl %a2@(48),%d1 <== NOT EXECUTED 5c4aa: 672e beqs 5c4da <_POSIX_signals_Unblock_thread+0xda><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c4ac: 7004 moveq #4,%d0 <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
5c4ae: 266a 0028 moveal %a2@(40),%a3 <== NOT EXECUTED
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
the_thread->Wait.return_code = EINTR;
5c4b2: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
5c4b6: 4a84 tstl %d4 <== NOT EXECUTED 5c4b8: 6750 beqs 5c50a <_POSIX_signals_Unblock_thread+0x10a><== NOT EXECUTED
the_info->si_signo = signo;
the_info->si_code = SI_USER;
the_info->si_value.sival_int = 0;
} else {
*the_info = *info;
5c4ba: 2244 moveal %d4,%a1 <== NOT EXECUTED 5c4bc: 204b moveal %a3,%a0 <== NOT EXECUTED 5c4be: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 5c4c0: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 5c4c2: 2091 movel %a1@,%a0@ <== NOT EXECUTED
}
_Thread_queue_Extract_with_proxy( the_thread );
5c4c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c4c6: 4eb9 0004 8e88 jsr 48e88 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
return true;
5c4cc: 588f addql #4,%sp <== NOT EXECUTED 5c4ce: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c4d0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5c4d6: 4e5e unlk %fp <== NOT EXECUTED 5c4d8: 4e75 rts <== NOT EXECUTED
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
5c4da: 2229 00d0 movel %a1@(208),%d1 <== NOT EXECUTED 5c4de: 4681 notl %d1 <== NOT EXECUTED 5c4e0: c081 andl %d1,%d0 <== NOT EXECUTED 5c4e2: 67b4 beqs 5c498 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c4e4: 7004 moveq #4,%d0 <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
5c4e6: 266a 0028 moveal %a2@(40),%a3 <== NOT EXECUTED
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
the_thread->Wait.return_code = EINTR;
5c4ea: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
5c4ee: 4a84 tstl %d4 <== NOT EXECUTED 5c4f0: 66c8 bnes 5c4ba <_POSIX_signals_Unblock_thread+0xba><== NOT EXECUTED 5c4f2: 6016 bras 5c50a <_POSIX_signals_Unblock_thread+0x10a><== NOT EXECUTED
/*
* In pthread_cond_wait, a thread will be blocking on a thread
* queue, but is also interruptible by a POSIX signal.
*/
if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
_Thread_queue_Extract_with_proxy( the_thread );
5c4f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c4f6: 4eb9 0004 8e88 jsr 48e88 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED 5c4fc: 588f addql #4,%sp <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c4fe: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
} else if ( the_thread->current_state == STATES_READY ) {
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
5c504: 4200 clrb %d0 <== NOT EXECUTED
}
5c506: 4e5e unlk %fp <== NOT EXECUTED 5c508: 4e75 rts <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
the_info->si_signo = signo;
the_info->si_code = SI_USER;
5c50a: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
the_info->si_signo = signo;
5c50e: 2688 movel %a0,%a3@ <== NOT EXECUTED
the_info->si_code = SI_USER;
5c510: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
the_info->si_value.sival_int = 0;
5c514: 42ab 0008 clrl %a3@(8) <== NOT EXECUTED
} else {
*the_info = *info;
}
_Thread_queue_Extract_with_proxy( the_thread );
5c518: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c51a: 4eb9 0004 8e88 jsr 48e88 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
return true;
5c520: 588f addql #4,%sp <== NOT EXECUTED 5c522: 7001 moveq #1,%d0 <== NOT EXECUTED 5c524: 60aa bras 5c4d0 <_POSIX_signals_Unblock_thread+0xd0><== NOT EXECUTED
_Thread_Unblock( the_thread );
}
} else if ( the_thread->current_state == STATES_READY ) {
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
5c526: 7001 moveq #1,%d0 <== NOT EXECUTED
}
}
return false;
}
5c528: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5c52e: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Unblock( the_thread );
}
} else if ( the_thread->current_state == STATES_READY ) {
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
5c530: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
}
return false;
5c536: 4200 clrb %d0 <== NOT EXECUTED
}
...
000483d0 <_Protected_heap_Extend>:
bool _Protected_heap_Extend(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
483d0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
bool extend_ok;
uintptr_t amount_extended;
_RTEMS_Lock_allocator();
483d4: 2f39 0006 040a movel 6040a <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 483da: 4eb9 0004 719c jsr 4719c <_API_Mutex_Lock> <== NOT EXECUTED
extend_ok = _Heap_Extend(the_heap, starting_address, size, &amount_extended);
483e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 483e4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 483e8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 483ec: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 483f0: 4eb9 0004 cb44 jsr 4cb44 <_Heap_Extend> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
483f6: 2f39 0006 040a movel 6040a <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 483fc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 48400: 4eb9 0004 71fc jsr 471fc <_API_Mutex_Unlock> <== NOT EXECUTED
return extend_ok; }
48406: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4840a: 4e5e unlk %fp <== NOT EXECUTED
...
0004cfc0 <_Protected_heap_Get_free_information>:
bool _Protected_heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
4cfc0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* TBD: _Heap_Get_free_information does not error check or return status.
*/
_RTEMS_Lock_allocator();
4cfc4: 2f39 0006 614a movel 6614a <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4cfca: 4eb9 0004 b2b8 jsr 4b2b8 <_API_Mutex_Lock> <== NOT EXECUTED
_Heap_Get_free_information( the_heap, info );
4cfd0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4cfd4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cfd8: 4eb9 0005 196c jsr 5196c <_Heap_Get_free_information> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4cfde: 2f39 0006 614a movel 6614a <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4cfe4: 4eb9 0004 b318 jsr 4b318 <_API_Mutex_Unlock> <== NOT EXECUTED
return true;
}
4cfea: 7001 moveq #1,%d0 <== NOT EXECUTED 4cfec: 4e5e unlk %fp <== NOT EXECUTED
000488b8 <_Protected_heap_Get_information>:
bool _Protected_heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
488b8: 4e56 0000 linkw %fp,#0 488bc: 2f03 movel %d3,%sp@- 488be: 262e 000c movel %fp@(12),%d3 488c2: 2f02 movel %d2,%sp@- 488c4: 242e 0008 movel %fp@(8),%d2
if ( !the_heap )
488c8: 6738 beqs 48902 <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
if ( !the_info )
488ca: 4a83 tstl %d3
488cc: 6734 beqs 48902 <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
_RTEMS_Lock_allocator();
488ce: 2f39 0006 07be movel 607be <_RTEMS_Allocator_Mutex>,%sp@- 488d4: 4eb9 0004 764c jsr 4764c <_API_Mutex_Lock>
_Heap_Get_information( the_heap, the_info );
488da: 2f03 movel %d3,%sp@- 488dc: 2f02 movel %d2,%sp@- 488de: 4eb9 0004 d48c jsr 4d48c <_Heap_Get_information>
_RTEMS_Unlock_allocator();
488e4: 2f39 0006 07be movel 607be <_RTEMS_Allocator_Mutex>,%sp@- 488ea: 4eb9 0004 76ac jsr 476ac <_API_Mutex_Unlock>
return true;
}
488f0: 242e fff8 movel %fp@(-8),%d2
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
488f4: 4fef 0010 lea %sp@(16),%sp
}
488f8: 262e fffc movel %fp@(-4),%d3 488fc: 4e5e unlk %fp
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
488fe: 7001 moveq #1,%d0
}
48900: 4e75 rts
48902: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48906: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4890a: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !the_heap )
return false;
if ( !the_info )
return false;
4890c: 4200 clrb %d0 <== NOT EXECUTED
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
}
0005c664 <_Protected_heap_Resize_block>:
bool _Protected_heap_Resize_block(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
5c664: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 5c668: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Heap_Resize_status status;
uintptr_t old_mem_size;
uintptr_t avail_mem_size;
_RTEMS_Lock_allocator();
5c66a: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5c670: 4eb9 0004 6e50 jsr 46e50 <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Resize_block(
5c676: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 5c67a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5c67e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5c682: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5c686: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5c68a: 4eb9 0005 c6b0 jsr 5c6b0 <_Heap_Resize_block> <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5c690: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
Heap_Resize_status status;
uintptr_t old_mem_size;
uintptr_t avail_mem_size;
_RTEMS_Lock_allocator();
status = _Heap_Resize_block(
5c696: 2400 movel %d0,%d2 <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5c698: 4eb9 0004 6eb0 jsr 46eb0 <_API_Mutex_Unlock> <== NOT EXECUTED
return (status == HEAP_RESIZE_SUCCESSFUL);
5c69e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 5c6a2: 4a82 tstl %d2 <== NOT EXECUTED 5c6a4: 57c0 seq %d0 <== NOT EXECUTED
}
5c6a6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5c6aa: 4480 negl %d0 <== NOT EXECUTED 5c6ac: 4e5e unlk %fp <== NOT EXECUTED
0004d0a4 <_Protected_heap_Walk>:
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d0a4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
* then it is forbidden to lock a mutex. But since we are inside
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( !_Thread_Dispatch_disable_level ) {
4d0a8: 2039 0006 60a8 movel 660a8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d0ae: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4d0b2: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d0b6: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4d0ba: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED
* then it is forbidden to lock a mutex. But since we are inside
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( !_Thread_Dispatch_disable_level ) {
4d0be: 4a80 tstl %d0 <== NOT EXECUTED 4d0c0: 6720 beqs 4d0e2 <_Protected_heap_Walk+0x3e> <== NOT EXECUTED
_RTEMS_Lock_allocator();
status = _Heap_Walk( the_heap, source, do_dump );
_RTEMS_Unlock_allocator();
} else {
status = _Heap_Walk( the_heap, source, do_dump );
4d0c2: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 4d0c6: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED 4d0cc: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED 4d0d0: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED
} return status; }
4d0d4: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4d0da: 4e5e unlk %fp <== NOT EXECUTED
if ( !_Thread_Dispatch_disable_level ) {
_RTEMS_Lock_allocator();
status = _Heap_Walk( the_heap, source, do_dump );
_RTEMS_Unlock_allocator();
} else {
status = _Heap_Walk( the_heap, source, do_dump );
4d0dc: 4ef9 0004 c1b2 jmp 4c1b2 <_Heap_Walk> <== NOT EXECUTED
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( !_Thread_Dispatch_disable_level ) {
_RTEMS_Lock_allocator();
4d0e2: 2f39 0006 614a movel 6614a <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d0e8: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( !_Thread_Dispatch_disable_level ) {
_RTEMS_Lock_allocator();
4d0ee: 4eb9 0004 b2b8 jsr 4b2b8 <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d0f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d0f6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d0f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d0fa: 4eb9 0004 c1b2 jsr 4c1b2 <_Heap_Walk> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4d100: 2f39 0006 614a movel 6614a <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4d106: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 4d10a: 4eb9 0004 b318 jsr 4b318 <_API_Mutex_Unlock> <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d110: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
* NOTE: Dispatching is also disabled during initialization.
*/
if ( !_Thread_Dispatch_disable_level ) {
_RTEMS_Lock_allocator();
status = _Heap_Walk( the_heap, source, do_dump );
_RTEMS_Unlock_allocator();
4d114: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d118: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4d11e: 4e5e unlk %fp <== NOT EXECUTED
...
0004c36c <_RTEMS_Tasks_Invoke_task_variable_dtor>:
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4c36c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
4c370: 2039 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4c376: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c378: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
4c37c: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
if (_Thread_Is_executing(the_thread)) {
4c380: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 4c384: 671e beqs 4c3a4 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x38><== NOT EXECUTED
value = *tvp->ptr;
*tvp->ptr = tvp->gval;
} else {
value = tvp->tval;
4c386: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
}
if ( dtor )
4c38a: 4a88 tstl %a0 <== NOT EXECUTED 4c38c: 6706 beqs 4c394 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x28><== NOT EXECUTED
(*dtor)(value);
4c38e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c390: 4e90 jsr %a0@ <== NOT EXECUTED 4c392: 588f addql #4,%sp <== NOT EXECUTED
_Workspace_Free(tvp);
4c394: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4c398: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c39c: 4e5e unlk %fp <== NOT EXECUTED
}
if ( dtor )
(*dtor)(value);
_Workspace_Free(tvp);
4c39e: 4ef9 0004 9bd2 jmp 49bd2 <_Workspace_Free> <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
value = *tvp->ptr;
4c3a4: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED 4c3a8: 2011 movel %a1@,%d0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4c3aa: 22aa 0008 movel %a2@(8),%a1@ <== NOT EXECUTED 4c3ae: 60da bras 4c38a <_RTEMS_Tasks_Invoke_task_variable_dtor+0x1e><== NOT EXECUTED
0004c29a <_RTEMS_tasks_Create_extension>:
bool _RTEMS_tasks_Create_extension(
Thread_Control *executing,
Thread_Control *created
)
{
4c29a: 4e56 0000 linkw %fp,#0 4c29e: 2f0a movel %a2,%sp@- 4c2a0: 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() )
4c2a4: 4a39 0005 e3b4 tstb 5e3b4 <Configuration_RTEMS_API+0x4>
4c2aa: 6758 beqs 4c304 <_RTEMS_tasks_Create_extension+0x6a>
/*
* 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 );
4c2ac: 705e moveq #94,%d0
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
4c2ae: 2f00 movel %d0,%sp@- 4c2b0: 4eb9 0004 9bb6 jsr 49bb6 <_Workspace_Allocate>
if ( !api )
4c2b6: 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 );
4c2b8: 2040 moveal %d0,%a0
if ( !api )
4c2ba: 4a80 tstl %d0
4c2bc: 6758 beqs 4c316 <_RTEMS_tasks_Create_extension+0x7c><== NEVER TAKEN
return false;
created->API_Extensions[ THREAD_API_RTEMS ] = api;
4c2be: 2540 010a movel %d0,%a2@(266)
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4c2c2: 4200 clrb %d0
api->pending_events = EVENT_SETS_NONE_PENDING;
4c2c4: 4290 clrl %a0@ 4c2c6: 1140 0008 moveb %d0,%a0@(8)
api->event_condition = 0;
4c2ca: 42a8 0004 clrl %a0@(4)
information->handler = NULL;
4c2ce: 42a8 000a clrl %a0@(10)
information->mode_set = RTEMS_DEFAULT_MODES;
4c2d2: 42a8 000e clrl %a0@(14)
information->signals_posted = 0;
4c2d6: 42a8 0012 clrl %a0@(18)
information->signals_pending = 0;
4c2da: 42a8 0016 clrl %a0@(22)
information->nest_level = 0;
4c2de: 42a8 001a clrl %a0@(26)
_ASR_Initialize( &api->Signal ); created->task_variables = NULL;
4c2e2: 42aa 0116 clrl %a2@(278)
if ( rtems_configuration_get_notepads_enabled() ) {
4c2e6: 4a39 0005 e3b4 tstb 5e3b4 <Configuration_RTEMS_API+0x4>
4c2ec: 670c beqs 4c2fa <_RTEMS_tasks_Create_extension+0x60>
* task is created via another API, then this routine is invoked
* and this API given the opportunity to initialize its extension
* area.
*/
bool _RTEMS_tasks_Create_extension(
4c2ee: 41e8 001e lea %a0@(30),%a0 4c2f2: 7010 moveq #16,%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;
4c2f4: 4298 clrl %a0@+ 4c2f6: 5380 subql #1,%d0
api->event_condition = 0;
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
4c2f8: 66fa bnes 4c2f4 <_RTEMS_tasks_Create_extension+0x5a>
api->Notepads[i] = 0;
}
return true;
}
4c2fa: 246e fffc moveal %fp@(-4),%a2 4c2fe: 4e5e unlk %fp
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
4c300: 7001 moveq #1,%d0
}
4c302: 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));
4c304: 701e moveq #30,%d0
api = _Workspace_Allocate( to_allocate );
4c306: 2f00 movel %d0,%sp@- 4c308: 4eb9 0004 9bb6 jsr 49bb6 <_Workspace_Allocate>
if ( !api )
4c30e: 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 );
4c310: 2040 moveal %d0,%a0
if ( !api )
4c312: 4a80 tstl %d0
4c314: 66a8 bnes 4c2be <_RTEMS_tasks_Create_extension+0x24><== ALWAYS TAKEN
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
4c316: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c31a: 4e5e unlk %fp <== NOT EXECUTED
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
if ( !api )
return false;
4c31c: 4200 clrb %d0 <== NOT EXECUTED
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
0004c244 <_RTEMS_tasks_Delete_extension>:
void _RTEMS_tasks_Delete_extension(
Thread_Control *executing,
Thread_Control *deleted
)
{
4c244: 4e56 fff4 linkw %fp,#-12 4c248: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 4c24c: 246e 000c moveal %fp@(12),%a2 4c250: 47f9 0004 c36c lea 4c36c <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3
/*
* Free per task variable memory
*/
tvp = deleted->task_variables;
4c256: 206a 0116 moveal %a2@(278),%a0
deleted->task_variables = NULL;
4c25a: 42aa 0116 clrl %a2@(278)
while (tvp) {
4c25e: 4a88 tstl %a0
4c260: 671e beqs 4c280 <_RTEMS_tasks_Delete_extension+0x3c><== ALWAYS TAKEN
next = (rtems_task_variable_t *)tvp->next;
4c262: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4c264: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c266: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c268: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4c26a: 508f addql #8,%sp <== NOT EXECUTED 4c26c: 4a82 tstl %d2 <== NOT EXECUTED 4c26e: 6710 beqs 4c280 <_RTEMS_tasks_Delete_extension+0x3c><== NOT EXECUTED
next = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
tvp = next;
4c270: 2042 moveal %d2,%a0 <== NOT EXECUTED
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
next = (rtems_task_variable_t *)tvp->next;
4c272: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4c274: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c276: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c278: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4c27a: 508f addql #8,%sp <== NOT EXECUTED 4c27c: 4a82 tstl %d2 <== NOT EXECUTED 4c27e: 66f0 bnes 4c270 <_RTEMS_tasks_Delete_extension+0x2c><== NOT EXECUTED
/*
* Free API specific memory
*/
(void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] );
4c280: 2f2a 010a movel %a2@(266),%sp@- 4c284: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free>
deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL;
4c28a: 588f addql #4,%sp 4c28c: 42aa 010a clrl %a2@(266)
}
4c290: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4c296: 4e5e unlk %fp <== NOT EXECUTED
0004689c <_RTEMS_tasks_Initialize_user_tasks_body>:
*
* Output parameters: NONE
*/
void _RTEMS_tasks_Initialize_user_tasks_body( void )
{
4689c: 4e56 ffe4 linkw %fp,#-28 468a0: 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;
468a4: 2479 0005 e3da moveal 5e3da <Configuration_RTEMS_API+0x2a>,%a2
maximum = Configuration_RTEMS_API.number_of_initialization_tasks;
468aa: 2639 0005 e3d6 movel 5e3d6 <Configuration_RTEMS_API+0x26>,%d3
/*
* Verify that we have a set of user tasks to iterate
*/
if ( !user_tasks )
468b0: 4a8a tstl %a2
468b2: 6754 beqs 46908 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c>
return;
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
468b4: 4a83 tstl %d3
468b6: 6750 beqs 46908 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c><== NEVER TAKEN
468b8: 280e movel %fp,%d4 468ba: 4282 clrl %d2 468bc: 5984 subql #4,%d4 468be: 47f9 0004 6674 lea 46674 <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(
468c4: 49f9 0004 6924 lea 46924 <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(
468ca: 2f04 movel %d4,%sp@- 468cc: 2f2a 000c movel %a2@(12),%sp@- 468d0: 2f2a 0014 movel %a2@(20),%sp@- 468d4: 2f2a 0004 movel %a2@(4),%sp@- 468d8: 2f2a 0008 movel %a2@(8),%sp@- 468dc: 2f12 movel %a2@,%sp@- 468de: 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 ) )
468e0: 4fef 0018 lea %sp@(24),%sp 468e4: 4a80 tstl %d0
468e6: 662a bnes 46912 <_RTEMS_tasks_Initialize_user_tasks_body+0x76>
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
return_value = rtems_task_start(
468e8: 2f2a 0018 movel %a2@(24),%sp@- 468ec: 2f2a 0010 movel %a2@(16),%sp@- 468f0: 2f2e fffc movel %fp@(-4),%sp@- 468f4: 4e94 jsr %a4@
id,
user_tasks[ index ].entry_point,
user_tasks[ index ].argument
);
if ( !rtems_is_status_successful( return_value ) )
468f6: 4fef 000c lea %sp@(12),%sp 468fa: 4a80 tstl %d0
468fc: 6614 bnes 46912 <_RTEMS_tasks_Initialize_user_tasks_body+0x76>
return;
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
468fe: 5282 addql #1,%d2 46900: 45ea 001c lea %a2@(28),%a2 46904: b483 cmpl %d3,%d2
46906: 65c2 bcss 468ca <_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 );
}
}
46908: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 4690e: 4e5e unlk %fp 46910: 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 );
46912: 2f00 movel %d0,%sp@- 46914: 4878 0001 pea 1 <ADD> 46918: 4878 0001 pea 1 <ADD> 4691c: 4eb9 0004 785c jsr 4785c <_Internal_error_Occurred>
...
0004c1c8 <_RTEMS_tasks_Post_switch_extension>:
*/
void _RTEMS_tasks_Post_switch_extension(
Thread_Control *executing
)
{
4c1c8: 4e56 ffec linkw %fp,#-20 4c1cc: 206e 0008 moveal %fp@(8),%a0 4c1d0: 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 ];
4c1d4: 2468 010a moveal %a0@(266),%a2
if ( !api )
4c1d8: 4a8a tstl %a2
4c1da: 671a beqs 4c1f6 <_RTEMS_tasks_Post_switch_extension+0x2e><== NEVER TAKEN
* Signal Processing
*/
asr = &api->Signal;
_ISR_Disable( level );
4c1dc: 203c 0000 0700 movel #1792,%d0 4c1e2: 40c1 movew %sr,%d1 4c1e4: 8081 orl %d1,%d0 4c1e6: 46c0 movew %d0,%sr
signal_set = asr->signals_posted;
4c1e8: 242a 0012 movel %a2@(18),%d2
asr->signals_posted = 0;
4c1ec: 42aa 0012 clrl %a2@(18)
_ISR_Enable( level );
4c1f0: 46c1 movew %d1,%sr
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
4c1f2: 4a82 tstl %d2
4c1f4: 660a bnes 4c200 <_RTEMS_tasks_Post_switch_extension+0x38><== NEVER TAKEN
(*asr->handler)( signal_set );
asr->nest_level -= 1;
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
}
4c1f6: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 4c1fc: 4e5e unlk %fp 4c1fe: 4e75 rts
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
return;
asr->nest_level += 1;
4c200: 52aa 001a addql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
4c204: 260e movel %fp,%d3 <== NOT EXECUTED 4c206: 5983 subql #4,%d3 <== NOT EXECUTED 4c208: 47f9 0004 e3b0 lea 4e3b0 <rtems_task_mode>,%a3 <== NOT EXECUTED 4c20e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c210: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4c216: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED 4c21a: 4e93 jsr %a3@ <== NOT EXECUTED
(*asr->handler)( signal_set );
4c21c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c21e: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED 4c222: 4e90 jsr %a0@ <== NOT EXECUTED
asr->nest_level -= 1;
4c224: 53aa 001a subql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
4c228: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c22a: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4c230: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c234: 4e93 jsr %a3@ <== NOT EXECUTED 4c236: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4c23a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4c240: 4e5e unlk %fp <== NOT EXECUTED
0004c16e <_RTEMS_tasks_Switch_extension>:
void _RTEMS_tasks_Switch_extension(
Thread_Control *executing,
Thread_Control *heir
)
{
4c16e: 4e56 0000 linkw %fp,#0 4c172: 206e 0008 moveal %fp@(8),%a0
/*
* Per Task Variables
*/
tvp = executing->task_variables;
4c176: 2068 0116 moveal %a0@(278),%a0
while (tvp) {
4c17a: 4a88 tstl %a0
4c17c: 6712 beqs 4c190 <_RTEMS_tasks_Switch_extension+0x22><== ALWAYS TAKEN
tvp->tval = *tvp->ptr;
4c17e: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED 4c182: 2151 000c movel %a1@,%a0@(12) <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4c186: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4c18a: 2050 moveal %a0@,%a0 <== NOT EXECUTED
/*
* Per Task Variables
*/
tvp = executing->task_variables;
while (tvp) {
4c18c: 4a88 tstl %a0 <== NOT EXECUTED 4c18e: 66ee bnes 4c17e <_RTEMS_tasks_Switch_extension+0x10><== NOT EXECUTED
tvp->tval = *tvp->ptr;
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
4c190: 206e 000c moveal %fp@(12),%a0 4c194: 2068 0116 moveal %a0@(278),%a0
while (tvp) {
4c198: 4a88 tstl %a0
4c19a: 6712 beqs 4c1ae <_RTEMS_tasks_Switch_extension+0x40><== ALWAYS TAKEN
tvp->gval = *tvp->ptr;
4c19c: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED 4c1a0: 2151 0008 movel %a1@,%a0@(8) <== NOT EXECUTED
*tvp->ptr = tvp->tval;
4c1a4: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4c1a8: 2050 moveal %a0@,%a0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
while (tvp) {
4c1aa: 4a88 tstl %a0 <== NOT EXECUTED 4c1ac: 66ee bnes 4c19c <_RTEMS_tasks_Switch_extension+0x2e><== NOT EXECUTED
tvp->gval = *tvp->ptr;
*tvp->ptr = tvp->tval;
tvp = (rtems_task_variable_t *)tvp->next;
}
}
4c1ae: 4e5e unlk %fp <== NOT EXECUTED
000472c0 <_Rate_monotonic_Get_status>:
bool _Rate_monotonic_Get_status(
Rate_monotonic_Control *the_period,
Rate_monotonic_Period_time_t *wall_since_last_period,
Thread_CPU_usage_t *cpu_since_last_period
)
{
472c0: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 472c4: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
/*
* Determine elapsed wall time since period initiated.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
472c8: 280e movel %fp,%d4 <== NOT EXECUTED 472ca: 5184 subql #8,%d4 <== NOT EXECUTED
_Timestamp_Subtract(
472cc: 45f9 0004 b250 lea 4b250 <_Timespec_Subtract>,%a2 <== NOT EXECUTED
bool _Rate_monotonic_Get_status(
Rate_monotonic_Control *the_period,
Rate_monotonic_Period_time_t *wall_since_last_period,
Thread_CPU_usage_t *cpu_since_last_period
)
{
472d2: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
/*
* Determine elapsed wall time since period initiated.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
472d6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
)
{
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
#endif
Thread_Control *owning_thread = the_period->owner;
472d8: 286b 0040 moveal %a3@(64),%a4 <== NOT EXECUTED
/*
* Determine elapsed wall time since period initiated.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
472dc: 4eb9 0004 8dcc jsr 48dcc <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_Subtract(
472e2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 472e6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 472e8: 486b 004c pea %a3@(76) <== NOT EXECUTED 472ec: 4e92 jsr %a2@ <== NOT EXECUTED
* Determine cpu usage since period initiated.
*/
used = owning_thread->cpu_time_used;
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
472ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
#endif
/*
* Determine cpu usage since period initiated.
*/
used = owning_thread->cpu_time_used;
472f2: 202c 0082 movel %a4@(130),%d0 <== NOT EXECUTED 472f6: 222c 0086 movel %a4@(134),%d1 <== NOT EXECUTED 472fa: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED 472fe: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
47302: b9f9 0006 2288 cmpal 62288 <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED 47308: 670c beqs 47316 <_Rate_monotonic_Get_status+0x56><== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
4730a: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED
if (used < the_period->cpu_usage_period_initiated)
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
47310: 7001 moveq #1,%d0 <== NOT EXECUTED
}
47312: 4e5e unlk %fp <== NOT EXECUTED 47314: 4e75 rts <== NOT EXECUTED
if (owning_thread == _Thread_Executing) {
Thread_CPU_usage_t ran;
/* How much time time since last context switch */
_Timestamp_Subtract(
47316: 49ee ffe8 lea %fp@(-24),%a4 <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
/* cpu usage += ran */
_Timestamp_Add_to( &used, &ran );
4731a: 240e movel %fp,%d2 <== NOT EXECUTED 4731c: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
/*
* The cpu usage info was reset while executing. Can't
* determine a status.
*/
if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
47322: 260b movel %a3,%d3 <== NOT EXECUTED 47324: 0683 0000 0044 addil #68,%d3 <== NOT EXECUTED
if (owning_thread == _Thread_Executing) {
Thread_CPU_usage_t ran;
/* How much time time since last context switch */
_Timestamp_Subtract(
4732a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4732c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4732e: 4879 0006 1ea6 pea 61ea6 <_Thread_Time_of_last_context_switch><== NOT EXECUTED 47334: 4e92 jsr %a2@ <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
/* cpu usage += ran */
_Timestamp_Add_to( &used, &ran );
47336: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47338: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4733a: 4eb9 0004 b110 jsr 4b110 <_Timespec_Add_to> <== NOT EXECUTED
/*
* The cpu usage info was reset while executing. Can't
* determine a status.
*/
if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
47340: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47342: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47344: 4eb9 0004 b21c jsr 4b21c <_Timespec_Less_than> <== NOT EXECUTED 4734a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4734e: 4a00 tstb %d0 <== NOT EXECUTED 47350: 670c beqs 4735e <_Rate_monotonic_Get_status+0x9e><== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
47352: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED
/*
* The cpu usage info was reset while executing. Can't
* determine a status.
*/
if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
return false;
47358: 4200 clrb %d0 <== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
4735a: 4e5e unlk %fp <== NOT EXECUTED 4735c: 4e75 rts <== NOT EXECUTED
*/
if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
return false;
/* used = current cpu usage - cpu usage at start of period */
_Timestamp_Subtract(
4735e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 47362: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47364: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47366: 4e92 jsr %a2@ <== NOT EXECUTED 47368: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
4736c: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED
if (used < the_period->cpu_usage_period_initiated)
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
47372: 7001 moveq #1,%d0 <== NOT EXECUTED
}
47374: 4e5e unlk %fp <== NOT EXECUTED
00047378 <_Rate_monotonic_Initiate_statistics>:
void _Rate_monotonic_Initiate_statistics(
Rate_monotonic_Control *the_period
)
{
47378: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4737c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 47380: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
* If using nanosecond statistics, we need to obtain the uptime.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
_TOD_Get_uptime( &uptime );
47384: 240e movel %fp,%d2 <== NOT EXECUTED 47386: 5182 subql #8,%d2 <== NOT EXECUTED
void _Rate_monotonic_Initiate_statistics(
Rate_monotonic_Control *the_period
)
{
Thread_Control *owning_thread = the_period->owner;
47388: 266a 0040 moveal %a2@(64),%a3 <== NOT EXECUTED
* If using nanosecond statistics, we need to obtain the uptime.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
_TOD_Get_uptime( &uptime );
4738c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4738e: 4eb9 0004 8dcc jsr 48dcc <_TOD_Get_uptime> <== NOT EXECUTED
* routine is invoked from rtems_rate_monotonic_period, the owner will
* be the executing thread. When this routine is invoked from
* _Rate_monotonic_Timeout, it will not.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
47394: 588f addql #4,%sp <== NOT EXECUTED
/*
* Set the starting point and the CPU time used for the statistics.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
the_period->time_period_initiated = uptime;
47396: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4739a: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4739e: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED 473a2: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
#else
the_period->time_period_initiated = _Watchdog_Ticks_since_boot;
#endif
the_period->cpu_usage_period_initiated = owning_thread->cpu_time_used;
473a6: 202b 0082 movel %a3@(130),%d0 <== NOT EXECUTED 473aa: 222b 0086 movel %a3@(134),%d1 <== NOT EXECUTED 473ae: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED 473b2: 2541 0048 movel %d1,%a2@(72) <== NOT EXECUTED
* routine is invoked from rtems_rate_monotonic_period, the owner will
* be the executing thread. When this routine is invoked from
* _Rate_monotonic_Timeout, it will not.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
473b6: b7f9 0006 2288 cmpal 62288 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED 473bc: 670a beqs 473c8 <_Rate_monotonic_Initiate_statistics+0x50><== NOT EXECUTED
);
_Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran );
}
#endif
}
473be: 4cee 0c04 ffe4 moveml %fp@(-28),%d2/%a2-%a3 <== NOT EXECUTED 473c4: 4e5e unlk %fp <== NOT EXECUTED 473c6: 4e75 rts <== NOT EXECUTED
/*
* Adjust the CPU time used to account for the time since last
* context switch.
*/
_Timespec_Subtract(
&_Thread_Time_of_last_context_switch, &uptime, &ran
473c8: 47ee fff0 lea %fp@(-16),%a3 <== NOT EXECUTED
/*
* Adjust the CPU time used to account for the time since last
* context switch.
*/
_Timespec_Subtract(
473cc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 473ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED 473d0: 4879 0006 1ea6 pea 61ea6 <_Thread_Time_of_last_context_switch><== NOT EXECUTED 473d6: 4eb9 0004 b250 jsr 4b250 <_Timespec_Subtract> <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
_Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran );
473dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 473de: 486a 0044 pea %a2@(68) <== NOT EXECUTED 473e2: 4eb9 0004 b110 jsr 4b110 <_Timespec_Add_to> <== NOT EXECUTED 473e8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
#endif
}
473ec: 4cee 0c04 ffe4 moveml %fp@(-28),%d2/%a2-%a3 <== NOT EXECUTED 473f2: 4e5e unlk %fp <== NOT EXECUTED
00047994 <_Rate_monotonic_Timeout>:
void _Rate_monotonic_Timeout(
Objects_Id id,
void *ignored
)
{
47994: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47998: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4799a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4799e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 479a2: 4879 0006 1cfc pea 61cfc <_Rate_monotonic_Information> <== NOT EXECUTED 479a8: 4eb9 0004 994c jsr 4994c <_Objects_Get> <== NOT EXECUTED
/*
* 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 ) {
479ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 479b2: 2440 moveal %d0,%a2 <== NOT EXECUTED 479b4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 479b8: 6636 bnes 479f0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_thread = the_period->owner;
479ba: 206a 0040 moveal %a2@(64),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_PERIOD);
479be: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED 479c2: 0280 0000 4000 andil #16384,%d0 <== NOT EXECUTED
if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
479c8: 670a beqs 479d4 <_Rate_monotonic_Timeout+0x40> <== NOT EXECUTED 479ca: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 479ce: b0a8 0020 cmpl %a0@(32),%d0 <== NOT EXECUTED 479d2: 675e beqs 47a32 <_Rate_monotonic_Timeout+0x9e> <== NOT EXECUTED
_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 ) {
479d4: 7001 moveq #1,%d0 <== NOT EXECUTED 479d6: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 479da: 671c beqs 479f8 <_Rate_monotonic_Timeout+0x64> <== NOT EXECUTED
_Rate_monotonic_Initiate_statistics( the_period );
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
} else
the_period->state = RATE_MONOTONIC_EXPIRED;
479dc: 7004 moveq #4,%d0 <== NOT EXECUTED 479de: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
479e2: 2039 0006 1df8 movel 61df8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 479e8: 5380 subql #1,%d0 <== NOT EXECUTED 479ea: 23c0 0006 1df8 movel %d0,61df8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
479f0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 479f4: 4e5e unlk %fp <== NOT EXECUTED 479f6: 4e75 rts <== NOT EXECUTED
_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;
479f8: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 479fc: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
_Rate_monotonic_Initiate_statistics( the_period );
47a00: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47a02: 4eb9 0004 7378 jsr 47378 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
47a08: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
47a0e: 486a 0010 pea %a2@(16) <== NOT EXECUTED 47a12: 4879 0006 1eba pea 61eba <_Watchdog_Ticks_chain> <== NOT EXECUTED 47a18: 4eb9 0004 b558 jsr 4b558 <_Watchdog_Insert> <== NOT EXECUTED 47a1e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47a22: 2039 0006 1df8 movel 61df8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47a28: 5380 subql #1,%d0 <== NOT EXECUTED 47a2a: 23c0 0006 1df8 movel %d0,61df8 <_Thread_Dispatch_disable_level><== NOT EXECUTED 47a30: 60be bras 479f0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
47a32: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 47a38: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47a3a: 4eb9 0004 9e74 jsr 49e74 <_Thread_Clear_state> <== NOT EXECUTED
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 );
47a40: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47a42: 4eb9 0004 7378 jsr 47378 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
47a48: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
47a4e: 486a 0010 pea %a2@(16) <== NOT EXECUTED 47a52: 4879 0006 1eba pea 61eba <_Watchdog_Ticks_chain> <== NOT EXECUTED 47a58: 4eb9 0004 b558 jsr 4b558 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
47a5e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
47a62: 2039 0006 1df8 movel 61df8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47a68: 5380 subql #1,%d0 <== NOT EXECUTED 47a6a: 23c0 0006 1df8 movel %d0,61df8 <_Thread_Dispatch_disable_level><== NOT EXECUTED 47a70: 6000 ff7e braw 479f0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
000473f6 <_Rate_monotonic_Update_statistics>:
* Update the counts.
*/
stats = &the_period->Statistics;
stats->count++;
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
473f6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
void _Rate_monotonic_Update_statistics(
Rate_monotonic_Control *the_period
)
{
473f8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 473fc: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 47400: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Update the counts.
*/
stats = &the_period->Statistics;
stats->count++;
47404: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
47408: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 4740c: 6700 00c6 beqw 474d4 <_Rate_monotonic_Update_statistics+0xde><== NOT EXECUTED
/*
* Grab status for time statistics.
*/
valid_status =
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
47410: 260e movel %fp,%d3 <== NOT EXECUTED 47412: 5183 subql #8,%d3 <== NOT EXECUTED 47414: 240e movel %fp,%d2 <== NOT EXECUTED 47416: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
stats->missed_count++;
/*
* Grab status for time statistics.
*/
valid_status =
4741c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4741e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47420: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47422: 4eb9 0004 72c0 jsr 472c0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
if (!valid_status)
47428: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4742c: 4a00 tstb %d0 <== NOT EXECUTED 4742e: 660a bnes 4743a <_Rate_monotonic_Update_statistics+0x44><== NOT EXECUTED
stats->min_wall_time = since_last_period;
if ( since_last_period > stats->max_wall_time )
stats->max_wall_time = since_last_period;
#endif
}
47430: 4cee 3c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a5 <== NOT EXECUTED 47436: 4e5e unlk %fp <== NOT EXECUTED 47438: 4e75 rts <== NOT EXECUTED
/*
* Update CPU time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_cpu_time, &executed );
4743a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4743c: 486a 006c pea %a2@(108) <== NOT EXECUTED 47440: 4bf9 0004 b110 lea 4b110 <_Timespec_Add_to>,%a5 <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
47446: 49f9 0004 b21c lea 4b21c <_Timespec_Less_than>,%a4 <== NOT EXECUTED
/*
* Update CPU time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_cpu_time, &executed );
4744c: 4e95 jsr %a5@ <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
4744e: 486a 005c pea %a2@(92) <== NOT EXECUTED 47452: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47454: 4e94 jsr %a4@ <== NOT EXECUTED 47456: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4745a: 4a00 tstb %d0 <== NOT EXECUTED 4745c: 6710 beqs 4746e <_Rate_monotonic_Update_statistics+0x78><== NOT EXECUTED
stats->min_cpu_time = executed;
4745e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47462: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 47466: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED 4746a: 2541 0060 movel %d1,%a2@(96) <== NOT EXECUTED
if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) )
4746e: 486a 0064 pea %a2@(100) <== NOT EXECUTED 47472: 47f9 0004 b1e8 lea 4b1e8 <_Timespec_Greater_than>,%a3 <== NOT EXECUTED 47478: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4747a: 4e93 jsr %a3@ <== NOT EXECUTED 4747c: 508f addql #8,%sp <== NOT EXECUTED 4747e: 4a00 tstb %d0 <== NOT EXECUTED 47480: 6710 beqs 47492 <_Rate_monotonic_Update_statistics+0x9c><== NOT EXECUTED
stats->max_cpu_time = executed;
47482: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47486: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4748a: 2540 0064 movel %d0,%a2@(100) <== NOT EXECUTED 4748e: 2541 0068 movel %d1,%a2@(104) <== NOT EXECUTED
/*
* Update Wall time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_wall_time, &since_last_period );
47492: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47494: 486a 0084 pea %a2@(132) <== NOT EXECUTED 47498: 4e95 jsr %a5@ <== NOT EXECUTED
if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
4749a: 486a 0074 pea %a2@(116) <== NOT EXECUTED 4749e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 474a0: 4e94 jsr %a4@ <== NOT EXECUTED 474a2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 474a6: 4a00 tstb %d0 <== NOT EXECUTED 474a8: 6654 bnes 474fe <_Rate_monotonic_Update_statistics+0x108><== NOT EXECUTED
stats->min_wall_time = since_last_period;
if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
474aa: 486a 007c pea %a2@(124) <== NOT EXECUTED 474ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 474b0: 4e93 jsr %a3@ <== NOT EXECUTED 474b2: 508f addql #8,%sp <== NOT EXECUTED 474b4: 4a00 tstb %d0 <== NOT EXECUTED 474b6: 6700 ff78 beqw 47430 <_Rate_monotonic_Update_statistics+0x3a><== NOT EXECUTED
stats->max_wall_time = since_last_period;
474ba: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 474be: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 474c2: 2540 007c movel %d0,%a2@(124) <== NOT EXECUTED 474c6: 2541 0080 movel %d1,%a2@(128) <== NOT EXECUTED
stats->min_wall_time = since_last_period;
if ( since_last_period > stats->max_wall_time )
stats->max_wall_time = since_last_period;
#endif
}
474ca: 4cee 3c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a5 <== NOT EXECUTED 474d0: 4e5e unlk %fp <== NOT EXECUTED 474d2: 4e75 rts <== NOT EXECUTED
*/
stats = &the_period->Statistics;
stats->count++;
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
stats->missed_count++;
474d4: 52aa 0058 addql #1,%a2@(88) <== NOT EXECUTED
/*
* Grab status for time statistics.
*/
valid_status =
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
474d8: 260e movel %fp,%d3 <== NOT EXECUTED 474da: 5183 subql #8,%d3 <== NOT EXECUTED 474dc: 240e movel %fp,%d2 <== NOT EXECUTED 474de: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
stats->missed_count++;
/*
* Grab status for time statistics.
*/
valid_status =
474e4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 474e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 474e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 474ea: 4eb9 0004 72c0 jsr 472c0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
if (!valid_status)
474f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 474f4: 4a00 tstb %d0 <== NOT EXECUTED 474f6: 6700 ff38 beqw 47430 <_Rate_monotonic_Update_statistics+0x3a><== NOT EXECUTED 474fa: 6000 ff3e braw 4743a <_Rate_monotonic_Update_statistics+0x44><== NOT EXECUTED
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_wall_time, &since_last_period );
if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
stats->min_wall_time = since_last_period;
474fe: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 47502: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 47506: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 4750a: 2541 0078 movel %d1,%a2@(120) <== NOT EXECUTED 4750e: 609a bras 474aa <_Rate_monotonic_Update_statistics+0xb4><== NOT EXECUTED
0005ffa0 <_Region_Process_queue>:
*/
void _Region_Process_queue(
Region_Control *the_region
)
{
5ffa0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5ffa4: 2039 0007 eb70 movel 7eb70 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5ffaa: 5280 addql #1,%d0 <== NOT EXECUTED 5ffac: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 5ffb0: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 5ffb4: 23c0 0007 eb70 movel %d0,7eb70 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* NOTE: Be sure to disable dispatching before unlocking the mutex * since we do not want to open a window where a context * switch could occur. */ _Thread_Disable_dispatch(); _RTEMS_Unlock_allocator();
5ffba: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5ffc0: 240b movel %a3,%d2 <== NOT EXECUTED 5ffc2: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment (
Region_Control *the_region,
uintptr_t size
)
{
return _Heap_Allocate( &the_region->Memory, size );
5ffc8: 260b movel %a3,%d3 <== NOT EXECUTED 5ffca: 49f9 0006 0804 lea 60804 <_Thread_queue_First>,%a4 <== NOT EXECUTED 5ffd0: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED 5ffd6: 4bf9 0005 a85c lea 5a85c <_Heap_Allocate_aligned_with_boundary>,%a5<== NOT EXECUTED 5ffdc: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED 5ffe2: 588f addql #4,%sp <== NOT EXECUTED
if ( the_segment == NULL )
break;
*(void **)the_thread->Wait.return_argument = the_segment;
the_region->number_of_used_blocks += 1;
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
5ffe4: 283c 0006 06e4 movel #394980,%d4 <== NOT EXECUTED
/*
* NOTE: The following loop is O(n) where n is the number of
* threads whose memory request is satisfied.
*/
for ( ; ; ) {
the_thread = _Thread_queue_First( &the_region->Wait_queue );
5ffea: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ffec: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5ffee: 588f addql #4,%sp <== NOT EXECUTED
/*
* NOTE: The following loop is O(n) where n is the number of
* threads whose memory request is satisfied.
*/
for ( ; ; ) {
the_thread = _Thread_queue_First( &the_region->Wait_queue );
5fff0: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5fff2: 4a80 tstl %d0 <== NOT EXECUTED 5fff4: 6738 beqs 6002e <_Region_Process_queue+0x8e> <== NOT EXECUTED 5fff6: 42a7 clrl %sp@- <== NOT EXECUTED 5fff8: 42a7 clrl %sp@- <== NOT EXECUTED 5fffa: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 5fffe: 2f03 movel %d3,%sp@- <== NOT EXECUTED 60000: 4e95 jsr %a5@ <== NOT EXECUTED
the_segment = (void **) _Region_Allocate_segment(
the_region,
the_thread->Wait.count
);
if ( the_segment == NULL )
60002: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 60006: 4a80 tstl %d0 <== NOT EXECUTED 60008: 6724 beqs 6002e <_Region_Process_queue+0x8e> <== NOT EXECUTED
break;
*(void **)the_thread->Wait.return_argument = the_segment;
6000a: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 6000e: 2080 movel %d0,%a0@ <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
60010: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
60014: 2044 moveal %d4,%a0 <== NOT EXECUTED 60016: 2f0a movel %a2,%sp@- <== NOT EXECUTED 60018: 2f02 movel %d2,%sp@- <== NOT EXECUTED 6001a: 4e90 jsr %a0@ <== NOT EXECUTED
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
6001c: 508f addql #8,%sp <== NOT EXECUTED
break;
*(void **)the_thread->Wait.return_argument = the_segment;
the_region->number_of_used_blocks += 1;
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
6001e: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED
/*
* NOTE: The following loop is O(n) where n is the number of
* threads whose memory request is satisfied.
*/
for ( ; ; ) {
the_thread = _Thread_queue_First( &the_region->Wait_queue );
60022: 2f02 movel %d2,%sp@- <== NOT EXECUTED 60024: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
60026: 588f addql #4,%sp <== NOT EXECUTED
/*
* NOTE: The following loop is O(n) where n is the number of
* threads whose memory request is satisfied.
*/
for ( ; ; ) {
the_thread = _Thread_queue_First( &the_region->Wait_queue );
60028: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
6002a: 4a80 tstl %d0 <== NOT EXECUTED 6002c: 66c8 bnes 5fff6 <_Region_Process_queue+0x56> <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
}
6002e: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 60034: 4e5e unlk %fp <== NOT EXECUTED
*(void **)the_thread->Wait.return_argument = the_segment;
the_region->number_of_used_blocks += 1;
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
60036: 4ef9 0005 c27e jmp 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
0004665e <_Semaphore_Translate_core_semaphore_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( status > CORE_SEMAPHORE_STATUS_LAST )
return RTEMS_INTERNAL_ERROR;
#endif
return _Semaphore_Translate_core_semaphore_return_code_[status];
4665e: 41f9 0005 d496 lea 5d496 <_Semaphore_Translate_core_semaphore_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Semaphore_Translate_core_semaphore_return_code (
uint32_t status
)
{
46664: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( status > CORE_SEMAPHORE_STATUS_LAST )
return RTEMS_INTERNAL_ERROR;
#endif
return _Semaphore_Translate_core_semaphore_return_code_[status];
}
46668: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4666c: 4e5e unlk %fp <== NOT EXECUTED 4666e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
000477c4 <_TOD_Get_uptime_as_timespec>:
*/
void _TOD_Get_uptime_as_timespec(
struct timespec *uptime
)
{
477c4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Timestamp_Control uptime_ts;
/* assume time checked for NULL by caller */
_TOD_Get_uptime( &uptime_ts );
477c8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 477cc: 4eb9 0004 ca8c jsr 4ca8c <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_To_timespec( &uptime_ts, uptime );
477d2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 477d6: 588f addql #4,%sp <== NOT EXECUTED 477d8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 477dc: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
}
477e0: 4e5e unlk %fp <== NOT EXECUTED
{
Timestamp_Control uptime_ts;
/* assume time checked for NULL by caller */
_TOD_Get_uptime( &uptime_ts );
_Timestamp_To_timespec( &uptime_ts, uptime );
477e2: 2080 movel %d0,%a0@ <== NOT EXECUTED 477e4: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
}
...
00048d60 <_TOD_Set>:
*/
void _TOD_Set(
const struct timespec *time
)
{
48d60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48d64: 2039 0006 a27c movel 6a27c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48d6a: 5280 addql #1,%d0 <== NOT EXECUTED 48d6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48d6e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 48d72: 23c0 0006 a27c movel %d0,6a27c <_Thread_Dispatch_disable_level><== NOT EXECUTED
long seconds;
_Thread_Disable_dispatch();
_TOD_Deactivate();
seconds = _TOD_Seconds_since_epoch();
48d78: 2039 0006 a306 movel 6a306 <_TOD_Now>,%d0 <== NOT EXECUTED
if ( time->tv_sec < seconds )
48d7e: 2212 movel %a2@,%d1 <== NOT EXECUTED 48d80: b280 cmpl %d0,%d1 <== NOT EXECUTED 48d82: 6d38 blts 48dbc <_TOD_Set+0x5c> <== NOT EXECUTED
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );
48d84: 9280 subl %d0,%d1 <== NOT EXECUTED 48d86: 2f01 movel %d1,%sp@- <== NOT EXECUTED 48d88: 42a7 clrl %sp@- <== NOT EXECUTED 48d8a: 4879 0006 a332 pea 6a332 <_Watchdog_Seconds_chain> <== NOT EXECUTED 48d90: 4eb9 0004 b570 jsr 4b570 <_Watchdog_Adjust> <== NOT EXECUTED
_Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds - time->tv_sec );
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds );
/* POSIX format TOD (timespec) */
_Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec );
48d96: 23d2 0006 a306 movel %a2@,6a306 <_TOD_Now> <== NOT EXECUTED 48d9c: 588a addql #4,%a2 <== NOT EXECUTED 48d9e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48da2: 23d2 0006 a30a movel %a2@,6a30a <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48da8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48dac: 4e5e unlk %fp <== NOT EXECUTED
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds );
/* POSIX format TOD (timespec) */
_Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec );
_TOD_Is_set = true;
48dae: 7001 moveq #1,%d0 <== NOT EXECUTED 48db0: 13c0 0006 a28c moveb %d0,6a28c <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48db6: 4ef9 0004 a192 jmp 4a192 <_Thread_Enable_dispatch> <== NOT EXECUTED 48dbc: 9081 subl %d1,%d0 <== NOT EXECUTED 48dbe: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48dc0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48dc4: 4879 0006 a332 pea 6a332 <_Watchdog_Seconds_chain> <== NOT EXECUTED 48dca: 4eb9 0004 b570 jsr 4b570 <_Watchdog_Adjust> <== NOT EXECUTED
_Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds - time->tv_sec );
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds );
/* POSIX format TOD (timespec) */
_Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec );
48dd0: 23d2 0006 a306 movel %a2@,6a306 <_TOD_Now> <== NOT EXECUTED 48dd6: 588a addql #4,%a2 <== NOT EXECUTED 48dd8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48ddc: 23d2 0006 a30a movel %a2@,6a30a <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48de2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48de6: 4e5e unlk %fp <== NOT EXECUTED
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds );
/* POSIX format TOD (timespec) */
_Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec );
_TOD_Is_set = true;
48de8: 7001 moveq #1,%d0 <== NOT EXECUTED 48dea: 13c0 0006 a28c moveb %d0,6a28c <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48df0: 4ef9 0004 a192 jmp 4a192 <_Thread_Enable_dispatch> <== NOT EXECUTED
...
00047428 <_TOD_Tickle_ticks>:
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
47428: 4e56 ffec linkw %fp,#-20
Timestamp_Control tick;
uint32_t seconds;
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
4742c: 2239 0005 e3f0 movel 5e3f0 <Configuration+0xc>,%d1
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
47432: 48d7 040c moveml %d2-%d3/%a2,%sp@
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
47436: 240e movel %fp,%d2 47438: 5182 subql #8,%d2
{
Timestamp_Control tick;
uint32_t seconds;
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
4743a: 263c 0000 03e8 movel #1000,%d3 47440: 4c03 1800 mulsl %d3,%d1
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
47444: 45f9 0004 959c lea 4959c <_Timespec_Add_to>,%a2
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
4744a: 2039 0005 fdb8 movel 5fdb8 <_Watchdog_Ticks_since_boot>,%d0 47450: 5280 addql #1,%d0
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
47452: 2f02 movel %d2,%sp@- 47454: 4879 0005 fd06 pea 5fd06 <_TOD_Uptime>
{
Timestamp_Control tick;
uint32_t seconds;
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
4745a: 2d41 fffc movel %d1,%fp@(-4) 4745e: 42ae fff8 clrl %fp@(-8)
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
47462: 23c0 0005 fdb8 movel %d0,5fdb8 <_Watchdog_Ticks_since_boot>
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
47468: 4e92 jsr %a2@
/* we do not care how much the uptime changed */
/* Update the timespec format TOD */
seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );
4746a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4746c: 4879 0005 fd16 pea 5fd16 <_TOD_Now> <== NOT EXECUTED 47472: 4e92 jsr %a2@ <== NOT EXECUTED
while ( seconds ) {
47474: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
/* we do not care how much the uptime changed */
/* Update the timespec format TOD */
seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );
47478: 2400 movel %d0,%d2 <== NOT EXECUTED
while ( seconds ) {
4747a: 6716 beqs 47492 <_TOD_Tickle_ticks+0x6a> <== NOT EXECUTED 4747c: 45f9 0004 9ad4 lea 49ad4 <_Watchdog_Tickle>,%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )
{
_Watchdog_Tickle( &_Watchdog_Seconds_chain );
47482: 4879 0005 fd42 pea 5fd42 <_Watchdog_Seconds_chain> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
47488: 5382 subql #1,%d2 <== NOT EXECUTED 4748a: 4e92 jsr %a2@ <== NOT EXECUTED
_Timestamp_Add_to( &_TOD_Uptime, &tick );
/* we do not care how much the uptime changed */
/* Update the timespec format TOD */
seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );
while ( seconds ) {
4748c: 588f addql #4,%sp <== NOT EXECUTED 4748e: 4a82 tstl %d2 <== NOT EXECUTED 47490: 66f0 bnes 47482 <_TOD_Tickle_ticks+0x5a> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
}
}
47492: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 47498: 4e5e unlk %fp <== NOT EXECUTED
00047278 <_TOD_To_seconds>:
*/
uint32_t _TOD_To_seconds(
const rtems_time_of_day *the_tod
)
{
47278: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4727c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47280: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
uint32_t time;
uint32_t year_mod_4;
time = the_tod->day - 1;
year_mod_4 = the_tod->year & 3;
47284: 2610 movel %a0@,%d3 <== NOT EXECUTED 47286: 7403 moveq #3,%d2 <== NOT EXECUTED
)
{
uint32_t time;
uint32_t year_mod_4;
time = the_tod->day - 1;
47288: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 4728c: 5380 subql #1,%d0 <== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
4728e: c483 andl %d3,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
47290: 6774 beqs 47306 <_TOD_To_seconds+0x8e> <== NOT EXECUTED
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
47292: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED 47296: 43f9 0005 fb92 lea 5fb92 <_TOD_Days_to_date>,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
4729c: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
472a2: 45f9 0005 fbc6 lea 5fbc6 <_TOD_Days_since_last_leap_year>,%a2<== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
472a8: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED 472ac: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 472b2: 2241 moveal %d1,%a1 <== NOT EXECUTED 472b4: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
472b6: 2003 movel %d3,%d0 <== NOT EXECUTED 472b8: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED 472be: e488 lsrl #2,%d0 <== NOT EXECUTED 472c0: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
472c4: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED 472c8: 2601 movel %d1,%d3 <== NOT EXECUTED 472ca: ed89 lsll #6,%d1 <== NOT EXECUTED 472cc: e58b lsll #2,%d3 <== NOT EXECUTED 472ce: 9283 subl %d3,%d1 <== NOT EXECUTED 472d0: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
472d4: 4283 clrl %d3 <== NOT EXECUTED 472d6: 3632 2a00 movew %a2@(00000000,%d2:l:2),%d3 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
472da: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
472dc: d083 addl %d3,%d0 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
472de: 263c 0001 5180 movel #86400,%d3 <== NOT EXECUTED
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
472e4: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
472e6: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
472ea: e58a lsll #2,%d2 <== NOT EXECUTED 472ec: ed89 lsll #6,%d1 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
472ee: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
472f2: 9282 subl %d2,%d1 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
472f4: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
time += the_tod->second;
472fa: d288 addl %a0,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
472fc: d081 addl %d1,%d0 <== NOT EXECUTED 472fe: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED 47302: 4e5e unlk %fp <== NOT EXECUTED 47304: 4e75 rts <== NOT EXECUTED
time = the_tod->day - 1;
year_mod_4 = the_tod->year & 3;
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
47306: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
4730a: 43f9 0005 fb92 lea 5fb92 <_TOD_Days_to_date>,%a1 <== NOT EXECUTED
time = the_tod->day - 1;
year_mod_4 = the_tod->year & 3;
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
47310: 0681 0000 000d addil #13,%d1 <== NOT EXECUTED
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
47316: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
4731c: 45f9 0005 fbc6 lea 5fbc6 <_TOD_Days_since_last_leap_year>,%a2<== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
47322: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED 47326: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 4732c: 2241 moveal %d1,%a1 <== NOT EXECUTED 4732e: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
47330: 2003 movel %d3,%d0 <== NOT EXECUTED 47332: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED 47338: e488 lsrl #2,%d0 <== NOT EXECUTED 4733a: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
4733e: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED 47342: 2601 movel %d1,%d3 <== NOT EXECUTED 47344: ed89 lsll #6,%d1 <== NOT EXECUTED 47346: e58b lsll #2,%d3 <== NOT EXECUTED 47348: 9283 subl %d3,%d1 <== NOT EXECUTED 4734a: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
4734e: 4283 clrl %d3 <== NOT EXECUTED 47350: 3632 2a00 movew %a2@(00000000,%d2:l:2),%d3 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
47354: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
47356: d083 addl %d3,%d0 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
47358: 263c 0001 5180 movel #86400,%d3 <== NOT EXECUTED
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
4735e: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
47360: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
47364: e58a lsll #2,%d2 <== NOT EXECUTED 47366: ed89 lsll #6,%d1 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
47368: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
4736c: 9282 subl %d2,%d1 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
4736e: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
time += the_tod->second;
47374: d288 addl %a0,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
47376: d081 addl %d1,%d0 <== NOT EXECUTED 47378: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED 4737c: 4e5e unlk %fp <== NOT EXECUTED
00047380 <_TOD_Validate>:
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
47380: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47384: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
47388: 2039 0006 0c10 movel 60c10 <Configuration+0xc>,%d0 <== NOT EXECUTED
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
4738e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
if ((!the_tod) ||
47390: 4a88 tstl %a0 <== NOT EXECUTED 47392: 6762 beqs 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
)
{
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
47394: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED 4739a: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick(); if ((!the_tod) ||
4739e: b4a8 0018 cmpl %a0@(24),%d2 <== NOT EXECUTED 473a2: 6352 blss 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->ticks >= ticks_per_second) ||
473a4: 703b moveq #59,%d0 <== NOT EXECUTED 473a6: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 473aa: 654a bcss 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
473ac: b0a8 0010 cmpl %a0@(16),%d0 <== NOT EXECUTED 473b0: 6544 bcss 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
473b2: 7217 moveq #23,%d1 <== NOT EXECUTED 473b4: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED 473b8: 653c bcss 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
473ba: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
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) ||
473be: 6736 beqs 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->month == 0) ||
473c0: 740c moveq #12,%d2 <== NOT EXECUTED 473c2: b480 cmpl %d0,%d2 <== NOT EXECUTED 473c4: 6530 bcss 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
473c6: 2210 movel %a0@,%d1 <== NOT EXECUTED
(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) ||
473c8: 0c81 0000 07c3 cmpil #1987,%d1 <== NOT EXECUTED 473ce: 6326 blss 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
473d0: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
(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) ||
473d4: 4a88 tstl %a0 <== NOT EXECUTED 473d6: 671e beqs 473f6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->day == 0) )
return false;
if ( (the_tod->year % 4) == 0 )
473d8: 143c 0003 moveb #3,%d2 <== NOT EXECUTED 473dc: c282 andl %d2,%d1 <== NOT EXECUTED 473de: 661e bnes 473fe <_TOD_Validate+0x7e> <== NOT EXECUTED
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
473e0: 43f9 0005 fbce lea 5fbce <_TOD_Days_per_month>,%a1 <== NOT EXECUTED 473e6: 2031 0c34 movel %a1@(00000034,%d0:l:4),%d0 <== NOT EXECUTED
* false - if the the_tod is invalid
*
* NOTE: This routine only works for leap-years through 2099.
*/
bool _TOD_Validate(
473ea: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 473ec: 53c0 sls %d0 <== NOT EXECUTED 473ee: 4480 negl %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
473f0: 241f movel %sp@+,%d2 <== NOT EXECUTED 473f2: 4e5e unlk %fp <== NOT EXECUTED 473f4: 4e75 rts <== NOT EXECUTED 473f6: 241f movel %sp@+,%d2 <== NOT EXECUTED 473f8: 4e5e unlk %fp <== NOT EXECUTED
(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;
473fa: 4200 clrb %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
473fc: 4e75 rts <== NOT EXECUTED
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 ];
473fe: 43f9 0005 fbce lea 5fbce <_TOD_Days_per_month>,%a1 <== NOT EXECUTED 47404: 2031 0c00 movel %a1@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
* false - if the the_tod is invalid
*
* NOTE: This routine only works for leap-years through 2099.
*/
bool _TOD_Validate(
47408: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 4740a: 53c0 sls %d0 <== NOT EXECUTED 4740c: 4480 negl %d0 <== NOT EXECUTED 4740e: 60e0 bras 473f0 <_TOD_Validate+0x70> <== NOT EXECUTED
000481b4 <_Thread_Change_priority>:
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
481b4: 4e56 fff0 linkw %fp,#-16 481b8: 48d7 041c moveml %d2-%d4/%a2,%sp@ 481bc: 246e 0008 moveal %fp@(8),%a2
*/
/*
* Save original state
*/
original_state = the_thread->current_state;
481c0: 262a 0010 movel %a2@(16),%d3
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
481c4: 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 );
481c8: 2f0a movel %a2,%sp@-
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
481ca: 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 );
481ce: 4eb9 0004 91bc jsr 491bc <_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 )
481d4: 588f addql #4,%sp 481d6: b4aa 0014 cmpl %a2@(20),%d2
481da: 670c beqs 481e8 <_Thread_Change_priority+0x34>
_Thread_Set_priority( the_thread, new_priority );
481dc: 2f02 movel %d2,%sp@- 481de: 2f0a movel %a2,%sp@- 481e0: 4eb9 0004 9038 jsr 49038 <_Thread_Set_priority> 481e6: 508f addql #8,%sp
_ISR_Disable( level );
481e8: 203c 0000 0700 movel #1792,%d0 481ee: 40c1 movew %sr,%d1 481f0: 8081 orl %d1,%d0 481f2: 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;
481f4: 202a 0010 movel %a2@(16),%d0
if ( state != STATES_TRANSIENT ) {
481f8: 7404 moveq #4,%d2 481fa: b480 cmpl %d0,%d2
481fc: 6738 beqs 48236 <_Thread_Change_priority+0x82>
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
481fe: 44c3 movew %d3,%ccr
48200: 6708 beqs 4820a <_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);
48202: 74fb moveq #-5,%d2 48204: c480 andl %d0,%d2 48206: 2542 0010 movel %d2,%a2@(16)
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
4820a: 46c1 movew %d1,%sr
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
4820c: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( state ) ) {
48212: 660a bnes 4821e <_Thread_Change_priority+0x6a>
if ( !_Thread_Is_executing_also_the_heir() &&
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
48214: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 4821a: 4e5e unlk %fp 4821c: 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 );
4821e: 2d4a 000c movel %a2,%fp@(12) 48222: 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 );
}
48228: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 4822e: 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 );
48230: 4ef9 0004 8f8c jmp 48f8c <_Thread_queue_Requeue>
}
return;
}
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) ) {
48236: 44c3 movew %d3,%ccr
48238: 673c beqs 48276 <_Thread_Change_priority+0xc2> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
4823a: 206a 008e moveal %a2@(142),%a0 4823e: 302a 0094 movew %a2@(148),%d0 48242: 3410 movew %a0@,%d2
* 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 );
48244: 42aa 0010 clrl %a2@(16) 48248: 8082 orl %d2,%d0 4824a: 3080 movew %d0,%a0@
_Priority_Major_bit_map |= the_priority_map->ready_major;
4824c: 3439 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d2 48252: 302a 0092 movew %a2@(146),%d0 48256: 8082 orl %d2,%d0 48258: 33c0 0005 fd2c movew %d0,5fd2c <_Priority_Major_bit_map>
_Priority_bit_map_Add( &the_thread->Priority_map );
if ( prepend_it )
4825e: 4a04 tstb %d4 48260: 6700 0082 beqw 482e4 <_Thread_Change_priority+0x130>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Head(
Chain_Control *the_chain
)
{
return (Chain_Node *) the_chain;
48264: 206a 008a moveal %a2@(138),%a0
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
48268: 2250 moveal %a0@,%a1
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4826a: 2548 0004 movel %a0,%a2@(4)
before_node = after_node->next; after_node->next = the_node;
4826e: 208a movel %a2,%a0@
the_node->next = before_node; before_node->previous = the_node;
48270: 234a 0004 movel %a2,%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;
48274: 2489 movel %a1,%a2@
_Chain_Prepend_unprotected( the_thread->ready, &the_thread->Object.Node );
else
_Chain_Append_unprotected( the_thread->ready, &the_thread->Object.Node );
}
_ISR_Flash( level );
48276: 203c 0000 0700 movel #1792,%d0 4827c: 46c1 movew %d1,%sr 4827e: 8081 orl %d1,%d0 48280: 46c0 movew %d0,%sr
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 );
48282: 3039 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d0 48288: 4840 swap %d0 4828a: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4828c: 4282 clrl %d2 4828e: 41f9 0005 fd94 lea 5fd94 <_Priority_Bit_map>,%a0 48294: 3400 movew %d0,%d2 48296: 3030 2a00 movew %a0@(00000000,%d2:l:2),%d0 4829a: 4840 swap %d0 4829c: 04c0 ff1 %d0
return (_Priority_Bits_index( major ) << 4) +
4829e: 4283 clrl %d3 482a0: e98a lsll #4,%d2 482a2: 3600 movew %d0,%d3
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
_Thread_Ready_chain[ _Priority_bit_map_Get_highest() ].first;
482a4: 2279 0005 fc40 moveal 5fc40 <_Thread_Ready_chain>,%a1 482aa: 2002 movel %d2,%d0 482ac: d083 addl %d3,%d0 482ae: 2400 movel %d0,%d2 482b0: e58a lsll #2,%d2 482b2: e988 lsll #4,%d0
* is also the heir thread, and false otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void )
{
return ( _Thread_Executing == _Thread_Heir );
482b4: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
_Thread_Ready_chain[ _Priority_bit_map_Get_highest() ].first;
482ba: 93c2 subal %d2,%a1
* ready thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
482bc: 2031 0800 movel %a1@(00000000,%d0:l),%d0 482c0: 23c0 0006 0120 movel %d0,60120 <_Per_CPU_Information+0x10>
* We altered the set of thread priorities. So let's figure out
* who is the heir and if we need to switch to them.
*/
_Thread_Calculate_heir();
if ( !_Thread_Is_executing_also_the_heir() &&
482c6: b1c0 cmpal %d0,%a0
482c8: 670e beqs 482d8 <_Thread_Change_priority+0x124>
482ca: 4a28 0074 tstb %a0@(116)
482ce: 6708 beqs 482d8 <_Thread_Change_priority+0x124> <== NEVER TAKEN
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
482d0: 7401 moveq #1,%d2 482d2: 13c2 0006 0128 moveb %d2,60128 <_Per_CPU_Information+0x18>
_ISR_Enable( level );
482d8: 46c1 movew %d1,%sr
}
482da: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 482e0: 4e5e unlk %fp 482e2: 4e75 rts
_Priority_bit_map_Add( &the_thread->Priority_map );
if ( prepend_it )
_Chain_Prepend_unprotected( the_thread->ready, &the_thread->Object.Node );
else
_Chain_Append_unprotected( the_thread->ready, &the_thread->Object.Node );
482e4: 206a 008a moveal %a2@(138),%a0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
482e8: 2008 movel %a0,%d0 482ea: 5880 addql #4,%d0
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
482ec: 2268 0008 moveal %a0@(8),%a1
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
482f0: 2480 movel %d0,%a2@
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
the_chain->last = the_node;
482f2: 214a 0008 movel %a2,%a0@(8)
old_last_node->next = the_node;
482f6: 228a movel %a2,%a1@
the_node->previous = old_last_node;
482f8: 2549 0004 movel %a1,%a2@(4) 482fc: 6000 ff78 braw 48276 <_Thread_Change_priority+0xc2>
00048300 <_Thread_Clear_state>:
)
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
48300: 327c 0700 moveaw #1792,%a1 48304: 2009 movel %a1,%d0
void _Thread_Clear_state(
Thread_Control *the_thread,
States_Control state
)
{
48306: 4e56 ffec linkw %fp,#-20 4830a: 206e 0008 moveal %fp@(8),%a0 4830e: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ 48312: 242e 000c movel %fp@(12),%d2
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
48316: 40c3 movew %sr,%d3 48318: 8083 orl %d3,%d0 4831a: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
4831c: 2228 0010 movel %a0@(16),%d1
if ( current_state & state ) {
48320: 2002 movel %d2,%d0 48322: c081 andl %d1,%d0
48324: 6776 beqs 4839c <_Thread_Clear_state+0x9c> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
48326: 2002 movel %d2,%d0 48328: 4680 notl %d0 4832a: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear( state, current_state );
4832c: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
48330: 666a bnes 4839c <_Thread_Clear_state+0x9c> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
48332: 2868 008e moveal %a0@(142),%a4
_Priority_bit_map_Add( &the_thread->Priority_map );
_Chain_Append_unprotected(the_thread->ready, &the_thread->Object.Node);
48336: 2468 008a moveal %a0@(138),%a2 4833a: 3214 movew %a4@,%d1 4833c: 3028 0094 movew %a0@(148),%d0
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
48340: 266a 0008 moveal %a2@(8),%a3 48344: 8081 orl %d1,%d0 48346: 3880 movew %d0,%a4@
_Priority_Major_bit_map |= the_priority_map->ready_major;
48348: 3239 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d1 4834e: 3028 0092 movew %a0@(146),%d0 48352: 8081 orl %d1,%d0 48354: 33c0 0005 fd2c movew %d0,5fd2c <_Priority_Major_bit_map>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4835a: 200a movel %a2,%d0 4835c: 5880 addql #4,%d0 4835e: 2080 movel %d0,%a0@
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
the_chain->last = the_node;
48360: 2548 0008 movel %a0,%a2@(8)
old_last_node->next = the_node;
48364: 2688 movel %a0,%a3@
the_node->previous = old_last_node;
48366: 214b 0004 movel %a3,%a0@(4)
_ISR_Flash( level );
4836a: 2009 movel %a1,%d0 4836c: 46c3 movew %d3,%sr 4836e: 8083 orl %d3,%d0 48370: 46c0 movew %d0,%sr
* 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 ( the_thread->current_priority < _Thread_Heir->current_priority ) {
48372: 2028 0014 movel %a0@(20),%d0 48376: 2279 0006 0120 moveal 60120 <_Per_CPU_Information+0x10>,%a1 4837c: b0a9 0014 cmpl %a1@(20),%d0
48380: 641a bccs 4839c <_Thread_Clear_state+0x9c>
_Thread_Heir = the_thread;
48382: 23c8 0006 0120 movel %a0,60120 <_Per_CPU_Information+0x10>
if ( _Thread_Executing->is_preemptible ||
48388: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 4838e: 4a28 0074 tstb %a0@(116)
48392: 6712 beqs 483a6 <_Thread_Clear_state+0xa6>
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
48394: 7001 moveq #1,%d0 48396: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18>
}
}
}
_ISR_Enable( level );
4839c: 46c3 movew %d3,%sr
}
4839e: 4cd7 1c0c moveml %sp@,%d2-%d3/%a2-%a4 483a2: 4e5e unlk %fp 483a4: 4e75 rts
* 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 ( the_thread->current_priority < _Thread_Heir->current_priority ) {
_Thread_Heir = the_thread;
if ( _Thread_Executing->is_preemptible ||
483a6: 4a80 tstl %d0
483a8: 66f2 bnes 4839c <_Thread_Clear_state+0x9c> <== ALWAYS TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
483aa: 7001 moveq #1,%d0 <== NOT EXECUTED 483ac: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18> <== NOT EXECUTED 483b2: 60e8 bras 4839c <_Thread_Clear_state+0x9c> <== NOT EXECUTED
000483b4 <_Thread_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
483b4: 4280 clrl %d0
void _Thread_Close(
Objects_Information *information,
Thread_Control *the_thread
)
{
483b6: 4e56 0000 linkw %fp,#0 483ba: 2f0b movel %a3,%sp@- 483bc: 266e 0008 moveal %fp@(8),%a3 483c0: 2f0a movel %a2,%sp@- 483c2: 246e 000c moveal %fp@(12),%a2
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483c6: 206b 0018 moveal %a3@(24),%a0
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
483ca: 302a 000a movew %a2@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483ce: 42b0 0c00 clrl %a0@(00000000,%d0:l:4)
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
483d2: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0 483d8: 5380 subql #1,%d0
* disappear and set a transient state on it. So we temporarily
* unnest dispatching.
*/
_Thread_Unnest_dispatch();
_User_extensions_Thread_delete( the_thread );
483da: 2f0a movel %a2,%sp@- 483dc: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level> 483e2: 4eb9 0004 9820 jsr 49820 <_User_extensions_Thread_delete>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
483e8: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0 483ee: 5280 addql #1,%d0 483f0: 23c0 0005 fc8c movel %d0,5fc8c <_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 );
483f6: 2f0a movel %a2,%sp@- 483f8: 2f0b movel %a3,%sp@- 483fa: 4eb9 0004 79a8 jsr 479a8 <_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 );
48400: 4878 0001 pea 1 <ADD> 48404: 2f0a movel %a2,%sp@- 48406: 4eb9 0004 90a8 jsr 490a8 <_Thread_Set_state>
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
4840c: 2f0a movel %a2,%sp@- 4840e: 4eb9 0004 8e88 jsr 48e88 <_Thread_queue_Extract_with_proxy> 48414: 4fef 0018 lea %sp@(24),%sp 48418: 4a00 tstb %d0
4841a: 6608 bnes 48424 <_Thread_Close+0x70> <== NEVER TAKEN
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4841c: 7002 moveq #2,%d0 4841e: b0aa 0050 cmpl %a2@(80),%d0
48422: 6756 beqs 4847a <_Thread_Close+0xc6> <== NEVER TAKEN
/* * 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 ) )
48424: b5f9 0005 fd0e cmpal 5fd0e <_Thread_Allocated_fp>,%a2
4842a: 6746 beqs 48472 <_Thread_Close+0xbe> <== NEVER TAKEN
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
if ( the_thread->Start.fp_context )
4842c: 202a 00c6 movel %a2@(198),%d0
#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;
48430: 42aa 0102 clrl %a2@(258)
if ( the_thread->Start.fp_context )
48434: 4a80 tstl %d0
48436: 670a beqs 48442 <_Thread_Close+0x8e> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->Start.fp_context );
48438: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4843a: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 48440: 588f addql #4,%sp <== NOT EXECUTED
/*
* Free the rest of the memory associated with this task
* and set the associated pointers to NULL for safety.
*/
_Thread_Stack_Free( the_thread );
48442: 2f0a movel %a2,%sp@- 48444: 4eb9 0004 92a4 jsr 492a4 <_Thread_Stack_Free>
the_thread->Start.stack = NULL;
if ( the_thread->extensions )
4844a: 202a 0112 movel %a2@(274),%d0 4844e: 588f addql #4,%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;
48450: 42aa 00ca clrl %a2@(202)
if ( the_thread->extensions )
48454: 4a80 tstl %d0
48456: 670a beqs 48462 <_Thread_Close+0xae> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->extensions );
48458: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4845a: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 48460: 588f addql #4,%sp <== NOT EXECUTED
the_thread->extensions = NULL;
48462: 42aa 0112 clrl %a2@(274)
}
48466: 246e fff8 moveal %fp@(-8),%a2 4846a: 266e fffc moveal %fp@(-4),%a3 4846e: 4e5e unlk %fp 48470: 4e75 rts
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
{
_Thread_Allocated_fp = NULL;
48472: 42b9 0005 fd0e clrl 5fd0e <_Thread_Allocated_fp> <== NOT EXECUTED 48478: 60b2 bras 4842c <_Thread_Close+0x78> <== NOT EXECUTED
*/
_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 );
4847a: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4847e: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> <== NOT EXECUTED 48484: 588f addql #4,%sp <== NOT EXECUTED
/* * 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 ) )
48486: b5f9 0005 fd0e cmpal 5fd0e <_Thread_Allocated_fp>,%a2 <== NOT EXECUTED 4848c: 669e bnes 4842c <_Thread_Close+0x78> <== NOT EXECUTED 4848e: 60e2 bras 48472 <_Thread_Close+0xbe> <== NOT EXECUTED
00048540 <_Thread_Delay_ended>:
void _Thread_Delay_ended(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
48540: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
48544: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48548: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4854c: 4eb9 0004 870c jsr 4870c <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48552: 508f addql #8,%sp <== NOT EXECUTED 48554: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48558: 661e bnes 48578 <_Thread_Delay_ended+0x38> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_Clear_state(
4855a: 2f3c 1000 0018 movel #268435480,%sp@- <== NOT EXECUTED 48560: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48562: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> <== NOT EXECUTED 48568: 508f addql #8,%sp <== NOT EXECUTED 4856a: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48570: 5380 subql #1,%d0 <== NOT EXECUTED 48572: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
| STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Thread_Unnest_dispatch();
break;
}
}
48578: 4e5e unlk %fp <== NOT EXECUTED
0004857c <_Thread_Dispatch>:
* dispatch thread
* no dispatch thread
*/
void _Thread_Dispatch( void )
{
4857c: 4e56 ffc8 linkw %fp,#-56 48580: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
48584: 283c 0000 0700 movel #1792,%d4 4858a: 2004 movel %d4,%d0
{
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
4858c: 2479 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
48592: 40c1 movew %sr,%d1 48594: 8081 orl %d1,%d0 48596: 46c0 movew %d0,%sr
while ( _Thread_Dispatch_necessary == true ) {
48598: 1039 0006 0128 moveb 60128 <_Per_CPU_Information+0x18>,%d0 4859e: 6700 0120 beqw 486c0 <_Thread_Dispatch+0x144>
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
485a2: 7001 moveq #1,%d0 485a4: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level>
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
485aa: 2679 0006 0120 moveal 60120 <_Per_CPU_Information+0x10>,%a3
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
485b0: 4200 clrb %d0
_Thread_Executing = heir;
485b2: 23cb 0006 011c movel %a3,6011c <_Per_CPU_Information+0xc>
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
485b8: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18>
/*
* 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 )
485be: b7ca cmpal %a2,%a3 485c0: 6700 00fe beqw 486c0 <_Thread_Dispatch+0x144> 485c4: 260e movel %fp,%d3 485c6: 240e movel %fp,%d2 485c8: 5183 subql #8,%d3 485ca: 2e3c 0004 c5ec movel #312812,%d7 485d0: 0682 ffff fff0 addil #-16,%d2 485d6: 2c3c 0004 95e4 movel #300516,%d6 485dc: 2a3c 0004 959c movel #300444,%d5 485e2: 4bf9 0004 98ac lea 498ac <_User_extensions_Thread_switch>,%a5 485e8: 49f9 0004 9c20 lea 49c20 <_CPU_Context_switch>,%a4
*/
#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 )
485ee: 7001 moveq #1,%d0 485f0: b0ab 007a cmpl %a3@(122),%d0 485f4: 6700 00e2 beqw 486d8 <_Thread_Dispatch+0x15c>
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
_ISR_Enable( level );
485f8: 46c1 movew %d1,%sr
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
485fa: 2f03 movel %d3,%sp@- 485fc: 2047 moveal %d7,%a0 485fe: 4e90 jsr %a0@
_Timestamp_Subtract(
48600: 2046 moveal %d6,%a0 48602: 2f02 movel %d2,%sp@- 48604: 2f03 movel %d3,%sp@- 48606: 4879 0005 fd3a pea 5fd3a <_Thread_Time_of_last_context_switch> 4860c: 4e90 jsr %a0@
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
4860e: 2045 moveal %d5,%a0 48610: 2f02 movel %d2,%sp@- 48612: 486a 0082 pea %a2@(130) 48616: 4e90 jsr %a0@
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
48618: 2079 0005 fd12 moveal 5fd12 <_Thread_libc_reent>,%a0 4861e: 4fef 0018 lea %sp@(24),%sp
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
_Thread_Time_of_last_context_switch = uptime;
48622: 202e fff8 movel %fp@(-8),%d0 48626: 222e fffc movel %fp@(-4),%d1 4862a: 23c0 0005 fd3a movel %d0,5fd3a <_Thread_Time_of_last_context_switch> 48630: 23c1 0005 fd3e movel %d1,5fd3e <_Thread_Time_of_last_context_switch+0x4>
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
48636: 4a88 tstl %a0
48638: 6708 beqs 48642 <_Thread_Dispatch+0xc6> <== NEVER TAKEN
executing->libc_reent = *_Thread_libc_reent;
4863a: 2550 0106 movel %a0@,%a2@(262)
*_Thread_libc_reent = heir->libc_reent;
4863e: 20ab 0106 movel %a3@(262),%a0@
}
_User_extensions_Thread_switch( executing, heir );
48642: 2f0b movel %a3,%sp@- 48644: 2f0a movel %a2,%sp@- 48646: 4e95 jsr %a5@
if ( executing->fp_context != NULL )
_Context_Save_fp( &executing->fp_context );
#endif
#endif
_Context_Switch( &executing->Registers, &heir->Registers );
48648: 486b 00ce pea %a3@(206) 4864c: 486a 00ce pea %a2@(206) 48650: 4e94 jsr %a4@
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
48652: 4fef 0010 lea %sp@(16),%sp 48656: 4aaa 0102 tstl %a2@(258)
4865a: 672c beqs 48688 <_Thread_Dispatch+0x10c> <== ALWAYS TAKEN
#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 );
4865c: 2079 0005 fd0e moveal 5fd0e <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED 48662: b1ca cmpal %a2,%a0 <== NOT EXECUTED 48664: 6722 beqs 48688 <_Thread_Dispatch+0x10c> <== NOT EXECUTED
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
48666: 4a88 tstl %a0 <== NOT EXECUTED 48668: 670c beqs 48676 <_Thread_Dispatch+0xfa> <== NOT EXECUTED
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4866a: 4868 0102 pea %a0@(258) <== NOT EXECUTED 4866e: 4eb9 0004 9d46 jsr 49d46 <_CPU_Context_save_fp> <== NOT EXECUTED 48674: 588f addql #4,%sp <== NOT EXECUTED
_Context_Restore_fp( &executing->fp_context );
48676: 486a 0102 pea %a2@(258) <== NOT EXECUTED 4867a: 4eb9 0004 9d7e jsr 49d7e <_CPU_Context_restore_fp> <== NOT EXECUTED
_Thread_Allocated_fp = executing;
48680: 588f addql #4,%sp <== NOT EXECUTED 48682: 23ca 0005 fd0e movel %a2,5fd0e <_Thread_Allocated_fp> <== NOT EXECUTED
if ( executing->fp_context != NULL )
_Context_Restore_fp( &executing->fp_context );
#endif
#endif
executing = _Thread_Executing;
48688: 2479 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
4868e: 2004 movel %d4,%d0 48690: 40c1 movew %sr,%d1 48692: 8081 orl %d1,%d0 48694: 46c0 movew %d0,%sr
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
48696: 1039 0006 0128 moveb 60128 <_Per_CPU_Information+0x18>,%d0
4869c: 6722 beqs 486c0 <_Thread_Dispatch+0x144> <== ALWAYS TAKEN
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
4869e: 7001 moveq #1,%d0 <== NOT EXECUTED 486a0: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
486a6: 2679 0006 0120 moveal 60120 <_Per_CPU_Information+0x10>,%a3<== NOT EXECUTED
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
486ac: 4200 clrb %d0 <== NOT EXECUTED
_Thread_Executing = heir;
486ae: 23cb 0006 011c movel %a3,6011c <_Per_CPU_Information+0xc> <== NOT EXECUTED
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
486b4: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18> <== NOT EXECUTED
/*
* 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 )
486ba: b5cb cmpal %a3,%a2 <== NOT EXECUTED 486bc: 6600 ff30 bnew 485ee <_Thread_Dispatch+0x72> <== NOT EXECUTED
_ISR_Disable( level );
}
post_switch:
_Thread_Dispatch_disable_level = 0;
486c0: 42b9 0005 fc8c clrl 5fc8c <_Thread_Dispatch_disable_level>
_ISR_Enable( level );
486c6: 46c1 movew %d1,%sr
_API_extensions_Run_postswitch();
486c8: 4eb9 0004 6db6 jsr 46db6 <_API_extensions_Run_postswitch>
}
486ce: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 486d4: 4e5e unlk %fp 486d6: 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;
486d8: 41f9 0005 fc44 lea 5fc44 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 486de: 2750 0076 movel %a0@,%a3@(118) <== NOT EXECUTED 486e2: 6000 ff14 braw 485f8 <_Thread_Dispatch+0x7c> <== NOT EXECUTED
0004870c <_Thread_Get>:
*/
Thread_Control *_Thread_Get (
Objects_Id id,
Objects_Locations *location
)
{
4870c: 4e56 0000 linkw %fp,#0 48710: 202e 0008 movel %fp@(8),%d0 48714: 2f03 movel %d3,%sp@- 48716: 206e 000c moveal %fp@(12),%a0 4871a: 2f02 movel %d2,%sp@-
uint32_t the_class;
Objects_Information **api_information;
Objects_Information *information;
Thread_Control *tp = (Thread_Control *) 0;
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) {
4871c: 4a80 tstl %d0
4871e: 6762 beqs 48782 <_Thread_Get+0x76>
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
48720: 7418 moveq #24,%d2 48722: 2200 movel %d0,%d1 48724: e4a9 lsrl %d2,%d1 48726: 7607 moveq #7,%d3
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
48728: 143c 0002 moveb #2,%d2
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
4872c: c283 andl %d3,%d1
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
4872e: 2241 moveal %d1,%a1 48730: 5389 subql #1,%a1 48732: b489 cmpl %a1,%d2
48734: 653a bcss 48770 <_Thread_Get+0x64> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
48736: 761b moveq #27,%d3 48738: 2400 movel %d0,%d2 4873a: e6aa lsrl %d3,%d2
*location = OBJECTS_ERROR;
goto done;
}
the_class = _Objects_Get_class( id );
if ( the_class != 1 ) { /* threads are always first class :) */
4873c: 163c 0001 moveb #1,%d3 48740: b682 cmpl %d2,%d3
48742: 662c bnes 48770 <_Thread_Get+0x64> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
api_information = _Objects_Information_table[ the_api ];
48744: 43f9 0005 fc48 lea 5fc48 <_Objects_Information_table>,%a1
*location = OBJECTS_ERROR;
goto done;
}
#endif
information = api_information[ the_class ];
4874a: 2271 1c00 moveal %a1@(00000000,%d1:l:4),%a1 4874e: 2229 0004 movel %a1@(4),%d1
if ( !information ) {
48752: 671c beqs 48770 <_Thread_Get+0x64> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
48754: 2f08 movel %a0,%sp@- 48756: 2f00 movel %d0,%sp@- 48758: 2f01 movel %d1,%sp@- 4875a: 4eb9 0004 7dd8 jsr 47dd8 <_Objects_Get>
done:
return tp;
}
48760: 242e fff8 movel %fp@(-8),%d2
if ( !information ) {
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
48764: 4fef 000c lea %sp@(12),%sp
done:
return tp;
}
48768: 262e fffc movel %fp@(-4),%d3 4876c: 4e5e unlk %fp 4876e: 4e75 rts
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
48770: 7001 moveq #1,%d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
48772: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48776: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4877a: 4e5e unlk %fp <== NOT EXECUTED
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
4877c: 2080 movel %d0,%a0@ <== NOT EXECUTED
{
uint32_t the_api;
uint32_t the_class;
Objects_Information **api_information;
Objects_Information *information;
Thread_Control *tp = (Thread_Control *) 0;
4877e: 4280 clrl %d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
48780: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
48782: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0 48788: 5280 addql #1,%d0 4878a: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level> 48790: 242e fff8 movel %fp@(-8),%d2 48794: 262e fffc movel %fp@(-4),%d3 48798: 4e5e unlk %fp
Thread_Control *tp = (Thread_Control *) 0;
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) {
_Thread_Disable_dispatch();
*location = OBJECTS_LOCAL;
tp = _Thread_Executing;
4879a: 2039 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%d0
Objects_Information *information;
Thread_Control *tp = (Thread_Control *) 0;
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) {
_Thread_Disable_dispatch();
*location = OBJECTS_LOCAL;
487a0: 4290 clrl %a0@ <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
0004e6b0 <_Thread_Handler>:
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4e6b0: 4e56 0000 linkw %fp,#0 4e6b4: 2f0a movel %a2,%sp@-
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
static char doneConstructors;
char doneCons;
#endif
executing = _Thread_Executing;
4e6b6: 2479 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a2
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4e6bc: 2f02 movel %d2,%sp@-
/*
* have to put level into a register for those cpu's that use
* inline asm here
*/
level = executing->Start.isr_level;
4e6be: 222a 00b4 movel %a2@(180),%d1
_ISR_Set_level(level);
4e6c2: 40c0 movew %sr,%d0 4e6c4: e189 lsll #8,%d1 4e6c6: 0280 0000 f8ff andil #63743,%d0 4e6cc: 8081 orl %d1,%d0 4e6ce: 46c0 movew %d0,%sr
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
doneConstructors = 1;
4e6d0: 7001 moveq #1,%d0
level = executing->Start.isr_level;
_ISR_Set_level(level);
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
4e6d2: 1439 0005 f448 moveb 5f448 <doneConstructors.3283>,%d2
doneConstructors = 1;
4e6d8: 13c0 0005 f448 moveb %d0,5f448 <doneConstructors.3283>
#endif
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4e6de: 4aaa 0102 tstl %a2@(258)
4e6e2: 6720 beqs 4e704 <_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 );
4e6e4: 2079 0005 fd0e moveal 5fd0e <_Thread_Allocated_fp>,%a0 4e6ea: b1ca cmpal %a2,%a0
4e6ec: 6716 beqs 4e704 <_Thread_Handler+0x54> <== NEVER TAKEN
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
4e6ee: 4a88 tstl %a0
4e6f0: 670c beqs 4e6fe <_Thread_Handler+0x4e> <== ALWAYS TAKEN
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4e6f2: 4868 0102 pea %a0@(258) <== NOT EXECUTED 4e6f6: 4eb9 0004 9d46 jsr 49d46 <_CPU_Context_save_fp> <== NOT EXECUTED 4e6fc: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Allocated_fp = executing;
4e6fe: 23ca 0005 fd0e movel %a2,5fd0e <_Thread_Allocated_fp>
/* * Take care that 'begin' extensions get to complete before * 'switch' extensions can run. This means must keep dispatch * disabled until all 'begin' extensions complete. */ _User_extensions_Thread_begin( executing );
4e704: 2f0a movel %a2,%sp@- 4e706: 4eb9 0004 96f8 jsr 496f8 <_User_extensions_Thread_begin>
/*
* At this point, the dispatch disable level BETTER be 1.
*/
_Thread_Enable_dispatch();
4e70c: 4eb9 0004 86e6 jsr 486e6 <_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 (!doneCons) /* && (volatile void *)_init) */ {
4e712: 588f addql #4,%sp 4e714: 4a02 tstb %d2
4e716: 6724 beqs 4e73c <_Thread_Handler+0x8c>
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4e718: 202a 009e movel %a2@(158),%d0
4e71c: 672a beqs 4e748 <_Thread_Handler+0x98> <== ALWAYS TAKEN
(*(Thread_Entry_numeric) executing->Start.entry_point)(
executing->Start.numeric_argument
);
}
#if defined(RTEMS_POSIX_API)
else if ( executing->Start.prototype == THREAD_START_POINTER ) {
4e71e: 7201 moveq #1,%d1 4e720: b280 cmpl %d0,%d1
4e722: 674c beqs 4e770 <_Thread_Handler+0xc0> <== ALWAYS TAKEN
* was placed in return_argument. This assumed that if it returned
* anything (which is not supporting in all APIs), then it would be
* able to fit in a (void *).
*/
_User_extensions_Thread_exitted( executing );
4e724: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e726: 4eb9 0004 9736 jsr 49736 <_User_extensions_Thread_exitted> <== NOT EXECUTED
_Internal_error_Occurred(
4e72c: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 4e730: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4e734: 42a7 clrl %sp@- <== NOT EXECUTED 4e736: 4eb9 0004 785c jsr 4785c <_Internal_error_Occurred> <== NOT EXECUTED
* _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 (!doneCons) /* && (volatile void *)_init) */ {
INIT_NAME ();
4e73c: 4eb9 0005 c894 jsr 5c894 <_init>
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4e742: 202a 009e movel %a2@(158),%d0
4e746: 66d6 bnes 4e71e <_Thread_Handler+0x6e>
executing->Wait.return_argument =
(*(Thread_Entry_numeric) executing->Start.entry_point)(
4e748: 2f2a 00a6 movel %a2@(166),%sp@- 4e74c: 206a 009a moveal %a2@(154),%a0 4e750: 4e90 jsr %a0@
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
4e752: 588f addql #4,%sp 4e754: 2540 0028 movel %d0,%a2@(40)
* was placed in return_argument. This assumed that if it returned
* anything (which is not supporting in all APIs), then it would be
* able to fit in a (void *).
*/
_User_extensions_Thread_exitted( executing );
4e758: 2f0a movel %a2,%sp@- 4e75a: 4eb9 0004 9736 jsr 49736 <_User_extensions_Thread_exitted>
_Internal_error_Occurred(
4e760: 4878 0005 pea 5 <COMPARE> 4e764: 4878 0001 pea 1 <ADD> 4e768: 42a7 clrl %sp@- 4e76a: 4eb9 0004 785c jsr 4785c <_Internal_error_Occurred>
);
}
#if defined(RTEMS_POSIX_API)
else if ( executing->Start.prototype == THREAD_START_POINTER ) {
executing->Wait.return_argument =
(*(Thread_Entry_pointer) executing->Start.entry_point)(
4e770: 2f2a 00a2 movel %a2@(162),%sp@- 4e774: 206a 009a moveal %a2@(154),%a0 4e778: 4e90 jsr %a0@
executing->Start.numeric_argument
);
}
#if defined(RTEMS_POSIX_API)
else if ( executing->Start.prototype == THREAD_START_POINTER ) {
executing->Wait.return_argument =
4e77a: 588f addql #4,%sp <== NOT EXECUTED 4e77c: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
* was placed in return_argument. This assumed that if it returned
* anything (which is not supporting in all APIs), then it would be
* able to fit in a (void *).
*/
_User_extensions_Thread_exitted( executing );
4e780: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e782: 4eb9 0004 9736 jsr 49736 <_User_extensions_Thread_exitted> <== NOT EXECUTED
_Internal_error_Occurred(
4e788: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 4e78c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4e790: 42a7 clrl %sp@- <== NOT EXECUTED 4e792: 4eb9 0004 785c jsr 4785c <_Internal_error_Occurred> <== NOT EXECUTED
000487a4 <_Thread_Initialize>:
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
487a4: 4e56 ffe4 linkw %fp,#-28 487a8: 202e 0010 movel %fp@(16),%d0 487ac: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ 487b0: 246e 000c moveal %fp@(12),%a2 487b4: 282e 0014 movel %fp@(20),%d4 487b8: 242e 001c movel %fp@(28),%d2 487bc: 262e 0024 movel %fp@(36),%d3 487c0: 1a2e 001b moveb %fp@(27),%d5 487c4: 1c2e 0023 moveb %fp@(35),%d6
/*
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
487c8: 42aa 010a clrl %a2@(266) 487cc: 42aa 010e clrl %a2@(270)
extensions_area = NULL;
the_thread->libc_reent = NULL;
487d0: 42aa 0106 clrl %a2@(262)
if ( !actual_stack_size || actual_stack_size < stack_size )
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
#else
if ( !stack_area ) {
487d4: 4a80 tstl %d0 487d6: 6700 01e8 beqw 489c0 <_Thread_Initialize+0x21c>
stack = the_thread->Start.stack;
the_thread->Start.core_allocated_stack = true;
} else {
stack = stack_area;
actual_stack_size = stack_size;
the_thread->Start.core_allocated_stack = false;
487da: 2204 movel %d4,%d1 <== NOT EXECUTED 487dc: 4204 clrb %d4 <== NOT EXECUTED 487de: 1544 00bc moveb %d4,%a2@(188) <== NOT EXECUTED
Stack_Control *the_stack,
void *starting_address,
size_t size
)
{
the_stack->area = starting_address;
487e2: 2540 00c2 movel %d0,%a2@(194)
the_stack->size = size;
487e6: 2541 00be movel %d1,%a2@(190)
/*
* Allocate the floating point area for this thread
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( is_fp ) {
487ea: 4a05 tstb %d5 487ec: 6600 016e bnew 4895c <_Thread_Initialize+0x1b8> 487f0: 4280 clrl %d0
extensions_area = NULL;
the_thread->libc_reent = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
fp_area = NULL;
487f2: 4284 clrl %d4
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
487f4: 2239 0005 fd1e movel 5fd1e <_Thread_Maximum_extensions>,%d1
fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
if ( !fp_area )
goto failed;
fp_area = _Context_Fp_start( fp_area, 0 );
}
the_thread->fp_context = fp_area;
487fa: 2540 0102 movel %d0,%a2@(258)
the_thread->Start.fp_context = fp_area;
487fe: 2540 00c6 movel %d0,%a2@(198)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48802: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
48806: 42aa 0064 clrl %a2@(100)
the_watchdog->id = id;
4880a: 42aa 0068 clrl %a2@(104)
the_watchdog->user_data = user_data;
4880e: 42aa 006c clrl %a2@(108)
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
48812: 4a81 tstl %d1 48814: 6600 0166 bnew 4897c <_Thread_Initialize+0x1d8>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48818: 42aa 0112 clrl %a2@(274)
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
4881c: 97cb subal %a3,%a3
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
the_thread->Start.budget_algorithm = budget_algorithm;
4881e: 2543 00ac movel %d3,%a2@(172)
the_thread->Start.budget_callout = budget_callout;
switch ( budget_algorithm ) {
48822: 7002 moveq #2,%d0
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
48824: 1546 00aa moveb %d6,%a2@(170)
the_thread->Start.budget_algorithm = budget_algorithm; the_thread->Start.budget_callout = budget_callout;
48828: 256e 0028 00b0 movel %fp@(40),%a2@(176)
switch ( budget_algorithm ) {
4882e: b083 cmpl %d3,%d0 48830: 6700 00c6 beqw 488f8 <_Thread_Initialize+0x154>
the_thread->current_state = STATES_DORMANT; the_thread->Wait.queue = NULL; the_thread->resource_count = 0; the_thread->real_priority = priority; the_thread->Start.initial_priority = priority; _Thread_Set_priority( the_thread, priority );
48834: 2f02 movel %d2,%sp@-
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
break;
#endif
}
the_thread->Start.isr_level = isr_level;
48836: 256e 002c 00b4 movel %fp@(44),%a2@(180)
the_thread->current_state = STATES_DORMANT;
4883c: 7001 moveq #1,%d0
the_thread->Wait.queue = NULL; the_thread->resource_count = 0; the_thread->real_priority = priority; the_thread->Start.initial_priority = priority; _Thread_Set_priority( the_thread, priority );
4883e: 2f0a movel %a2,%sp@-
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
48840: 2540 0010 movel %d0,%a2@(16)
the_thread->Wait.queue = NULL;
48844: 42aa 0044 clrl %a2@(68)
the_thread->resource_count = 0;
48848: 42aa 001c clrl %a2@(28)
the_thread->real_priority = priority;
4884c: 2542 0018 movel %d2,%a2@(24)
the_thread->Start.initial_priority = priority;
48850: 2542 00b8 movel %d2,%a2@(184)
_Thread_Set_priority( the_thread, priority );
48854: 4eb9 0004 9038 jsr 49038 <_Thread_Set_priority>
_Thread_Stack_Free( the_thread );
return false;
}
4885a: 206e 0008 moveal %fp@(8),%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4885e: 4280 clrl %d0 48860: 2068 0018 moveal %a0@(24),%a0 48864: 302a 000a movew %a2@(10),%d0
/*
* Initialize the CPU usage statistics
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Set_to_zero( &the_thread->cpu_time_used );
48868: 42aa 0082 clrl %a2@(130) 4886c: 42aa 0086 clrl %a2@(134)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48870: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
48874: 256e 0030 000c movel %fp@(48),%a2@(12)
* enabled when we get here. We want to be able to run the * user extensions with dispatching enabled. The Allocator * Mutex provides sufficient protection to let the user extensions * run safely. */ extension_status = _User_extensions_Thread_create( the_thread );
4887a: 2f0a movel %a2,%sp@- 4887c: 4eb9 0004 97c8 jsr 497c8 <_User_extensions_Thread_create>
if ( extension_status )
48882: 4fef 000c lea %sp@(12),%sp 48886: 4a00 tstb %d0
48888: 6662 bnes 488ec <_Thread_Initialize+0x148> <== ALWAYS TAKEN
return true;
failed:
if ( the_thread->libc_reent )
4888a: 202a 0106 movel %a2@(262),%d0 <== NOT EXECUTED 4888e: 670a beqs 4889a <_Thread_Initialize+0xf6> <== NOT EXECUTED
_Workspace_Free( the_thread->libc_reent );
48890: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48892: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 48898: 588f addql #4,%sp <== NOT EXECUTED
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
if ( the_thread->API_Extensions[i] )
4889a: 202a 010a movel %a2@(266),%d0 <== NOT EXECUTED 4889e: 670a beqs 488aa <_Thread_Initialize+0x106> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
488a0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 488a2: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 488a8: 588f addql #4,%sp <== NOT EXECUTED
failed:
if ( the_thread->libc_reent )
_Workspace_Free( the_thread->libc_reent );
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
if ( the_thread->API_Extensions[i] )
488aa: 202a 010e movel %a2@(270),%d0 <== NOT EXECUTED 488ae: 670a beqs 488ba <_Thread_Initialize+0x116> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
488b0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 488b2: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 488b8: 588f addql #4,%sp <== NOT EXECUTED
if ( extensions_area )
488ba: 4a8b tstl %a3 <== NOT EXECUTED 488bc: 670a beqs 488c8 <_Thread_Initialize+0x124> <== NOT EXECUTED
(void) _Workspace_Free( extensions_area );
488be: 2f0b movel %a3,%sp@- <== NOT EXECUTED 488c0: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 488c6: 588f addql #4,%sp <== NOT EXECUTED
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( fp_area )
488c8: 4a84 tstl %d4 <== NOT EXECUTED 488ca: 670a beqs 488d6 <_Thread_Initialize+0x132> <== NOT EXECUTED
(void) _Workspace_Free( fp_area );
488cc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 488ce: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> <== NOT EXECUTED 488d4: 588f addql #4,%sp <== NOT EXECUTED
#endif
_Thread_Stack_Free( the_thread );
488d6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 488d8: 4eb9 0004 92a4 jsr 492a4 <_Thread_Stack_Free> <== NOT EXECUTED
return false;
488de: 588f addql #4,%sp <== NOT EXECUTED
}
488e0: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
if ( fp_area )
(void) _Workspace_Free( fp_area );
#endif
_Thread_Stack_Free( the_thread );
return false;
488e6: 4200 clrb %d0 <== NOT EXECUTED
}
488e8: 4e5e unlk %fp <== NOT EXECUTED 488ea: 4e75 rts <== NOT EXECUTED
488ec: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
* Mutex provides sufficient protection to let the user extensions
* run safely.
*/
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
488f2: 7001 moveq #1,%d0
_Thread_Stack_Free( the_thread );
return false;
}
488f4: 4e5e unlk %fp 488f6: 4e75 rts
case THREAD_CPU_BUDGET_ALGORITHM_NONE:
case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:
break;
#if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)
case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:
the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;
488f8: 41f9 0005 fc44 lea 5fc44 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
488fe: 7001 moveq #1,%d0 <== NOT EXECUTED
case THREAD_CPU_BUDGET_ALGORITHM_NONE:
case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:
break;
#if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)
case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:
the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;
48900: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
the_thread->current_state = STATES_DORMANT; the_thread->Wait.queue = NULL; the_thread->resource_count = 0; the_thread->real_priority = priority; the_thread->Start.initial_priority = priority; _Thread_Set_priority( the_thread, priority );
48904: 2f02 movel %d2,%sp@- <== NOT EXECUTED
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
break;
#endif
}
the_thread->Start.isr_level = isr_level;
48906: 256e 002c 00b4 movel %fp@(44),%a2@(180) <== NOT EXECUTED
the_thread->current_state = STATES_DORMANT; the_thread->Wait.queue = NULL; the_thread->resource_count = 0; the_thread->real_priority = priority; the_thread->Start.initial_priority = priority; _Thread_Set_priority( the_thread, priority );
4890c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
4890e: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
the_thread->Wait.queue = NULL;
48912: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
the_thread->resource_count = 0;
48916: 42aa 001c clrl %a2@(28) <== NOT EXECUTED
the_thread->real_priority = priority;
4891a: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED
the_thread->Start.initial_priority = priority;
4891e: 2542 00b8 movel %d2,%a2@(184) <== NOT EXECUTED
_Thread_Set_priority( the_thread, priority );
48922: 4eb9 0004 9038 jsr 49038 <_Thread_Set_priority> <== NOT EXECUTED
_Thread_Stack_Free( the_thread );
return false;
}
48928: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4892c: 4280 clrl %d0 <== NOT EXECUTED 4892e: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 48932: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
/*
* Initialize the CPU usage statistics
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Set_to_zero( &the_thread->cpu_time_used );
48936: 42aa 0082 clrl %a2@(130) <== NOT EXECUTED 4893a: 42aa 0086 clrl %a2@(134) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4893e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
48942: 256e 0030 000c movel %fp@(48),%a2@(12) <== NOT EXECUTED
* enabled when we get here. We want to be able to run the * user extensions with dispatching enabled. The Allocator * Mutex provides sufficient protection to let the user extensions * run safely. */ extension_status = _User_extensions_Thread_create( the_thread );
48948: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4894a: 4eb9 0004 97c8 jsr 497c8 <_User_extensions_Thread_create> <== NOT EXECUTED
if ( extension_status )
48950: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48954: 4a00 tstb %d0 <== NOT EXECUTED 48956: 6700 ff32 beqw 4888a <_Thread_Initialize+0xe6> <== NOT EXECUTED 4895a: 6090 bras 488ec <_Thread_Initialize+0x148> <== NOT EXECUTED
/*
* Allocate the floating point area for this thread
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( is_fp ) {
fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
4895c: 4878 001c pea 1c <OPER2+0x8> 48960: 4eb9 0004 9bb6 jsr 49bb6 <_Workspace_Allocate>
if ( !fp_area )
48966: 588f addql #4,%sp
/*
* Allocate the floating point area for this thread
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( is_fp ) {
fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
48968: 2800 movel %d0,%d4
if ( !fp_area )
4896a: 6600 fe88 bnew 487f4 <_Thread_Initialize+0x50>
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
4896e: 202a 0106 movel %a2@(262),%d0 <== NOT EXECUTED
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
48972: 97cb subal %a3,%a3 <== NOT EXECUTED
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48974: 6600 ff1a bnew 48890 <_Thread_Initialize+0xec> <== NOT EXECUTED 48978: 6000 ff20 braw 4889a <_Thread_Initialize+0xf6> <== NOT EXECUTED
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
4897c: e589 lsll #2,%d1 4897e: 2041 moveal %d1,%a0 48980: 4868 0004 pea %a0@(4) 48984: 4eb9 0004 9bb6 jsr 49bb6 <_Workspace_Allocate>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
4898a: 588f addql #4,%sp
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
4898c: 2640 moveal %d0,%a3
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
4898e: 4a80 tstl %d0 48990: 6700 fef8 beqw 4888a <_Thread_Initialize+0xe6>
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48994: 2079 0005 fd1e moveal 5fd1e <_Thread_Maximum_extensions>,%a0
* create the extension long after tasks have been created
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
4899a: 4281 clrl %d1
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
4899c: 4280 clrl %d0 4899e: 254b 0112 movel %a3,%a2@(274)
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
the_thread->extensions[i] = NULL;
489a2: 42b3 1c00 clrl %a3@(00000000,%d1:l:4)
* create the extension long after tasks have been created
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
489a6: 5280 addql #1,%d0 489a8: 2200 movel %d0,%d1 489aa: b088 cmpl %a0,%d0 489ac: 6200 fe70 bhiw 4881e <_Thread_Initialize+0x7a>
the_thread->extensions[i] = NULL;
489b0: 42b3 1c00 clrl %a3@(00000000,%d1:l:4)
* create the extension long after tasks have been created
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
489b4: 5280 addql #1,%d0 489b6: 2200 movel %d0,%d1 489b8: b088 cmpl %a0,%d0
489ba: 63e6 blss 489a2 <_Thread_Initialize+0x1fe>
489bc: 6000 fe60 braw 4881e <_Thread_Initialize+0x7a>
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
#else
if ( !stack_area ) {
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
489c0: 2f04 movel %d4,%sp@- 489c2: 2f0a movel %a2,%sp@- 489c4: 4eb9 0004 9240 jsr 49240 <_Thread_Stack_Allocate>
if ( !actual_stack_size || actual_stack_size < stack_size )
489ca: 508f addql #8,%sp
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
#else
if ( !stack_area ) {
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
489cc: 2200 movel %d0,%d1
if ( !actual_stack_size || actual_stack_size < stack_size )
489ce: 6712 beqs 489e2 <_Thread_Initialize+0x23e>
489d0: b084 cmpl %d4,%d0
489d2: 650e bcss 489e2 <_Thread_Initialize+0x23e> <== NEVER TAKEN
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
489d4: 202a 00ca movel %a2@(202),%d0
the_thread->Start.core_allocated_stack = true;
489d8: 7801 moveq #1,%d4 489da: 1544 00bc moveb %d4,%a2@(188) 489de: 6000 fe02 braw 487e2 <_Thread_Initialize+0x3e>
_Thread_Stack_Free( the_thread );
return false;
}
489e2: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3
stack = the_thread->Start.stack;
#else
if ( !stack_area ) {
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
if ( !actual_stack_size || actual_stack_size < stack_size )
return false; /* stack allocation failed */
489e8: 4200 clrb %d0
_Thread_Stack_Free( the_thread );
return false;
}
489ea: 4e5e unlk %fp
...
0004cc94 <_Thread_Ready>:
*/
void _Thread_Ready(
Thread_Control *the_thread
)
{
4cc94: 4e56 fff0 linkw %fp,#-16 4cc98: 206e 0008 moveal %fp@(8),%a0 4cc9c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
ISR_Level level;
Thread_Control *heir;
_ISR_Disable( level );
4cca0: 243c 0000 0700 movel #1792,%d2 4cca6: 2002 movel %d2,%d0 4cca8: 40c1 movew %sr,%d1 4ccaa: 8081 orl %d1,%d0 4ccac: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
4ccae: 2668 008e moveal %a0@(142),%a3
the_thread->current_state = STATES_READY;
_Priority_bit_map_Add( &the_thread->Priority_map );
_Chain_Append_unprotected( the_thread->ready, &the_thread->Object.Node );
4ccb2: 2268 008a moveal %a0@(138),%a1 4ccb6: 3613 movew %a3@,%d3 4ccb8: 3028 0094 movew %a0@(148),%d0
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
4ccbc: 2469 0008 moveal %a1@(8),%a2 4ccc0: 8083 orl %d3,%d0
ISR_Level level;
Thread_Control *heir;
_ISR_Disable( level );
the_thread->current_state = STATES_READY;
4ccc2: 42a8 0010 clrl %a0@(16) 4ccc6: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
4ccc8: 3639 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d3 4ccce: 3028 0092 movew %a0@(146),%d0 4ccd2: 8083 orl %d3,%d0 4ccd4: 33c0 0005 fd2c movew %d0,5fd2c <_Priority_Major_bit_map>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4ccda: 2009 movel %a1,%d0 4ccdc: 5880 addql #4,%d0 4ccde: 2080 movel %d0,%a0@
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
the_chain->last = the_node;
4cce0: 2348 0008 movel %a0,%a1@(8)
old_last_node->next = the_node;
4cce4: 2488 movel %a0,%a2@
the_node->previous = old_last_node;
4cce6: 214a 0004 movel %a2,%a0@(4)
_Priority_bit_map_Add( &the_thread->Priority_map );
_Chain_Append_unprotected( the_thread->ready, &the_thread->Object.Node );
_ISR_Flash( level );
4ccea: 2002 movel %d2,%d0 4ccec: 46c1 movew %d1,%sr 4ccee: 8081 orl %d1,%d0 4ccf0: 46c0 movew %d0,%sr
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 );
4ccf2: 3039 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d0 4ccf8: 4840 swap %d0 4ccfa: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4ccfc: 4282 clrl %d2 4ccfe: 41f9 0005 fd94 lea 5fd94 <_Priority_Bit_map>,%a0 4cd04: 3400 movew %d0,%d2 4cd06: 3030 2a00 movew %a0@(00000000,%d2:l:2),%d0 4cd0a: 4840 swap %d0 4cd0c: 04c0 ff1 %d0
return (_Priority_Bits_index( major ) << 4) +
4cd0e: 4283 clrl %d3 4cd10: e98a lsll #4,%d2 4cd12: 3600 movew %d0,%d3
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
_Thread_Ready_chain[ _Priority_bit_map_Get_highest() ].first;
4cd14: 2279 0005 fc40 moveal 5fc40 <_Thread_Ready_chain>,%a1 4cd1a: 2002 movel %d2,%d0 4cd1c: d083 addl %d3,%d0 4cd1e: 2400 movel %d0,%d2 4cd20: e58a lsll #2,%d2 4cd22: e988 lsll #4,%d0
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (
const Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Executing );
4cd24: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
_Thread_Ready_chain[ _Priority_bit_map_Get_highest() ].first;
4cd2a: 93c2 subal %d2,%a1
* ready thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
4cd2c: 2031 0800 movel %a1@(00000000,%d0:l),%d0 4cd30: 23c0 0006 0120 movel %d0,60120 <_Per_CPU_Information+0x10>
_Thread_Calculate_heir();
heir = _Thread_Heir;
if ( !_Thread_Is_executing( heir ) && _Thread_Executing->is_preemptible )
4cd36: b1c0 cmpal %d0,%a0
4cd38: 670e beqs 4cd48 <_Thread_Ready+0xb4>
4cd3a: 4a28 0074 tstb %a0@(116)
4cd3e: 6708 beqs 4cd48 <_Thread_Ready+0xb4> <== NEVER TAKEN
_Thread_Dispatch_necessary = true;
4cd40: 7001 moveq #1,%d0 4cd42: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18>
_ISR_Enable( level );
4cd48: 46c1 movew %d1,%sr
}
4cd4a: 4cd7 0c0c moveml %sp@,%d2-%d3/%a2-%a3 4cd4e: 4e5e unlk %fp
...
0004da3c <_Thread_Reset>:
void _Thread_Reset(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4da3c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4da40: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4da42: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
the_thread->resource_count = 0; the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm;
4da46: 256a 00ac 007a movel %a2@(172),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = the_thread->Start.budget_callout;
4da4c: 256a 00b0 007e movel %a2@(176),%a2@(126) <== NOT EXECUTED
the_thread->Start.pointer_argument = pointer_argument;
4da52: 256e 000c 00a2 movel %fp@(12),%a2@(162) <== NOT EXECUTED
the_thread->Start.numeric_argument = numeric_argument;
4da58: 256e 0010 00a6 movel %fp@(16),%a2@(166) <== NOT EXECUTED
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
the_thread->resource_count = 0;
the_thread->is_preemptible = the_thread->Start.is_preemptible;
4da5e: 156a 00aa 0074 moveb %a2@(170),%a2@(116) <== NOT EXECUTED
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
the_thread->resource_count = 0;
4da64: 42aa 001c clrl %a2@(28) <== NOT EXECUTED
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 ) ) {
4da68: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4da6a: 4eb9 0004 9a9c jsr 49a9c <_Thread_queue_Extract_with_proxy><== NOT EXECUTED 4da70: 588f addql #4,%sp <== NOT EXECUTED 4da72: 4a00 tstb %d0 <== NOT EXECUTED 4da74: 6608 bnes 4da7e <_Thread_Reset+0x42> <== NOT EXECUTED
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4da76: 7002 moveq #2,%d0 <== NOT EXECUTED 4da78: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4da7c: 672a beqs 4daa8 <_Thread_Reset+0x6c> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
4da7e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 4da82: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 4da86: 6718 beqs 4daa0 <_Thread_Reset+0x64> <== NOT EXECUTED
the_thread->real_priority = the_thread->Start.initial_priority;
4da88: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4da8c: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
4da90: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
(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 );
4da94: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
} }
4da98: 4e5e unlk %fp <== NOT EXECUTED
(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 );
4da9a: 4ef9 0004 9cdc jmp 49cdc <_Thread_Set_priority> <== NOT EXECUTED
} }
4daa0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4daa4: 4e5e unlk %fp <== NOT EXECUTED 4daa6: 4e75 rts <== NOT EXECUTED
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 );
4daa8: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4daac: 4eb9 0004 a71c jsr 4a71c <_Watchdog_Remove> <== NOT EXECUTED 4dab2: 588f addql #4,%sp <== NOT EXECUTED 4dab4: 60c8 bras 4da7e <_Thread_Reset+0x42> <== NOT EXECUTED
...
00049c4c <_Thread_Restart>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
49c4c: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _Thread_Restart(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
49c4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49c52: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c54: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 49c58: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
if ( !_States_Is_dormant( the_thread->current_state ) ) {
49c5c: 670a beqs 49c68 <_Thread_Restart+0x1c> <== NOT EXECUTED
return true;
}
return false;
}
49c5e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49c62: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Restart_self();
return true;
}
return false;
49c64: 4200 clrb %d0 <== NOT EXECUTED
}
49c66: 4e75 rts <== NOT EXECUTED
Thread_Entry_numeric_type numeric_argument
)
{
if ( !_States_Is_dormant( the_thread->current_state ) ) {
_Thread_Set_transient( the_thread );
49c68: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c6a: 4eb9 0004 9e60 jsr 49e60 <_Thread_Set_transient> <== NOT EXECUTED
_Thread_Reset( the_thread, pointer_argument, numeric_argument );
49c70: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49c74: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49c78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c7a: 4eb9 0004 da3c jsr 4da3c <_Thread_Reset> <== NOT EXECUTED
_Thread_Load_environment( the_thread );
49c80: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c82: 4eb9 0004 d6a0 jsr 4d6a0 <_Thread_Load_environment> <== NOT EXECUTED
_Thread_Ready( the_thread );
49c88: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c8a: 4eb9 0004 d97c jsr 4d97c <_Thread_Ready> <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
49c90: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c92: 4eb9 0004 a50c jsr 4a50c <_User_extensions_Thread_restart> <== NOT EXECUTED
if ( _Thread_Is_executing ( the_thread ) )
49c98: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 49c9c: b5f9 0006 10b4 cmpal 610b4 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 49ca2: 670a beqs 49cae <_Thread_Restart+0x62> <== NOT EXECUTED
return true;
}
return false;
}
49ca4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49ca8: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49caa: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
49cac: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void )
{
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( _Thread_Executing->fp_context != NULL )
49cae: 4aaa 0102 tstl %a2@(258) <== NOT EXECUTED 49cb2: 6712 beqs 49cc6 <_Thread_Restart+0x7a> <== NOT EXECUTED
_Context_Restore_fp( &_Thread_Executing->fp_context );
49cb4: 486a 0102 pea %a2@(258) <== NOT EXECUTED 49cb8: 4eb9 0004 aa66 jsr 4aa66 <_CPU_Context_restore_fp> <== NOT EXECUTED 49cbe: 2479 0006 10b4 moveal 610b4 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 49cc4: 588f addql #4,%sp <== NOT EXECUTED
#endif
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
49cc6: 486a 00ce pea %a2@(206) <== NOT EXECUTED 49cca: 4eb9 0004 a91e jsr 4a91e <_CPU_Context_Restart_self> <== NOT EXECUTED 49cd0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49cd4: 588f addql #4,%sp <== NOT EXECUTED 49cd6: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49cd8: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
0004c6f0 <_Thread_Resume>:
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c6f0: 327c 0700 moveaw #1792,%a1 4c6f4: 2009 movel %a1,%d0
void _Thread_Resume(
Thread_Control *the_thread,
bool force
)
{
4c6f6: 4e56 fff0 linkw %fp,#-16 4c6fa: 206e 0008 moveal %fp@(8),%a0 4c6fe: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c702: 40c1 movew %sr,%d1 4c704: 8081 orl %d1,%d0 4c706: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
4c708: 2028 0010 movel %a0@(16),%d0
if ( current_state & STATES_SUSPENDED ) {
4c70c: 0800 0001 btst #1,%d0
4c710: 6774 beqs 4c786 <_Thread_Resume+0x96> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
4c712: 74fd moveq #-3,%d2 4c714: c082 andl %d2,%d0
current_state =
the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state);
4c716: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
4c71a: 666a bnes 4c786 <_Thread_Resume+0x96> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
4c71c: 2868 008e moveal %a0@(142),%a4
_Priority_bit_map_Add( &the_thread->Priority_map );
_Chain_Append_unprotected(the_thread->ready, &the_thread->Object.Node);
4c720: 2468 008a moveal %a0@(138),%a2 4c724: 3414 movew %a4@,%d2 4c726: 3028 0094 movew %a0@(148),%d0
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
4c72a: 266a 0008 moveal %a2@(8),%a3 4c72e: 8082 orl %d2,%d0 4c730: 3880 movew %d0,%a4@
_Priority_Major_bit_map |= the_priority_map->ready_major;
4c732: 3439 0006 3ae4 movew 63ae4 <_Priority_Major_bit_map>,%d2 4c738: 3028 0092 movew %a0@(146),%d0 4c73c: 8082 orl %d2,%d0 4c73e: 33c0 0006 3ae4 movew %d0,63ae4 <_Priority_Major_bit_map>
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4c744: 200a movel %a2,%d0 4c746: 5880 addql #4,%d0 4c748: 2080 movel %d0,%a0@
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
the_chain->last = the_node;
4c74a: 2548 0008 movel %a0,%a2@(8)
old_last_node->next = the_node;
4c74e: 2688 movel %a0,%a3@
the_node->previous = old_last_node;
4c750: 214b 0004 movel %a3,%a0@(4)
_ISR_Flash( level );
4c754: 2009 movel %a1,%d0 4c756: 46c1 movew %d1,%sr 4c758: 8081 orl %d1,%d0 4c75a: 46c0 movew %d0,%sr
if ( the_thread->current_priority < _Thread_Heir->current_priority ) {
4c75c: 2028 0014 movel %a0@(20),%d0 4c760: 2279 0006 3ed8 moveal 63ed8 <_Per_CPU_Information+0x10>,%a1 4c766: b0a9 0014 cmpl %a1@(20),%d0
4c76a: 641a bccs 4c786 <_Thread_Resume+0x96>
_Thread_Heir = the_thread;
4c76c: 23c8 0006 3ed8 movel %a0,63ed8 <_Per_CPU_Information+0x10>
if ( _Thread_Executing->is_preemptible ||
4c772: 2079 0006 3ed4 moveal 63ed4 <_Per_CPU_Information+0xc>,%a0 4c778: 4a28 0074 tstb %a0@(116)
4c77c: 6712 beqs 4c790 <_Thread_Resume+0xa0> <== NEVER TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
4c77e: 7401 moveq #1,%d2 4c780: 13c2 0006 3ee0 moveb %d2,63ee0 <_Per_CPU_Information+0x18>
}
}
}
_ISR_Enable( level );
4c786: 46c1 movew %d1,%sr
}
4c788: 4cd7 1c04 moveml %sp@,%d2/%a2-%a4 4c78c: 4e5e unlk %fp 4c78e: 4e75 rts
_ISR_Flash( level );
if ( the_thread->current_priority < _Thread_Heir->current_priority ) {
_Thread_Heir = the_thread;
if ( _Thread_Executing->is_preemptible ||
4c790: 4a80 tstl %d0 <== NOT EXECUTED 4c792: 66f2 bnes 4c786 <_Thread_Resume+0x96> <== NOT EXECUTED
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
4c794: 7401 moveq #1,%d2 <== NOT EXECUTED 4c796: 13c2 0006 3ee0 moveb %d2,63ee0 <_Per_CPU_Information+0x18> <== NOT EXECUTED 4c79c: 60e8 bras 4c786 <_Thread_Resume+0x96> <== NOT EXECUTED
...
000490a8 <_Thread_Set_state>:
{
ISR_Level level;
Chain_Control *ready;
ready = the_thread->ready;
_ISR_Disable( level );
490a8: 203c 0000 0700 movel #1792,%d0
void _Thread_Set_state(
Thread_Control *the_thread,
States_Control state
)
{
490ae: 4e56 fff4 linkw %fp,#-12 490b2: 206e 0008 moveal %fp@(8),%a0 490b6: 48d7 040c moveml %d2-%d3/%a2,%sp@ 490ba: 242e 000c movel %fp@(12),%d2
ISR_Level level;
Chain_Control *ready;
ready = the_thread->ready;
490be: 2268 008a moveal %a0@(138),%a1
_ISR_Disable( level );
490c2: 40c1 movew %sr,%d1 490c4: 8081 orl %d1,%d0 490c6: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
490c8: 2028 0010 movel %a0@(16),%d0
490cc: 6640 bnes 4910e <_Thread_Set_state+0x66> <== NEVER TAKEN
return;
}
the_thread->current_state = state;
if ( _Chain_Has_only_one_node( ready ) ) {
490ce: 2029 0008 movel %a1@(8),%d0
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = state;
490d2: 2142 0010 movel %d2,%a0@(16)
if ( _Chain_Has_only_one_node( ready ) ) {
490d6: b091 cmpl %a1@,%d0 490d8: 6700 0096 beqw 49170 <_Thread_Set_state+0xc8>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
490dc: 2450 moveal %a0@,%a2
previous = the_node->previous;
490de: 2268 0004 moveal %a0@(4),%a1
next->previous = previous;
490e2: 2549 0004 movel %a1,%a2@(4)
previous->next = next;
490e6: 228a movel %a2,%a1@
_Priority_bit_map_Remove( &the_thread->Priority_map );
} else
_Chain_Extract_unprotected( &the_thread->Object.Node );
_ISR_Flash( level );
490e8: 203c 0000 0700 movel #1792,%d0 490ee: 46c1 movew %d1,%sr 490f0: 8081 orl %d1,%d0 490f2: 46c0 movew %d0,%sr
if ( _Thread_Is_heir( the_thread ) )
490f4: b1f9 0006 0120 cmpal 60120 <_Per_CPU_Information+0x10>,%a0
490fa: 672e beqs 4912a <_Thread_Set_state+0x82>
_Thread_Calculate_heir();
if ( _Thread_Is_executing( the_thread ) )
490fc: b1f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a0
49102: 671a beqs 4911e <_Thread_Set_state+0x76> <== ALWAYS TAKEN
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
49104: 46c1 movew %d1,%sr <== NOT EXECUTED
}
49106: 4cd7 040c moveml %sp@,%d2-%d3/%a2 4910a: 4e5e unlk %fp 4910c: 4e75 rts
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
4910e: 8480 orl %d0,%d2 <== NOT EXECUTED 49110: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
ready = the_thread->ready;
_ISR_Disable( level );
if ( !_States_Is_ready( the_thread->current_state ) ) {
the_thread->current_state =
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
49114: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
49116: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 4911a: 4e5e unlk %fp <== NOT EXECUTED 4911c: 4e75 rts <== NOT EXECUTED
if ( _Thread_Is_heir( the_thread ) )
_Thread_Calculate_heir();
if ( _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
4911e: 7001 moveq #1,%d0 49120: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18>
_ISR_Enable( level );
49126: 46c1 movew %d1,%sr 49128: 60dc bras 49106 <_Thread_Set_state+0x5e>
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 );
4912a: 3039 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d0 49130: 4840 swap %d0 49132: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
49134: 4282 clrl %d2 49136: 43f9 0005 fd94 lea 5fd94 <_Priority_Bit_map>,%a1 4913c: 3400 movew %d0,%d2 4913e: 3031 2a00 movew %a1@(00000000,%d2:l:2),%d0 49142: 4840 swap %d0 49144: 04c0 ff1 %d0
return (_Priority_Bits_index( major ) << 4) +
49146: 4283 clrl %d3 49148: e98a lsll #4,%d2 4914a: 3600 movew %d0,%d3
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
_Thread_Ready_chain[ _Priority_bit_map_Get_highest() ].first;
4914c: 2279 0005 fc40 moveal 5fc40 <_Thread_Ready_chain>,%a1 49152: 2002 movel %d2,%d0 49154: d083 addl %d3,%d0 49156: 2400 movel %d0,%d2 49158: e58a lsll #2,%d2 4915a: e988 lsll #4,%d0 4915c: 93c2 subal %d2,%a1
* ready thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
4915e: d3c0 addal %d0,%a1 49160: 23d1 0006 0120 movel %a1@,60120 <_Per_CPU_Information+0x10>
_ISR_Flash( level );
if ( _Thread_Is_heir( the_thread ) )
_Thread_Calculate_heir();
if ( _Thread_Is_executing( the_thread ) )
49166: b1f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a0
4916c: 6696 bnes 49104 <_Thread_Set_state+0x5c> <== NEVER TAKEN
4916e: 60ae bras 4911e <_Thread_Set_state+0x76>
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
49170: 2468 008e moveal %a0@(142),%a2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
49174: 2009 movel %a1,%d0 49176: 5880 addql #4,%d0 49178: 2280 movel %d0,%a1@ 4917a: 3412 movew %a2@,%d2 4917c: 3028 0098 movew %a0@(152),%d0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
49180: 42a9 0004 clrl %a1@(4) 49184: c082 andl %d2,%d0
the_chain->last = _Chain_Head(the_chain);
49186: 2349 0008 movel %a1,%a1@(8) 4918a: 3480 movew %d0,%a2@
if ( *the_priority_map->minor == 0 )
4918c: 6600 ff5a bnew 490e8 <_Thread_Set_state+0x40>
_Priority_Major_bit_map &= the_priority_map->block_major;
49190: 3439 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d2 49196: 3028 0096 movew %a0@(150),%d0 4919a: c082 andl %d2,%d0 4919c: 33c0 0005 fd2c movew %d0,5fd2c <_Priority_Major_bit_map>
_Priority_bit_map_Remove( &the_thread->Priority_map );
} else
_Chain_Extract_unprotected( &the_thread->Object.Node );
_ISR_Flash( level );
491a2: 203c 0000 0700 movel #1792,%d0 491a8: 46c1 movew %d1,%sr 491aa: 8081 orl %d1,%d0 491ac: 46c0 movew %d0,%sr
if ( _Thread_Is_heir( the_thread ) )
491ae: b1f9 0006 0120 cmpal 60120 <_Per_CPU_Information+0x10>,%a0 491b4: 6600 ff46 bnew 490fc <_Thread_Set_state+0x54> 491b8: 6000 ff70 braw 4912a <_Thread_Set_state+0x82>
000491bc <_Thread_Set_transient>:
ISR_Level level;
uint32_t old_state;
Chain_Control *ready;
ready = the_thread->ready;
_ISR_Disable( level );
491bc: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Set_transient(
Thread_Control *the_thread
)
{
491c2: 4e56 0000 linkw %fp,#0 491c6: 206e 0008 moveal %fp@(8),%a0 491ca: 2f0a movel %a2,%sp@-
ISR_Level level;
uint32_t old_state;
Chain_Control *ready;
ready = the_thread->ready;
491cc: 2268 008a moveal %a0@(138),%a1
*/
void _Thread_Set_transient(
Thread_Control *the_thread
)
{
491d0: 2f02 movel %d2,%sp@-
ISR_Level level;
uint32_t old_state;
Chain_Control *ready;
ready = the_thread->ready;
_ISR_Disable( level );
491d2: 40c1 movew %sr,%d1 491d4: 8081 orl %d1,%d0 491d6: 46c0 movew %d0,%sr
old_state = the_thread->current_state;
491d8: 2028 0010 movel %a0@(16),%d0 491dc: 7404 moveq #4,%d2 491de: 8480 orl %d0,%d2 491e0: 2142 0010 movel %d2,%a0@(16)
the_thread->current_state = _States_Set( STATES_TRANSIENT, old_state );
if ( _States_Is_ready( old_state ) ) {
491e4: 4a80 tstl %d0
491e6: 6614 bnes 491fc <_Thread_Set_transient+0x40>
if ( _Chain_Has_only_one_node( ready ) ) {
491e8: 2029 0008 movel %a1@(8),%d0 491ec: b091 cmpl %a1@,%d0
491ee: 6716 beqs 49206 <_Thread_Set_transient+0x4a> <== ALWAYS TAKEN
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
491f0: 2250 moveal %a0@,%a1 <== NOT EXECUTED
previous = the_node->previous;
491f2: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
next->previous = previous;
491f6: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
491fa: 2089 movel %a1,%a0@ <== NOT EXECUTED
} else
_Chain_Extract_unprotected( &the_thread->Object.Node );
}
_ISR_Enable( level );
491fc: 46c1 movew %d1,%sr
}
491fe: 241f movel %sp@+,%d2 49200: 245f moveal %sp@+,%a2 49202: 4e5e unlk %fp 49204: 4e75 rts
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
49206: 2468 008e moveal %a0@(142),%a2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4920a: 2409 movel %a1,%d2 4920c: 5882 addql #4,%d2 4920e: 2282 movel %d2,%a1@ 49210: 3412 movew %a2@,%d2 49212: 3028 0098 movew %a0@(152),%d0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
49216: 42a9 0004 clrl %a1@(4) 4921a: c082 andl %d2,%d0
the_chain->last = _Chain_Head(the_chain);
4921c: 2349 0008 movel %a1,%a1@(8) 49220: 3480 movew %d0,%a2@
if ( *the_priority_map->minor == 0 )
49222: 66d8 bnes 491fc <_Thread_Set_transient+0x40>
_Priority_Major_bit_map &= the_priority_map->block_major;
49224: 3439 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d2 4922a: 3028 0096 movew %a0@(150),%d0 4922e: c082 andl %d2,%d0 49230: 33c0 0005 fd2c movew %d0,5fd2c <_Priority_Major_bit_map>
} else
_Chain_Extract_unprotected( &the_thread->Object.Node );
}
_ISR_Enable( level );
49236: 46c1 movew %d1,%sr
}
49238: 241f movel %sp@+,%d2 4923a: 245f moveal %sp@+,%a2
4923c: 4e5e unlk %fp <== NOT EXECUTED
000492a4 <_Thread_Stack_Free>:
*/
void _Thread_Stack_Free(
Thread_Control *the_thread
)
{
492a4: 4e56 0000 linkw %fp,#0 492a8: 206e 0008 moveal %fp@(8),%a0
#if defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
/*
* If the API provided the stack space, then don't free it.
*/
if ( !the_thread->Start.core_allocated_stack )
492ac: 4a28 00bc tstb %a0@(188)
492b0: 6714 beqs 492c6 <_Thread_Stack_Free+0x22> <== NEVER TAKEN
* Call ONLY the CPU table stack free hook, or the
* the RTEMS workspace free. This is so the free
* routine properly matches the allocation of the stack.
*/
if ( Configuration.stack_free_hook )
492b2: 2279 0005 e408 moveal 5e408 <Configuration+0x24>,%a1 492b8: 4a89 tstl %a1
492ba: 670e beqs 492ca <_Thread_Stack_Free+0x26> <== ALWAYS TAKEN
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
492bc: 2d68 00c2 0008 movel %a0@(194),%fp@(8) <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
492c2: 4e5e unlk %fp <== NOT EXECUTED
* the RTEMS workspace free. This is so the free
* routine properly matches the allocation of the stack.
*/
if ( Configuration.stack_free_hook )
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
492c4: 4ed1 jmp %a1@ <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
492c6: 4e5e unlk %fp <== NOT EXECUTED 492c8: 4e75 rts <== NOT EXECUTED
*/
if ( Configuration.stack_free_hook )
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
492ca: 2d68 00c2 0008 movel %a0@(194),%fp@(8)
}
492d0: 4e5e unlk %fp
*/
if ( Configuration.stack_free_hook )
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
492d2: 4ef9 0004 9bd2 jmp 49bd2 <_Workspace_Free>
00049328 <_Thread_Start>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
49328: 7001 moveq #1,%d0
Thread_Start_types the_prototype,
void *entry_point,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4932a: 4e56 0000 linkw %fp,#0 4932e: 2f0a movel %a2,%sp@- 49330: 246e 0008 moveal %fp@(8),%a2 49334: c0aa 0010 andl %a2@(16),%d0
if ( _States_Is_dormant( the_thread->current_state ) ) {
49338: 660a bnes 49344 <_Thread_Start+0x1c> <== ALWAYS TAKEN
return true;
}
return false;
}
4933a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4933e: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_start( the_thread );
return true;
}
return false;
49340: 4200 clrb %d0 <== NOT EXECUTED
}
49342: 4e75 rts <== NOT EXECUTED
the_thread->Start.prototype = the_prototype;
the_thread->Start.pointer_argument = pointer_argument;
the_thread->Start.numeric_argument = numeric_argument;
_Thread_Load_environment( the_thread );
49344: 2f0a movel %a2,%sp@-
Thread_Entry_numeric_type numeric_argument
)
{
if ( _States_Is_dormant( the_thread->current_state ) ) {
the_thread->Start.entry_point = (Thread_Entry) entry_point;
49346: 256e 0010 009a movel %fp@(16),%a2@(154)
the_thread->Start.prototype = the_prototype;
4934c: 256e 000c 009e movel %fp@(12),%a2@(158)
the_thread->Start.pointer_argument = pointer_argument;
49352: 256e 0014 00a2 movel %fp@(20),%a2@(162)
the_thread->Start.numeric_argument = numeric_argument;
49358: 256e 0018 00a6 movel %fp@(24),%a2@(166)
_Thread_Load_environment( the_thread );
4935e: 4eb9 0004 c9b8 jsr 4c9b8 <_Thread_Load_environment>
_Thread_Ready( the_thread );
49364: 2f0a movel %a2,%sp@- 49366: 4eb9 0004 cc94 jsr 4cc94 <_Thread_Ready>
_User_extensions_Thread_start( the_thread );
4936c: 2f0a movel %a2,%sp@- 4936e: 4eb9 0004 9868 jsr 49868 <_User_extensions_Thread_start>
return true;
}
return false;
}
49374: 246e fffc moveal %fp@(-4),%a2
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
49378: 4fef 000c lea %sp@(12),%sp
}
return false;
}
4937c: 4e5e unlk %fp
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
4937e: 7001 moveq #1,%d0
}
return false;
}
...
00049384 <_Thread_Suspend>:
{
ISR_Level level;
Chain_Control *ready;
ready = the_thread->ready;
_ISR_Disable( level );
49384: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Suspend(
Thread_Control *the_thread
)
{
4938a: 4e56 fff4 linkw %fp,#-12 4938e: 206e 0008 moveal %fp@(8),%a0 49392: 48d7 040c moveml %d2-%d3/%a2,%sp@
ISR_Level level;
Chain_Control *ready;
ready = the_thread->ready;
49396: 2268 008a moveal %a0@(138),%a1
_ISR_Disable( level );
4939a: 40c1 movew %sr,%d1 4939c: 8081 orl %d1,%d0 4939e: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
493a0: 2028 0010 movel %a0@(16),%d0
493a4: 6642 bnes 493e8 <_Thread_Suspend+0x64> <== NEVER TAKEN
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = STATES_SUSPENDED;
493a6: 7002 moveq #2,%d0
if ( _Chain_Has_only_one_node( ready ) ) {
493a8: 2429 0008 movel %a1@(8),%d2
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = STATES_SUSPENDED;
493ac: 2140 0010 movel %d0,%a0@(16)
if ( _Chain_Has_only_one_node( ready ) ) {
493b0: b491 cmpl %a1@,%d2 493b2: 6700 0098 beqw 4944c <_Thread_Suspend+0xc8>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
493b6: 2450 moveal %a0@,%a2 <== NOT EXECUTED
previous = the_node->previous;
493b8: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
next->previous = previous;
493bc: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous->next = next;
493c0: 228a movel %a2,%a1@ <== NOT EXECUTED
_Priority_bit_map_Remove( &the_thread->Priority_map );
} else
_Chain_Extract_unprotected( &the_thread->Object.Node );
_ISR_Flash( level );
493c2: 203c 0000 0700 movel #1792,%d0 493c8: 46c1 movew %d1,%sr 493ca: 8081 orl %d1,%d0 493cc: 46c0 movew %d0,%sr
if ( _Thread_Is_heir( the_thread ) )
493ce: b1f9 0006 0120 cmpal 60120 <_Per_CPU_Information+0x10>,%a0
493d4: 6730 beqs 49406 <_Thread_Suspend+0x82>
_Thread_Calculate_heir();
if ( _Thread_Is_executing( the_thread ) )
493d6: b1f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a0
493dc: 671c beqs 493fa <_Thread_Suspend+0x76> <== NEVER TAKEN
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
493de: 46c1 movew %d1,%sr
}
493e0: 4cd7 040c moveml %sp@,%d2-%d3/%a2 493e4: 4e5e unlk %fp 493e6: 4e75 rts
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
493e8: 7402 moveq #2,%d2 <== NOT EXECUTED 493ea: 8480 orl %d0,%d2 <== NOT EXECUTED 493ec: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
ready = the_thread->ready;
_ISR_Disable( level );
if ( !_States_Is_ready( the_thread->current_state ) ) {
the_thread->current_state =
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
493f0: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
493f2: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 493f6: 4e5e unlk %fp <== NOT EXECUTED 493f8: 4e75 rts <== NOT EXECUTED
if ( _Thread_Is_heir( the_thread ) )
_Thread_Calculate_heir();
if ( _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
493fa: 7401 moveq #1,%d2 493fc: 13c2 0006 0128 moveb %d2,60128 <_Per_CPU_Information+0x18>
_ISR_Enable( level );
49402: 46c1 movew %d1,%sr 49404: 60da bras 493e0 <_Thread_Suspend+0x5c>
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 );
49406: 3039 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d0 4940c: 4840 swap %d0 4940e: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
49410: 4282 clrl %d2 49412: 43f9 0005 fd94 lea 5fd94 <_Priority_Bit_map>,%a1 49418: 3400 movew %d0,%d2 4941a: 3031 2a00 movew %a1@(00000000,%d2:l:2),%d0 4941e: 4840 swap %d0 49420: 04c0 ff1 %d0
return (_Priority_Bits_index( major ) << 4) +
49422: 4283 clrl %d3 49424: e98a lsll #4,%d2 49426: 3600 movew %d0,%d3
_Thread_Ready_chain[ _Priority_bit_map_Get_highest() ].first;
49428: 2279 0005 fc40 moveal 5fc40 <_Thread_Ready_chain>,%a1 4942e: 2002 movel %d2,%d0 49430: d083 addl %d3,%d0 49432: 2400 movel %d0,%d2 49434: e58a lsll #2,%d2 49436: e988 lsll #4,%d0 49438: 93c2 subal %d2,%a1
* ready thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
4943a: d3c0 addal %d0,%a1 4943c: 23d1 0006 0120 movel %a1@,60120 <_Per_CPU_Information+0x10>
_ISR_Flash( level );
if ( _Thread_Is_heir( the_thread ) )
_Thread_Calculate_heir();
if ( _Thread_Is_executing( the_thread ) )
49442: b1f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a0
49448: 6694 bnes 493de <_Thread_Suspend+0x5a> <== NEVER TAKEN
4944a: 60ae bras 493fa <_Thread_Suspend+0x76>
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
4944c: 2468 008e moveal %a0@(142),%a2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
49450: 2009 movel %a1,%d0 49452: 5880 addql #4,%d0 49454: 2280 movel %d0,%a1@ 49456: 3412 movew %a2@,%d2 49458: 3028 0098 movew %a0@(152),%d0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
4945c: 42a9 0004 clrl %a1@(4) 49460: c082 andl %d2,%d0
the_chain->last = _Chain_Head(the_chain);
49462: 2349 0008 movel %a1,%a1@(8) 49466: 3480 movew %d0,%a2@
if ( *the_priority_map->minor == 0 )
49468: 6600 ff58 bnew 493c2 <_Thread_Suspend+0x3e>
_Priority_Major_bit_map &= the_priority_map->block_major;
4946c: 3439 0005 fd2c movew 5fd2c <_Priority_Major_bit_map>,%d2 49472: 3028 0096 movew %a0@(150),%d0 49476: c082 andl %d2,%d0 49478: 33c0 0005 fd2c movew %d0,5fd2c <_Priority_Major_bit_map>
_Priority_bit_map_Remove( &the_thread->Priority_map );
} else
_Chain_Extract_unprotected( &the_thread->Object.Node );
_ISR_Flash( level );
4947e: 203c 0000 0700 movel #1792,%d0 49484: 46c1 movew %d1,%sr 49486: 8081 orl %d1,%d0 49488: 46c0 movew %d0,%sr
if ( _Thread_Is_heir( the_thread ) )
4948a: b1f9 0006 0120 cmpal 60120 <_Per_CPU_Information+0x10>,%a0 49490: 6600 ff44 bnew 493d6 <_Thread_Suspend+0x52> 49494: 6000 ff70 braw 49406 <_Thread_Suspend+0x82>
00049498 <_Thread_Tickle_timeslice>:
*
* Output parameters: NONE
*/
void _Thread_Tickle_timeslice( void )
{
49498: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4949c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Thread_Control *executing;
executing = _Thread_Executing;
4949e: 2479 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
/*
* If the thread is not preemptible or is not ready, then
* just return.
*/
if ( !executing->is_preemptible )
494a4: 4a2a 0074 tstb %a2@(116) <== NOT EXECUTED 494a8: 6720 beqs 494ca <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
return;
if ( !_States_Is_ready( executing->current_state ) )
494aa: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 494ae: 661a bnes 494ca <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
/*
* The cpu budget algorithm determines what happens next.
*/
switch ( executing->budget_algorithm ) {
494b0: 202a 007a movel %a2@(122),%d0 <== NOT EXECUTED 494b4: 7201 moveq #1,%d1 <== NOT EXECUTED 494b6: b280 cmpl %d0,%d1 <== NOT EXECUTED 494b8: 6210 bhis 494ca <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED 494ba: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 494be: b280 cmpl %d0,%d1 <== NOT EXECUTED 494c0: 642e bccs 494f0 <_Thread_Tickle_timeslice+0x58> <== NOT EXECUTED 494c2: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 494c6: b280 cmpl %d0,%d1 <== NOT EXECUTED 494c8: 6708 beqs 494d2 <_Thread_Tickle_timeslice+0x3a> <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
494ca: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 494ce: 4e5e unlk %fp <== NOT EXECUTED 494d0: 4e75 rts <== NOT EXECUTED
}
break;
#if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT)
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
if ( --executing->cpu_time_budget == 0 )
494d2: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED 494d6: 5380 subql #1,%d0 <== NOT EXECUTED 494d8: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED 494dc: 66ec bnes 494ca <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
(*executing->budget_callout)( executing );
494de: 2f0a movel %a2,%sp@- <== NOT EXECUTED 494e0: 206a 007e moveal %a2@(126),%a0 <== NOT EXECUTED 494e4: 4e90 jsr %a0@ <== NOT EXECUTED
break;
#endif
}
}
494e6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
break;
#if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT)
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
494ea: 588f addql #4,%sp <== NOT EXECUTED
break;
#endif
}
}
494ec: 4e5e unlk %fp <== NOT EXECUTED 494ee: 4e75 rts <== NOT EXECUTED
case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:
#if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)
case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:
#endif
if ( (int)(--executing->cpu_time_budget) <= 0 ) {
494f0: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED 494f4: 5380 subql #1,%d0 <== NOT EXECUTED 494f6: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED 494fa: 6ece bgts 494ca <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
* at the priority of the currently executing thread, then the
* executing thread's timeslice is reset. Otherwise, the
* currently executing thread is placed at the rear of the
* FIFO for this priority and a new heir is selected.
*/
_Thread_Yield_processor();
494fc: 4eb9 0004 9514 jsr 49514 <_Thread_Yield_processor> <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
49502: 41f9 0005 fc44 lea 5fc44 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 49508: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
4950c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49510: 4e5e unlk %fp <== NOT EXECUTED
00049514 <_Thread_Yield_processor>:
* ready chain
* select heir
*/
void _Thread_Yield_processor( void )
{
49514: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
49518: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
* ready chain
* select heir
*/
void _Thread_Yield_processor( void )
{
4951e: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->ready;
_ISR_Disable( level );
49522: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED 49528: 2002 movel %d2,%d0 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->ready;
4952a: 2268 008a moveal %a0@(138),%a1 <== NOT EXECUTED
_ISR_Disable( level );
4952e: 40c1 movew %sr,%d1 <== NOT EXECUTED 49530: 8081 orl %d1,%d0 <== NOT EXECUTED 49532: 46c0 movew %d0,%sr <== NOT EXECUTED
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
49534: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->ready;
_ISR_Disable( level );
if ( !_Chain_Has_only_one_node( ready ) ) {
49538: b5d1 cmpal %a1@,%a2 <== NOT EXECUTED 4953a: 674c beqs 49588 <_Thread_Yield_processor+0x74> <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4953c: 2650 moveal %a0@,%a3 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4953e: 2009 movel %a1,%d0 <== NOT EXECUTED 49540: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
49542: 2868 0004 moveal %a0@(4),%a4 <== NOT EXECUTED
next->previous = previous; previous->next = next;
49546: 288b movel %a3,%a4@ <== NOT EXECUTED
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
49548: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4954c: 2080 movel %d0,%a0@ <== NOT EXECUTED
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
the_chain->last = the_node;
4954e: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
old_last_node->next = the_node;
49552: 2488 movel %a0,%a2@ <== NOT EXECUTED
the_node->previous = old_last_node;
49554: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
_Chain_Extract_unprotected( &executing->Object.Node );
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
49558: 46c1 movew %d1,%sr <== NOT EXECUTED 4955a: 8481 orl %d1,%d2 <== NOT EXECUTED 4955c: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
4955e: b1f9 0006 0120 cmpal 60120 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED 49564: 6712 beqs 49578 <_Thread_Yield_processor+0x64> <== NOT EXECUTED
_Thread_Heir = (Thread_Control *) ready->first;
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
49566: 7001 moveq #1,%d0 <== NOT EXECUTED 49568: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18> <== NOT EXECUTED
_ISR_Enable( level );
4956e: 46c1 movew %d1,%sr <== NOT EXECUTED
}
49570: 4cd7 1c04 moveml %sp@,%d2/%a2-%a4 <== NOT EXECUTED 49574: 4e5e unlk %fp <== NOT EXECUTED 49576: 4e75 rts <== NOT EXECUTED
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
if ( _Thread_Is_heir( executing ) )
_Thread_Heir = (Thread_Control *) ready->first;
49578: 23d1 0006 0120 movel %a1@,60120 <_Per_CPU_Information+0x10><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
4957e: 7001 moveq #1,%d0 <== NOT EXECUTED 49580: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18> <== NOT EXECUTED 49586: 60e6 bras 4956e <_Thread_Yield_processor+0x5a> <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
_Thread_Heir = (Thread_Control *) ready->first;
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
49588: b1f9 0006 0120 cmpal 60120 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED 4958e: 67de beqs 4956e <_Thread_Yield_processor+0x5a> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
49590: 7001 moveq #1,%d0 <== NOT EXECUTED 49592: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18> <== NOT EXECUTED 49598: 60d4 bras 4956e <_Thread_Yield_processor+0x5a> <== NOT EXECUTED
...
0004814c <_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 ) ) {
4814c: 7202 moveq #2,%d1 <== NOT EXECUTED
Thread_blocking_operation_States sync_state __attribute__((unused)),
#endif
Thread_Control *the_thread,
ISR_Level level
)
{
4814e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48152: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 48156: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48158: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
#endif
/*
* The thread is not waiting on anything after this completes.
*/
the_thread->Wait.queue = NULL;
4815c: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
/*
* 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 ) ) {
48160: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 48164: 671c beqs 48182 <_Thread_blocking_operation_Cancel+0x36><== NOT EXECUTED
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
(void) _Watchdog_Remove( &the_thread->Timer );
} else
_ISR_Enable( level );
48166: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
48168: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4816c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48170: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 48176: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4817a: 4e5e unlk %fp <== NOT EXECUTED 4817c: 4ef9 0004 8300 jmp 48300 <_Thread_Clear_state> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
48182: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 48186: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
* 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 );
4818a: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4818c: 486a 0048 pea %a2@(72) <== NOT EXECUTED 48190: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> <== NOT EXECUTED 48196: 588f addql #4,%sp <== NOT EXECUTED 48198: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4819e: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
481a2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 481a6: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 481aa: 4e5e unlk %fp <== NOT EXECUTED 481ac: 4ef9 0004 8300 jmp 48300 <_Thread_Clear_state> <== NOT EXECUTED
...
00048ac8 <_Thread_queue_Dequeue>:
Thread_blocking_operation_States sync_state;
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
dequeue_p = _Thread_queue_Dequeue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
dequeue_p = _Thread_queue_Dequeue_fifo;
48ac8: 41f9 0004 ca34 lea 4ca34 <_Thread_queue_Dequeue_fifo>,%a0
Thread_Control *(*dequeue_p)( Thread_queue_Control * );
Thread_Control *the_thread;
ISR_Level level;
Thread_blocking_operation_States sync_state;
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
48ace: 7001 moveq #1,%d0
*/
Thread_Control *_Thread_queue_Dequeue(
Thread_queue_Control *the_thread_queue
)
{
48ad0: 4e56 fff4 linkw %fp,#-12 48ad4: 48d7 040c moveml %d2-%d3/%a2,%sp@ 48ad8: 246e 0008 moveal %fp@(8),%a2
Thread_Control *(*dequeue_p)( Thread_queue_Control * );
Thread_Control *the_thread;
ISR_Level level;
Thread_blocking_operation_States sync_state;
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
48adc: b0aa 0034 cmpl %a2@(52),%d0
48ae0: 6722 beqs 48b04 <_Thread_queue_Dequeue+0x3c>
dequeue_p = _Thread_queue_Dequeue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
dequeue_p = _Thread_queue_Dequeue_fifo;
the_thread = (*dequeue_p)( the_thread_queue );
48ae2: 2f0a movel %a2,%sp@- 48ae4: 4e90 jsr %a0@
_ISR_Disable( level );
48ae6: 223c 0000 0700 movel #1792,%d1 48aec: 40c2 movew %sr,%d2 48aee: 8282 orl %d2,%d1 48af0: 46c1 movew %d1,%sr
if ( !the_thread ) {
48af2: 588f addql #4,%sp 48af4: 4a80 tstl %d0
48af6: 6728 beqs 48b20 <_Thread_queue_Dequeue+0x58> <== ALWAYS TAKEN
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
the_thread = _Thread_Executing;
}
}
_ISR_Enable( level );
48af8: 46c2 movew %d2,%sr
return the_thread; }
48afa: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 48b00: 4e5e unlk %fp 48b02: 4e75 rts
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
dequeue_p = _Thread_queue_Dequeue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
dequeue_p = _Thread_queue_Dequeue_fifo;
the_thread = (*dequeue_p)( the_thread_queue );
48b04: 2f0a movel %a2,%sp@-
Thread_Control *the_thread;
ISR_Level level;
Thread_blocking_operation_States sync_state;
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
dequeue_p = _Thread_queue_Dequeue_priority;
48b06: 41f9 0004 8b44 lea 48b44 <_Thread_queue_Dequeue_priority>,%a0
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
dequeue_p = _Thread_queue_Dequeue_fifo;
the_thread = (*dequeue_p)( the_thread_queue );
48b0c: 4e90 jsr %a0@
_ISR_Disable( level );
48b0e: 223c 0000 0700 movel #1792,%d1 48b14: 40c2 movew %sr,%d2 48b16: 8282 orl %d2,%d1 48b18: 46c1 movew %d1,%sr
if ( !the_thread ) {
48b1a: 588f addql #4,%sp 48b1c: 4a80 tstl %d0
48b1e: 66d8 bnes 48af8 <_Thread_queue_Dequeue+0x30>
sync_state = the_thread_queue->sync_state;
if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
48b20: 222a 0030 movel %a2@(48),%d1 48b24: 7601 moveq #1,%d3 48b26: 5381 subql #1,%d1 48b28: b681 cmpl %d1,%d3
48b2a: 65cc bcss 48af8 <_Thread_queue_Dequeue+0x30> <== ALWAYS TAKEN
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
48b2c: 7203 moveq #3,%d1 <== NOT EXECUTED
the_thread = _Thread_Executing;
48b2e: 2039 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
_ISR_Disable( level );
if ( !the_thread ) {
sync_state = the_thread_queue->sync_state;
if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
48b34: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED
the_thread = _Thread_Executing;
}
}
_ISR_Enable( level );
48b38: 46c2 movew %d2,%sr <== NOT EXECUTED
return the_thread; }
48b3a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 48b40: 4e5e unlk %fp <== NOT EXECUTED
0004ca34 <_Thread_queue_Dequeue_fifo>:
)
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4ca34: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_fifo(
Thread_queue_Control *the_thread_queue
)
{
4ca3a: 4e56 0000 linkw %fp,#0 4ca3e: 226e 0008 moveal %fp@(8),%a1 4ca42: 2f0b movel %a3,%sp@- 4ca44: 2f0a movel %a2,%sp@-
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4ca46: 40c1 movew %sr,%d1 4ca48: 8081 orl %d1,%d0 4ca4a: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4ca4c: 2049 moveal %a1,%a0 4ca4e: 2458 moveal %a0@+,%a2
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) {
4ca50: b1ca cmpal %a2,%a0
4ca52: 6768 beqs 4cabc <_Thread_queue_Dequeue_fifo+0x88><== ALWAYS TAKEN
{
Chain_Node *return_node;
Chain_Node *new_first;
return_node = the_chain->first;
new_first = return_node->next;
4ca54: 2052 moveal %a2@,%a0 <== NOT EXECUTED
the_thread = (Thread_Control *)
4ca56: 264a moveal %a2,%a3 <== NOT EXECUTED
_Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo );
the_thread->Wait.queue = NULL;
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4ca58: 7002 moveq #2,%d0 <== NOT EXECUTED
the_chain->first = new_first;
4ca5a: 2288 movel %a0,%a1@ <== NOT EXECUTED
new_first->previous = _Chain_Head(the_chain);
4ca5c: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) {
the_thread = (Thread_Control *)
_Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo );
the_thread->Wait.queue = NULL;
4ca60: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4ca64: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4ca68: 6720 beqs 4ca8a <_Thread_queue_Dequeue_fifo+0x56><== NOT EXECUTED
_ISR_Enable( level );
4ca6a: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4ca6c: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4ca72: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ca74: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4ca7a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ca7e: 200b movel %a3,%d0 <== NOT EXECUTED 4ca80: 508f addql #8,%sp <== NOT EXECUTED 4ca82: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4ca86: 4e5e unlk %fp <== NOT EXECUTED 4ca88: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4ca8a: 7003 moveq #3,%d0 <== NOT EXECUTED 4ca8c: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4ca90: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4ca92: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4ca96: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> <== NOT EXECUTED 4ca9c: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4caa2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4caa4: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4caaa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4caae: 200b movel %a3,%d0 <== NOT EXECUTED 4cab0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cab4: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4cab8: 4e5e unlk %fp <== NOT EXECUTED 4caba: 4e75 rts <== NOT EXECUTED
#endif
return the_thread;
}
_ISR_Enable( level );
4cabc: 46c1 movew %d1,%sr
return NULL;
4cabe: 97cb subal %a3,%a3
}
4cac0: 200b movel %a3,%d0 4cac2: 246e fff8 moveal %fp@(-8),%a2 4cac6: 266e fffc moveal %fp@(-4),%a3 4caca: 4e5e unlk %fp
...
00048b44 <_Thread_queue_Dequeue_priority>:
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48b44: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_priority(
Thread_queue_Control *the_thread_queue
)
{
48b4a: 4e56 ffe8 linkw %fp,#-24 48b4e: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ 48b52: 266e 0008 moveal %fp@(8),%a3
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48b56: 40c3 movew %sr,%d3 48b58: 8083 orl %d3,%d0 48b5a: 46c0 movew %d0,%sr
for( index=0 ;
48b5c: 4280 clrl %d0
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48b5e: 204b moveal %a3,%a0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
48b60: 2400 movel %d0,%d2 48b62: 2200 movel %d0,%d1
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48b64: 5280 addql #1,%d0 48b66: e58a lsll #2,%d2 48b68: e989 lsll #4,%d1
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
48b6a: 2450 moveal %a0@,%a2
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
48b6c: 9282 subl %d2,%d1 48b6e: 41e8 000c lea %a0@(12),%a0 48b72: 43f3 1804 lea %a3@(00000004,%d1:l),%a1
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
48b76: b3ca cmpal %a2,%a1
48b78: 6616 bnes 48b90 <_Thread_queue_Dequeue_priority+0x4c>
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
48b7a: 7204 moveq #4,%d1 48b7c: b280 cmpl %d0,%d1
48b7e: 66e0 bnes 48b60 <_Thread_queue_Dequeue_priority+0x1c>
}
/*
* We did not find a thread to unblock.
*/
_ISR_Enable( level );
48b80: 46c3 movew %d3,%sr
return NULL;
48b82: 4282 clrl %d2
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48b84: 2002 movel %d2,%d0 48b86: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 48b8c: 4e5e unlk %fp 48b8e: 4e75 rts 48b90: 200a movel %a2,%d0
_ISR_Disable( level );
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
the_thread = (Thread_Control *)
48b92: 240a movel %a2,%d2 48b94: 0680 0000 003c addil #60,%d0
_ISR_Enable( level );
return NULL;
dequeue:
the_thread->Wait.queue = NULL;
new_first_node = the_thread->Wait.Block2n.first;
48b9a: 206a 0038 moveal %a2@(56),%a0
new_first_thread = (Thread_Control *) new_first_node; next_node = the_thread->Object.Node.next;
48b9e: 2652 moveal %a2@,%a3
previous_node = the_thread->Object.Node.previous;
48ba0: 286a 0004 moveal %a2@(4),%a4
*/
_ISR_Enable( level );
return NULL;
dequeue:
the_thread->Wait.queue = NULL;
48ba4: 42aa 0044 clrl %a2@(68)
new_first_node = the_thread->Wait.Block2n.first;
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 ) ) {
48ba8: b088 cmpl %a0,%d0 48baa: 6700 0084 beqw 48c30 <_Thread_queue_Dequeue_priority+0xec>
last_node = the_thread->Wait.Block2n.last;
48bae: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED
new_second_node = new_first_node->next;
48bb2: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
48bb4: 2748 0004 movel %a0,%a3@(4) <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
last_node = the_thread->Wait.Block2n.last;
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
48bb8: 2888 movel %a0,%a4@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
48bba: 214c 0004 movel %a4,%a0@(4) <== NOT EXECUTED
last_node = the_thread->Wait.Block2n.last;
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;
48bbe: 208b movel %a3,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
48bc0: b3c8 cmpal %a0,%a1 <== NOT EXECUTED 48bc2: 6716 beqs 48bda <_Thread_queue_Dequeue_priority+0x96><== NOT EXECUTED
/* > two threads on 2-n */
new_second_node->previous =
_Chain_Head( &new_first_thread->Wait.Block2n );
48bc4: 47e8 0038 lea %a0@(56),%a3 <== NOT EXECUTED 48bc8: 2b4b 0004 movel %a3,%a5@(4) <== NOT EXECUTED
new_first_thread->Wait.Block2n.first = new_second_node;
48bcc: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED
new_first_thread->Wait.Block2n.last = last_node;
48bd0: 2149 0040 movel %a1,%a0@(64) <== NOT EXECUTED 48bd4: 41e8 003c lea %a0@(60),%a0 <== NOT EXECUTED 48bd8: 2288 movel %a0,%a1@ <== NOT EXECUTED
} else {
previous_node->next = next_node;
next_node->previous = previous_node;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
48bda: 7002 moveq #2,%d0 48bdc: b0aa 0050 cmpl %a2@(80),%d0
48be0: 671e beqs 48c00 <_Thread_queue_Dequeue_priority+0xbc><== NEVER TAKEN
_ISR_Enable( level );
48be2: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
48be4: 2f3c 1003 fff8 movel #268697592,%sp@- 48bea: 2f0a movel %a2,%sp@- 48bec: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> 48bf2: 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 );
}
48bf4: 2002 movel %d2,%d0 48bf6: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 48bfc: 4e5e unlk %fp 48bfe: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
48c00: 7203 moveq #3,%d1 <== NOT EXECUTED 48c02: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
48c06: 46c3 movew %d3,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
48c08: 486a 0048 pea %a2@(72) <== NOT EXECUTED 48c0c: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> <== NOT EXECUTED 48c12: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 48c18: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48c1a: 4eb9 0004 8300 jsr 48300 <_Thread_Clear_state> <== NOT EXECUTED 48c20: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48c24: 2002 movel %d2,%d0 <== NOT EXECUTED 48c26: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 48c2c: 4e5e unlk %fp <== NOT EXECUTED 48c2e: 4e75 rts <== NOT EXECUTED
new_first_thread->Wait.Block2n.last = last_node;
last_node->next = _Chain_Tail( &new_first_thread->Wait.Block2n );
}
} else {
previous_node->next = next_node;
48c30: 288b movel %a3,%a4@
next_node->previous = previous_node;
48c32: 274c 0004 movel %a4,%a3@(4) 48c36: 60a2 bras 48bda <_Thread_queue_Dequeue_priority+0x96>
0004cad0 <_Thread_queue_Enqueue_fifo>:
)
{
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4cad0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
Thread_blocking_operation_States _Thread_queue_Enqueue_fifo (
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread,
ISR_Level *level_p
)
{
4cad6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cada: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4cade: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cae0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4cae4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4cae6: 40c1 movew %sr,%d1 <== NOT EXECUTED 4cae8: 8081 orl %d1,%d0 <== NOT EXECUTED 4caea: 46c0 movew %d0,%sr <== NOT EXECUTED
sync_state = the_thread_queue->sync_state;
4caec: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
4caf0: 7401 moveq #1,%d2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
sync_state = the_thread_queue->sync_state;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
4caf2: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
4caf6: b480 cmpl %d0,%d2 <== NOT EXECUTED 4caf8: 670e beqs 4cb08 <_Thread_queue_Enqueue_fifo+0x38><== NOT EXECUTED
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return sync_state; }
4cafa: 241f movel %sp@+,%d2 <== NOT EXECUTED
* 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;
4cafc: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
return sync_state; }
4cb00: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4cb02: 4e5e unlk %fp <== NOT EXECUTED
* 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;
4cb04: 2081 movel %d1,%a0@ <== NOT EXECUTED
return sync_state; }
4cb06: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4cb08: 2408 movel %a0,%d2 <== NOT EXECUTED 4cb0a: 5882 addql #4,%d2 <== NOT EXECUTED
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
4cb0c: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4cb10: 2282 movel %d2,%a1@ <== NOT EXECUTED
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
the_chain->last = the_node;
4cb12: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED
old_last_node->next = the_node;
4cb16: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last_node;
4cb18: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
_Chain_Append_unprotected(
&the_thread_queue->Queues.Fifo,
&the_thread->Object.Node
);
the_thread->Wait.queue = the_thread_queue;
4cb1c: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
_ISR_Enable( level );
4cb20: 46c1 movew %d1,%sr <== NOT EXECUTED
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return sync_state; }
4cb22: 241f movel %sp@+,%d2 <== NOT EXECUTED 4cb24: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4cb26: 4e5e unlk %fp <== NOT EXECUTED
...
00048ce0 <_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
)
{
48ce0: 4e56 ffe0 linkw %fp,#-32 48ce4: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ 48ce8: 246e 000c moveal %fp@(12),%a2 48cec: 41ea 003c lea %a2@(60),%a0 48cf0: 266e 0008 moveal %fp@(8),%a3
Priority_Control priority;
States_Control block_state;
_Chain_Initialize_empty( &the_thread->Wait.Block2n );
priority = the_thread->current_priority;
48cf4: 222a 0014 movel %a2@(20),%d1
RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number (
Priority_Control the_priority
)
{
return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);
48cf8: 2a01 movel %d1,%d5 48cfa: ec8d lsrl #6,%d5 48cfc: 2548 0038 movel %a0,%a2@(56)
header_index = _Thread_queue_Header_number( priority ); header = &the_thread_queue->Queues.Priority[ header_index ]; block_state = the_thread_queue->state;
48d00: 242b 0038 movel %a3@(56),%d2
Chain_Node *previous_node;
Chain_Node *search_node;
Priority_Control priority;
States_Control block_state;
_Chain_Initialize_empty( &the_thread->Wait.Block2n );
48d04: 41ea 0038 lea %a2@(56),%a0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
48d08: 42aa 003c clrl %a2@(60) 48d0c: 2548 0040 movel %a0,%a2@(64)
priority = the_thread->current_priority;
header_index = _Thread_queue_Header_number( priority );
header = &the_thread_queue->Queues.Priority[ header_index ];
block_state = the_thread_queue->state;
if ( _Thread_queue_Is_reverse_search( priority ) )
48d10: 0801 0005 btst #5,%d1
48d14: 665e bnes 48d74 <_Thread_queue_Enqueue_priority+0x94>
48d16: 700c moveq #12,%d0 48d18: 4c00 5800 mulsl %d0,%d5
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
48d1c: 2c3c 0000 0700 movel #1792,%d6 48d22: 2006 movel %d6,%d0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
48d24: 49f3 5804 lea %a3@(00000004,%d5:l),%a4 48d28: 40c3 movew %sr,%d3 48d2a: 8083 orl %d3,%d0 48d2c: 46c0 movew %d0,%sr 48d2e: 2803 movel %d3,%d4
search_thread = (Thread_Control *) header->first;
48d30: 2073 5800 moveal %a3@(00000000,%d5:l),%a0
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
48d34: b9c8 cmpal %a0,%a4 48d36: 6700 013c beqw 48e74 <_Thread_queue_Enqueue_priority+0x194>
search_priority = search_thread->current_priority;
48d3a: 2268 0014 moveal %a0@(20),%a1
if ( priority <= search_priority )
48d3e: b3c1 cmpal %d1,%a1
48d40: 6418 bccs 48d5a <_Thread_queue_Enqueue_priority+0x7a>
break;
search_priority = search_thread->current_priority;
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
48d42: 2006 movel %d6,%d0 48d44: 46c3 movew %d3,%sr 48d46: 8083 orl %d3,%d0 48d48: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE bool _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
48d4a: 2002 movel %d2,%d0 48d4c: c0a8 0010 andl %a0@(16),%d0
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48d50: 6700 00c0 beqw 48e12 <_Thread_queue_Enqueue_priority+0x132>
_ISR_Enable( level );
goto restart_forward_search;
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
48d54: 2050 moveal %a0@,%a0
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) header->first;
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
48d56: b9c8 cmpal %a0,%a4
48d58: 66e0 bnes 48d3a <_Thread_queue_Enqueue_priority+0x5a>
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48d5a: 202b 0030 movel %a3@(48),%d0 48d5e: 7401 moveq #1,%d2 48d60: b480 cmpl %d0,%d2 48d62: 6700 00c6 beqw 48e2a <_Thread_queue_Enqueue_priority+0x14a>
* 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;
48d66: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 48d6a: 2084 movel %d4,%a0@ <== NOT EXECUTED
return the_thread_queue->sync_state; }
48d6c: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED 48d70: 4e5e unlk %fp <== NOT EXECUTED 48d72: 4e75 rts <== NOT EXECUTED
_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 ];
48d74: 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;
48d76: 4283 clrl %d3 48d78: 1639 0005 e3e2 moveb 5e3e2 <rtems_maximum_priority>,%d3
_ISR_Disable( level );
48d7e: 2c3c 0000 0700 movel #1792,%d6
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48d84: 2243 moveal %d3,%a1 48d86: 5289 addql #1,%a1
_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 ];
48d88: e588 lsll #2,%d0 48d8a: e98d lsll #4,%d5 48d8c: 9a80 subl %d0,%d5 48d8e: da8b addl %a3,%d5
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) header->last;
48d90: 2845 moveal %d5,%a4 48d92: 508c addql #8,%a4
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
48d94: 2006 movel %d6,%d0 48d96: 40c3 movew %sr,%d3 48d98: 8083 orl %d3,%d0 48d9a: 46c0 movew %d0,%sr 48d9c: 2803 movel %d3,%d4
search_thread = (Thread_Control *) header->last;
48d9e: 2054 moveal %a4@,%a0
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
48da0: ba88 cmpl %a0,%d5
48da2: 6720 beqs 48dc4 <_Thread_queue_Enqueue_priority+0xe4>
search_priority = search_thread->current_priority;
48da4: 2268 0014 moveal %a0@(20),%a1
if ( priority >= search_priority )
48da8: b3c1 cmpal %d1,%a1
48daa: 6318 blss 48dc4 <_Thread_queue_Enqueue_priority+0xe4><== ALWAYS TAKEN
break;
search_priority = search_thread->current_priority;
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
48dac: 2006 movel %d6,%d0 <== NOT EXECUTED 48dae: 46c3 movew %d3,%sr <== NOT EXECUTED 48db0: 8083 orl %d3,%d0 <== NOT EXECUTED 48db2: 46c0 movew %d0,%sr <== NOT EXECUTED 48db4: 2002 movel %d2,%d0 <== NOT EXECUTED 48db6: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48dba: 6736 beqs 48df2 <_Thread_queue_Enqueue_priority+0x112><== NOT EXECUTED
_ISR_Enable( level );
goto restart_reverse_search;
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
48dbc: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) header->last;
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
48dc0: ba88 cmpl %a0,%d5 <== NOT EXECUTED 48dc2: 66e0 bnes 48da4 <_Thread_queue_Enqueue_priority+0xc4><== NOT EXECUTED
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
48dc4: 202b 0030 movel %a3@(48),%d0 48dc8: 7401 moveq #1,%d2 48dca: b480 cmpl %d0,%d2
48dcc: 6698 bnes 48d66 <_Thread_queue_Enqueue_priority+0x86><== NEVER TAKEN
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
48dce: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
48dd2: b3c1 cmpal %d1,%a1
48dd4: 677a beqs 48e50 <_Thread_queue_Enqueue_priority+0x170><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
48dd6: 2250 moveal %a0@,%a1
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
48dd8: 2548 0004 movel %a0,%a2@(4)
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
48ddc: 2489 movel %a1,%a2@
the_node->previous = search_node; search_node->next = the_node; next_node->previous = the_node;
48dde: 234a 0004 movel %a2,%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;
48de2: 208a movel %a2,%a0@
next_node->previous = the_node; the_thread->Wait.queue = the_thread_queue;
48de4: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
48de8: 46c3 movew %d3,%sr
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
48dea: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 48dee: 4e5e unlk %fp 48df0: 4e75 rts
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
48df2: 46c3 movew %d3,%sr <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48df4: 4283 clrl %d3 <== NOT EXECUTED 48df6: 1639 0005 e3e2 moveb 5e3e2 <rtems_maximum_priority>,%d3 <== NOT EXECUTED
_ISR_Disable( level );
48dfc: 2006 movel %d6,%d0 <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48dfe: 2243 moveal %d3,%a1 <== NOT EXECUTED 48e00: 5289 addql #1,%a1 <== NOT EXECUTED
_ISR_Disable( level );
48e02: 40c3 movew %sr,%d3 <== NOT EXECUTED 48e04: 8083 orl %d3,%d0 <== NOT EXECUTED 48e06: 46c0 movew %d0,%sr <== NOT EXECUTED 48e08: 2803 movel %d3,%d4 <== NOT EXECUTED
search_thread = (Thread_Control *) header->last;
48e0a: 2054 moveal %a4@,%a0 <== NOT EXECUTED
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
48e0c: ba88 cmpl %a0,%d5 <== NOT EXECUTED 48e0e: 6694 bnes 48da4 <_Thread_queue_Enqueue_priority+0xc4><== NOT EXECUTED 48e10: 60b2 bras 48dc4 <_Thread_queue_Enqueue_priority+0xe4><== NOT EXECUTED
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
48e12: 46c3 movew %d3,%sr <== NOT EXECUTED
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
48e14: 2006 movel %d6,%d0 <== NOT EXECUTED 48e16: 40c3 movew %sr,%d3 <== NOT EXECUTED 48e18: 8083 orl %d3,%d0 <== NOT EXECUTED 48e1a: 46c0 movew %d0,%sr <== NOT EXECUTED 48e1c: 2803 movel %d3,%d4 <== NOT EXECUTED
search_thread = (Thread_Control *) header->first;
48e1e: 2073 5800 moveal %a3@(00000000,%d5:l),%a0 <== NOT EXECUTED
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
48e22: b9c8 cmpal %a0,%a4 <== NOT EXECUTED 48e24: 6600 ff14 bnew 48d3a <_Thread_queue_Enqueue_priority+0x5a><== NOT EXECUTED 48e28: 604a bras 48e74 <_Thread_queue_Enqueue_priority+0x194><== NOT EXECUTED
if ( the_thread_queue->sync_state !=
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
48e2a: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
48e2e: b3c1 cmpal %d1,%a1
48e30: 671e beqs 48e50 <_Thread_queue_Enqueue_priority+0x170><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
previous_node = search_node->previous;
48e32: 2268 0004 moveal %a0@(4),%a1
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
48e36: 2488 movel %a0,%a2@
the_node->previous = previous_node;
48e38: 2549 0004 movel %a1,%a2@(4)
previous_node->next = the_node;
48e3c: 228a movel %a2,%a1@
search_node->previous = the_node;
48e3e: 214a 0004 movel %a2,%a0@(4)
the_thread->Wait.queue = the_thread_queue;
48e42: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
48e46: 46c3 movew %d3,%sr
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
48e48: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 48e4c: 4e5e unlk %fp 48e4e: 4e75 rts
48e50: 41e8 003c lea %a0@(60),%a0 <== NOT EXECUTED
_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;
48e54: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
48e58: 2488 movel %a0,%a2@ <== NOT EXECUTED
the_node->previous = previous_node;
48e5a: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous_node->next = the_node;
48e5e: 228a movel %a2,%a1@ <== NOT EXECUTED
search_node->previous = the_node;
48e60: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
48e64: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
48e68: 46c4 movew %d4,%sr <== NOT EXECUTED
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
48e6a: 7001 moveq #1,%d0 <== NOT EXECUTED
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
48e6c: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED 48e70: 4e5e unlk %fp <== NOT EXECUTED 48e72: 4e75 rts <== NOT EXECUTED
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48e74: 202b 0030 movel %a3@(48),%d0
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
48e78: 327c ffff moveaw #-1,%a1
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48e7c: 7401 moveq #1,%d2 48e7e: b480 cmpl %d0,%d2 48e80: 6600 fee4 bnew 48d66 <_Thread_queue_Enqueue_priority+0x86> 48e84: 60a4 bras 48e2a <_Thread_queue_Enqueue_priority+0x14a>
...
00048c38 <_Thread_queue_Enqueue_with_handler>:
void _Thread_queue_Enqueue_with_handler(
Thread_queue_Control *the_thread_queue,
Watchdog_Interval timeout,
Thread_queue_Timeout_callout handler
)
{
48c38: 4e56 fff0 linkw %fp,#-16 48c3c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 48c40: 266e 0008 moveal %fp@(8),%a3
else #endif /* * Set the blocking state for this thread queue in the thread. */ _Thread_Set_state( the_thread, the_thread_queue->state );
48c44: 2f2b 0038 movel %a3@(56),%sp@-
Thread_queue_Control *,
Thread_Control *,
ISR_Level *
);
the_thread = _Thread_Executing;
48c48: 2479 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a2
void _Thread_queue_Enqueue_with_handler(
Thread_queue_Control *the_thread_queue,
Watchdog_Interval timeout,
Thread_queue_Timeout_callout handler
)
{
48c4e: 242e 000c movel %fp@(12),%d2
else #endif /* * Set the blocking state for this thread queue in the thread. */ _Thread_Set_state( the_thread, the_thread_queue->state );
48c52: 2f0a movel %a2,%sp@- 48c54: 4eb9 0004 90a8 jsr 490a8 <_Thread_Set_state>
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
48c5a: 508f addql #8,%sp 48c5c: 4a82 tstl %d2
48c5e: 663e bnes 48c9e <_Thread_queue_Enqueue_with_handler+0x66><== NEVER TAKEN
* Now enqueue the thread per the discipline for this thread queue.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
enqueue_p = _Thread_queue_Enqueue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
enqueue_p = _Thread_queue_Enqueue_fifo;
48c60: 41f9 0004 cad0 lea 4cad0 <_Thread_queue_Enqueue_fifo>,%a0
}
/*
* Now enqueue the thread per the discipline for this thread queue.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
48c66: 7001 moveq #1,%d0 48c68: b0ab 0034 cmpl %a3@(52),%d0
48c6c: 676a beqs 48cd8 <_Thread_queue_Enqueue_with_handler+0xa0><== ALWAYS TAKEN
enqueue_p = _Thread_queue_Enqueue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
enqueue_p = _Thread_queue_Enqueue_fifo;
sync_state = (*enqueue_p)( the_thread_queue, the_thread, &level );
48c6e: 486e fffc pea %fp@(-4) 48c72: 2f0a movel %a2,%sp@- 48c74: 2f0b movel %a3,%sp@- 48c76: 4e90 jsr %a0@
if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
48c78: 4fef 000c lea %sp@(12),%sp 48c7c: 7201 moveq #1,%d1 48c7e: b280 cmpl %d0,%d1
48c80: 6712 beqs 48c94 <_Thread_queue_Enqueue_with_handler+0x5c><== ALWAYS TAKEN
_Thread_blocking_operation_Cancel( sync_state, the_thread, level );
48c82: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 48c86: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48c88: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48c8a: 4eb9 0004 814c jsr 4814c <_Thread_blocking_operation_Cancel><== NOT EXECUTED 48c90: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
48c94: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 48c9a: 4e5e unlk %fp 48c9c: 4e75 rts
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
_Watchdog_Initialize(
48c9e: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
48ca2: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED
the_watchdog->id = id;
48ca8: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48cac: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data;
48cb0: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
48cb4: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
48cb8: 486a 0048 pea %a2@(72) <== NOT EXECUTED 48cbc: 4879 0005 fd4e pea 5fd4e <_Watchdog_Ticks_chain> <== NOT EXECUTED 48cc2: 4eb9 0004 98ec jsr 498ec <_Watchdog_Insert> <== NOT EXECUTED 48cc8: 508f addql #8,%sp <== NOT EXECUTED
* Now enqueue the thread per the discipline for this thread queue.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
enqueue_p = _Thread_queue_Enqueue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
enqueue_p = _Thread_queue_Enqueue_fifo;
48cca: 41f9 0004 cad0 lea 4cad0 <_Thread_queue_Enqueue_fifo>,%a0 <== NOT EXECUTED
}
/*
* Now enqueue the thread per the discipline for this thread queue.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
48cd0: 7001 moveq #1,%d0 <== NOT EXECUTED 48cd2: b0ab 0034 cmpl %a3@(52),%d0 <== NOT EXECUTED 48cd6: 6696 bnes 48c6e <_Thread_queue_Enqueue_with_handler+0x36><== NOT EXECUTED
enqueue_p = _Thread_queue_Enqueue_priority;
48cd8: 41f9 0004 8ce0 lea 48ce0 <_Thread_queue_Enqueue_priority>,%a0 48cde: 608e bras 48c6e <_Thread_queue_Enqueue_with_handler+0x36>
0004cb2c <_Thread_queue_Extract>:
{
/*
* Can not use indirect function pointer here since Extract priority
* is a macro and the underlying methods do not have the same signature.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
4cb2c: 7201 moveq #1,%d1 <== NOT EXECUTED
void _Thread_queue_Extract(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
4cb2e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cb32: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4cb36: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
/* * Can not use indirect function pointer here since Extract priority * is a macro and the underlying methods do not have the same signature. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
4cb3a: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED 4cb3e: 6710 beqs 4cb50 <_Thread_queue_Extract+0x24> <== NOT EXECUTED
_Thread_queue_Extract_priority( the_thread_queue, the_thread );
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
4cb40: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4cb44: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4cb48: 4e5e unlk %fp <== NOT EXECUTED
* is a macro and the underlying methods do not have the same signature.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
_Thread_queue_Extract_priority( the_thread_queue, the_thread );
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
4cb4a: 4ef9 0004 e798 jmp 4e798 <_Thread_queue_Extract_fifo> <== NOT EXECUTED
/*
* Can not use indirect function pointer here since Extract priority
* is a macro and the underlying methods do not have the same signature.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
_Thread_queue_Extract_priority( the_thread_queue, the_thread );
4cb50: 42a7 clrl %sp@- <== NOT EXECUTED 4cb52: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cb54: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cb56: 4eb9 0004 cb64 jsr 4cb64 <_Thread_queue_Extract_priority_helper><== NOT EXECUTED 4cb5c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
}
4cb60: 4e5e unlk %fp <== NOT EXECUTED
0004e798 <_Thread_queue_Extract_fifo>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
4e798: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _Thread_queue_Extract_fifo(
Thread_queue_Control *the_thread_queue __attribute__((unused)),
Thread_Control *the_thread
)
{
4e79e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e7a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e7a4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4e7a8: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e7aa: 8081 orl %d1,%d0 <== NOT EXECUTED 4e7ac: 46c0 movew %d0,%sr <== NOT EXECUTED 4e7ae: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4e7b2: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4e7b8: 6734 beqs 4e7ee <_Thread_queue_Extract_fifo+0x56><== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4e7ba: 2252 moveal %a2@,%a1 <== NOT EXECUTED
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4e7bc: 7002 moveq #2,%d0 <== NOT EXECUTED
previous = the_node->previous;
4e7be: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4e7c2: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4e7c6: 2089 movel %a1,%a0@ <== NOT EXECUTED
return;
}
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
4e7c8: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4e7cc: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4e7d0: 6726 beqs 4e7f8 <_Thread_queue_Extract_fifo+0x60><== NOT EXECUTED
_ISR_Enable( level );
4e7d2: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4e7d4: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4e7d8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e7dc: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4e7e2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4e7e6: 4e5e unlk %fp <== NOT EXECUTED 4e7e8: 4ef9 0004 8300 jmp 48300 <_Thread_Clear_state> <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
_ISR_Enable( level );
4e7ee: 46c1 movew %d1,%sr <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4e7f0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e7f4: 4e5e unlk %fp <== NOT EXECUTED 4e7f6: 4e75 rts <== NOT EXECUTED 4e7f8: 7003 moveq #3,%d0 <== NOT EXECUTED 4e7fa: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4e7fe: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4e800: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4e804: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> <== NOT EXECUTED 4e80a: 588f addql #4,%sp <== NOT EXECUTED 4e80c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4e812: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4e816: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e81a: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4e81e: 4e5e unlk %fp <== NOT EXECUTED 4e820: 4ef9 0004 8300 jmp 48300 <_Thread_Clear_state> <== NOT EXECUTED
...
0004cb64 <_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 );
4cb64: 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
)
{
4cb6a: 4e56 ffec linkw %fp,#-20 4cb6e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 4cb72: 246e 000c moveal %fp@(12),%a2 4cb76: 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 );
4cb7a: 40c1 movew %sr,%d1 4cb7c: 8081 orl %d1,%d0 4cb7e: 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);
4cb80: 202a 0010 movel %a2@(16),%d0 4cb84: 0280 0003 bee0 andil #245472,%d0
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4cb8a: 6778 beqs 4cc04 <_Thread_queue_Extract_priority_helper+0xa0><== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4cb8c: 200a movel %a2,%d0 4cb8e: 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;
4cb94: 2652 moveal %a2@,%a3
previous_node = the_node->previous;
4cb96: 286a 0004 moveal %a2@(4),%a4
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4cb9a: 206a 0038 moveal %a2@(56),%a0
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
4cb9e: b088 cmpl %a0,%d0
4cba0: 676e beqs 4cc10 <_Thread_queue_Extract_priority_helper+0xac><== ALWAYS TAKEN
new_first_node = the_thread->Wait.Block2n.first;
new_first_thread = (Thread_Control *) new_first_node;
last_node = the_thread->Wait.Block2n.last;
4cba2: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED
new_second_node = new_first_node->next;
4cba6: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
4cba8: 2748 0004 movel %a0,%a3@(4) <== NOT EXECUTED
new_first_node = the_thread->Wait.Block2n.first;
new_first_thread = (Thread_Control *) new_first_node;
last_node = the_thread->Wait.Block2n.last;
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
4cbac: 2888 movel %a0,%a4@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
4cbae: 214c 0004 movel %a4,%a0@(4) <== NOT EXECUTED
last_node = the_thread->Wait.Block2n.last;
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;
4cbb2: 208b movel %a3,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4cbb4: b1c9 cmpal %a1,%a0 <== NOT EXECUTED 4cbb6: 6716 beqs 4cbce <_Thread_queue_Extract_priority_helper+0x6a><== NOT EXECUTED
/* > two threads on 2-n */
new_second_node->previous =
_Chain_Head( &new_first_thread->Wait.Block2n );
4cbb8: 47e8 0038 lea %a0@(56),%a3 <== NOT EXECUTED 4cbbc: 2b4b 0004 movel %a3,%a5@(4) <== NOT EXECUTED
new_first_thread->Wait.Block2n.first = new_second_node;
4cbc0: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED
new_first_thread->Wait.Block2n.last = last_node;
4cbc4: 2149 0040 movel %a1,%a0@(64) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4cbc8: 41e8 003c lea %a0@(60),%a0 <== NOT EXECUTED 4cbcc: 2288 movel %a0,%a1@ <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4cbce: 4a02 tstb %d2 <== NOT EXECUTED 4cbd0: 6626 bnes 4cbf8 <_Thread_queue_Extract_priority_helper+0x94><== NOT EXECUTED
_ISR_Enable( level );
return;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4cbd2: 7002 moveq #2,%d0 <== NOT EXECUTED 4cbd4: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4cbd8: 6742 beqs 4cc1c <_Thread_queue_Extract_priority_helper+0xb8><== NOT EXECUTED
_ISR_Enable( level );
4cbda: 46c1 movew %d1,%sr <== NOT EXECUTED 4cbdc: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 4cbe0: 267c 1003 fff8 moveal #268697592,%a3 <== NOT EXECUTED 4cbe6: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cbea: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4cbf0: 4e5e unlk %fp <== NOT EXECUTED 4cbf2: 4ef9 0004 8300 jmp 48300 <_Thread_Clear_state> <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
_ISR_Enable( level );
4cbf8: 46c1 movew %d1,%sr
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cbfa: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 4cc00: 4e5e unlk %fp 4cc02: 4e75 rts
Chain_Node *last_node;
the_node = (Chain_Node *) the_thread;
_ISR_Disable( level );
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
_ISR_Enable( level );
4cc04: 46c1 movew %d1,%sr <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cc06: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4cc0c: 4e5e unlk %fp <== NOT EXECUTED 4cc0e: 4e75 rts <== NOT EXECUTED
new_first_thread->Wait.Block2n.last = last_node;
last_node->next = _Chain_Tail( &new_first_thread->Wait.Block2n );
}
} else {
previous_node->next = next_node;
4cc10: 288b movel %a3,%a4@
next_node->previous = previous_node;
4cc12: 274c 0004 movel %a4,%a3@(4)
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4cc16: 4a02 tstb %d2
4cc18: 67b8 beqs 4cbd2 <_Thread_queue_Extract_priority_helper+0x6e><== NEVER TAKEN
4cc1a: 60dc bras 4cbf8 <_Thread_queue_Extract_priority_helper+0x94>
4cc1c: 7003 moveq #3,%d0 <== NOT EXECUTED 4cc1e: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4cc22: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4cc24: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4cc28: 267c 1003 fff8 moveal #268697592,%a3 <== NOT EXECUTED 4cc2e: 4eb9 0004 9a34 jsr 49a34 <_Watchdog_Remove> <== NOT EXECUTED 4cc34: 588f addql #4,%sp <== NOT EXECUTED 4cc36: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 4cc3a: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cc3e: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4cc44: 4e5e unlk %fp <== NOT EXECUTED 4cc46: 4ef9 0004 8300 jmp 48300 <_Thread_Clear_state> <== NOT EXECUTED
00048e88 <_Thread_queue_Extract_with_proxy>:
*/
bool _Thread_queue_Extract_with_proxy(
Thread_Control *the_thread
)
{
48e88: 4e56 0000 linkw %fp,#0 48e8c: 206e 0008 moveal %fp@(8),%a0
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
48e90: 2028 0010 movel %a0@(16),%d0 48e94: 0280 0003 bee0 andil #245472,%d0
States_Control state;
state = the_thread->current_state;
if ( _States_Is_waiting_on_thread_queue( state ) ) {
48e9a: 6606 bnes 48ea2 <_Thread_queue_Extract_with_proxy+0x1a><== NEVER TAKEN
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
}
48e9c: 4e5e unlk %fp
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
48e9e: 4200 clrb %d0
}
48ea0: 4e75 rts
if ( proxy_extract_callout )
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
48ea2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48ea4: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED 48ea8: 4eb9 0004 cb2c jsr 4cb2c <_Thread_queue_Extract> <== NOT EXECUTED
return true;
48eae: 508f addql #8,%sp <== NOT EXECUTED
} return false; }
48eb0: 4e5e unlk %fp <== NOT EXECUTED
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
48eb2: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
...
0004b07c <_Thread_queue_First>:
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
first_p = _Thread_queue_First_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
first_p = _Thread_queue_First_fifo;
4b07c: 43f9 0004 ee8c lea 4ee8c <_Thread_queue_First_fifo>,%a1 <== NOT EXECUTED
Thread_queue_Control *the_thread_queue
)
{
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
4b082: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First(
Thread_queue_Control *the_thread_queue
)
{
4b084: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b088: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
4b08c: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4b090: 6708 beqs 4b09a <_Thread_queue_First+0x1e> <== NOT EXECUTED
first_p = _Thread_queue_First_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
first_p = _Thread_queue_First_fifo;
return (*first_p)( the_thread_queue );
4b092: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4b096: 4e5e unlk %fp <== NOT EXECUTED
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
first_p = _Thread_queue_First_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
first_p = _Thread_queue_First_fifo;
return (*first_p)( the_thread_queue );
4b098: 4ed1 jmp %a1@ <== NOT EXECUTED 4b09a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4b09e: 4e5e unlk %fp <== NOT EXECUTED
)
{
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
first_p = _Thread_queue_First_priority;
4b0a0: 43f9 0004 b0a8 lea 4b0a8 <_Thread_queue_First_priority>,%a1<== NOT EXECUTED
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
first_p = _Thread_queue_First_fifo;
return (*first_p)( the_thread_queue );
4b0a6: 4ed1 jmp %a1@ <== NOT EXECUTED
0004ee8c <_Thread_queue_First_fifo>:
*/
Thread_Control *_Thread_queue_First_fifo(
Thread_queue_Control *the_thread_queue
)
{
4ee8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4ee90: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4ee94: 2018 movel %a0@+,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) )
4ee96: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 4ee98: 6704 beqs 4ee9e <_Thread_queue_First_fifo+0x12> <== NOT EXECUTED
return (Thread_Control *) the_thread_queue->Queues.Fifo.first;
return NULL;
}
4ee9a: 4e5e unlk %fp <== NOT EXECUTED 4ee9c: 4e75 rts <== NOT EXECUTED
)
{
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) )
return (Thread_Control *) the_thread_queue->Queues.Fifo.first;
return NULL;
4ee9e: 4280 clrl %d0 <== NOT EXECUTED
}
4eea0: 4e5e unlk %fp <== NOT EXECUTED
0004b0a8 <_Thread_queue_First_priority>:
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
4b0a8: 4281 clrl %d1 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First_priority (
Thread_queue_Control *the_thread_queue
)
{
4b0aa: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b0ae: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4b0b2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
index++ ) {
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
return (Thread_Control *)
the_thread_queue->Queues.Priority[ index ].first;
}
return NULL;
4b0b6: 204a moveal %a2,%a0 <== NOT EXECUTED 4b0b8: 2601 movel %d1,%d3 <== NOT EXECUTED 4b0ba: 2401 movel %d1,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
4b0bc: 5281 addql #1,%d1 <== NOT EXECUTED 4b0be: e58b lsll #2,%d3 <== NOT EXECUTED 4b0c0: e98a lsll #4,%d2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4b0c2: 2010 movel %a0@,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4b0c4: 9483 subl %d3,%d2 <== NOT EXECUTED 4b0c6: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED 4b0ca: 43f2 2804 lea %a2@(00000004,%d2:l),%a1 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
4b0ce: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 4b0d0: 6608 bnes 4b0da <_Thread_queue_First_priority+0x32><== NOT EXECUTED
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
4b0d2: 7004 moveq #4,%d0 <== NOT EXECUTED 4b0d4: b081 cmpl %d1,%d0 <== NOT EXECUTED 4b0d6: 66e0 bnes 4b0b8 <_Thread_queue_First_priority+0x10><== NOT EXECUTED
index++ ) {
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
return (Thread_Control *)
the_thread_queue->Queues.Priority[ index ].first;
}
return NULL;
4b0d8: 4200 clrb %d0 <== NOT EXECUTED
}
4b0da: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 4b0de: 4e5e unlk %fp <== NOT EXECUTED
...
00048ef4 <_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 ) {
48ef4: 7201 moveq #1,%d1
Thread_queue_Control *the_thread_queue,
Thread_queue_Disciplines the_discipline,
States_Control state,
uint32_t timeout_status
)
{
48ef6: 4e56 0000 linkw %fp,#0 48efa: 206e 0008 moveal %fp@(8),%a0 48efe: 2f0a movel %a2,%sp@- 48f00: 202e 000c movel %fp@(12),%d0 48f04: 2f02 movel %d2,%sp@-
the_thread_queue->state = state;
48f06: 216e 0010 0038 movel %fp@(16),%a0@(56)
the_thread_queue->discipline = the_discipline; the_thread_queue->timeout_status = timeout_status;
48f0c: 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;
48f12: 2140 0034 movel %d0,%a0@(52)
the_thread_queue->timeout_status = timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
48f16: 42a8 0030 clrl %a0@(48)
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
48f1a: b280 cmpl %d0,%d1
48f1c: 6716 beqs 48f34 <_Thread_queue_Initialize+0x40>
48f1e: 2448 moveal %a0,%a2 48f20: 588a addql #4,%a2
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
48f22: 42a8 0004 clrl %a0@(4)
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
48f26: 208a movel %a2,%a0@
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
the_chain->last = _Chain_Head(the_chain);
48f28: 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 );
}
}
48f2c: 241f movel %sp@+,%d2 48f2e: 245f moveal %sp@+,%a2 48f30: 4e5e unlk %fp 48f32: 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 ) {
48f34: 2248 moveal %a0,%a1 48f36: 4280 clrl %d0
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
48f38: 2400 movel %d0,%d2 48f3a: 2200 movel %d0,%d1
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
48f3c: 5280 addql #1,%d0 48f3e: e58a lsll #2,%d2 48f40: e989 lsll #4,%d1
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
48f42: 42a9 0004 clrl %a1@(4)
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
48f46: 9282 subl %d2,%d1
_Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] );
48f48: 45f0 1800 lea %a0@(00000000,%d1:l),%a2 48f4c: 234a 0008 movel %a2,%a1@(8) 48f50: 45f0 1804 lea %a0@(00000004,%d1:l),%a2
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
48f54: 7204 moveq #4,%d1 48f56: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
48f58: 43e9 000c lea %a1@(12),%a1
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
48f5c: b280 cmpl %d0,%d1
48f5e: 67cc beqs 48f2c <_Thread_queue_Initialize+0x38> <== NEVER TAKEN
48f60: 2400 movel %d0,%d2 48f62: 2200 movel %d0,%d1
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
48f64: 5280 addql #1,%d0 48f66: e58a lsll #2,%d2 48f68: e989 lsll #4,%d1
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
48f6a: 42a9 0004 clrl %a1@(4)
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
48f6e: 9282 subl %d2,%d1
_Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] );
48f70: 45f0 1800 lea %a0@(00000000,%d1:l),%a2 48f74: 234a 0008 movel %a2,%a1@(8) 48f78: 45f0 1804 lea %a0@(00000004,%d1:l),%a2
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
48f7c: 7204 moveq #4,%d1 48f7e: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
48f80: 43e9 000c lea %a1@(12),%a1
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
48f84: b280 cmpl %d0,%d1
48f86: 66b0 bnes 48f38 <_Thread_queue_Initialize+0x44>
48f88: 60a2 bras 48f2c <_Thread_queue_Initialize+0x38>
...
0004cc4c <_Thread_queue_Process_timeout>:
#include <rtems/score/tqdata.h>
void _Thread_queue_Process_timeout(
Thread_Control *the_thread
)
{
4cc4c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cc50: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;
4cc54: 2268 0044 moveal %a0@(68),%a1 <== NOT EXECUTED
* 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 &&
4cc58: 2029 0030 movel %a1@(48),%d0 <== NOT EXECUTED 4cc5c: 6708 beqs 4cc66 <_Thread_queue_Process_timeout+0x1a><== NOT EXECUTED 4cc5e: b1f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4cc64: 6716 beqs 4cc7c <_Thread_queue_Process_timeout+0x30><== NOT EXECUTED
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;
4cc66: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4cc6c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cc6e: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4cc70: 4eb9 0004 cb2c jsr 4cb2c <_Thread_queue_Extract> <== NOT EXECUTED 4cc76: 508f addql #8,%sp <== NOT EXECUTED
} }
4cc78: 4e5e unlk %fp <== NOT EXECUTED 4cc7a: 4e75 rts <== NOT EXECUTED
* 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 ) {
4cc7c: 7203 moveq #3,%d1 <== NOT EXECUTED 4cc7e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4cc80: 67f6 beqs 4cc78 <_Thread_queue_Process_timeout+0x2c><== NOT EXECUTED
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4cc82: 7002 moveq #2,%d0 <== NOT EXECUTED
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
}
}
4cc84: 4e5e unlk %fp <== NOT EXECUTED
*/
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;
4cc86: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4cc8c: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
}
}
...
00048f8c <_Thread_queue_Requeue>:
void _Thread_queue_Requeue(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
48f8c: 4e56 fff0 linkw %fp,#-16 48f90: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 48f94: 246e 0008 moveal %fp@(8),%a2 48f98: 266e 000c moveal %fp@(12),%a3
/* * Just in case the thread really wasn't blocked on a thread queue * when we get here. */ if ( !the_thread_queue )
48f9c: 4a8a tstl %a2
48f9e: 6708 beqs 48fa8 <_Thread_queue_Requeue+0x1c> <== 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 ) {
48fa0: 7001 moveq #1,%d0 48fa2: b0aa 0034 cmpl %a2@(52),%d0
48fa6: 670a beqs 48fb2 <_Thread_queue_Requeue+0x26> <== ALWAYS TAKEN
_Thread_queue_Extract_priority_helper( tq, the_thread, true );
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
}
_ISR_Enable( level );
}
}
48fa8: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 48fae: 4e5e unlk %fp <== NOT EXECUTED 48fb0: 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 );
48fb2: 303c 0700 movew #1792,%d0 48fb6: 40c2 movew %sr,%d2 48fb8: 8082 orl %d2,%d0 48fba: 46c0 movew %d0,%sr 48fbc: 202b 0010 movel %a3@(16),%d0 48fc0: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
48fc6: 660c bnes 48fd4 <_Thread_queue_Requeue+0x48> <== 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 );
48fc8: 46c2 movew %d2,%sr <== NOT EXECUTED
} }
48fca: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 48fd0: 4e5e unlk %fp 48fd2: 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 );
48fd4: 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;
48fd8: 7001 moveq #1,%d0 48fda: 2f0b movel %a3,%sp@- 48fdc: 2540 0030 movel %d0,%a2@(48) 48fe0: 2f0a movel %a2,%sp@- 48fe2: 4eb9 0004 cb64 jsr 4cb64 <_Thread_queue_Extract_priority_helper>
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
48fe8: 486e fffc pea %fp@(-4) 48fec: 2f0b movel %a3,%sp@- 48fee: 2f0a movel %a2,%sp@- 48ff0: 4eb9 0004 8ce0 jsr 48ce0 <_Thread_queue_Enqueue_priority> 48ff6: 4fef 0018 lea %sp@(24),%sp
}
_ISR_Enable( level );
48ffa: 46c2 movew %d2,%sr 48ffc: 60cc bras 48fca <_Thread_queue_Requeue+0x3e>
...
00049000 <_Thread_queue_Timeout>:
void _Thread_queue_Timeout(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
49000: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49004: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49008: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4900c: 4eb9 0004 870c jsr 4870c <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
49012: 508f addql #8,%sp <== NOT EXECUTED 49014: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49018: 6618 bnes 49032 <_Thread_queue_Timeout+0x32> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_queue_Process_timeout( the_thread );
4901a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4901c: 4eb9 0004 cc4c jsr 4cc4c <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
49022: 588f addql #4,%sp <== NOT EXECUTED 49024: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4902a: 5380 subql #1,%d0 <== NOT EXECUTED 4902c: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
49032: 4e5e unlk %fp <== NOT EXECUTED
...
00059088 <_Timer_server_Body>:
* @a arg points to the corresponding timer server control block.
*/
static rtems_task _Timer_server_Body(
rtems_task_argument arg
)
{
59088: 4e56 ffb0 linkw %fp,#-80 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
5908c: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED 59090: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 59094: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 59098: 2c0e movel %fp,%d6 <== NOT EXECUTED 5909a: 260e movel %fp,%d3 <== NOT EXECUTED 5909c: 5186 subql #8,%d6 <== NOT EXECUTED 5909e: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 590a4: 240a movel %a2,%d2 <== NOT EXECUTED 590a6: 2a0a movel %a2,%d5 <== NOT EXECUTED 590a8: 4bf9 0005 d704 lea 5d704 <_Watchdog_Adjust_to_chain>,%a5 <== NOT EXECUTED 590ae: 0682 0000 0030 addil #48,%d2 <== NOT EXECUTED 590b4: 0685 0000 0068 addil #104,%d5 <== NOT EXECUTED 590ba: 47f9 0005 9cb4 lea 59cb4 <_Chain_Get>,%a3 <== NOT EXECUTED 590c0: 49f9 0005 d78c lea 5d78c <_Watchdog_Insert>,%a4 <== NOT EXECUTED
* of zero it will be processed in the next iteration of the timer server
* body loop.
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
590c6: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED 590cc: 2d48 ffd8 movel %a0,%fp@(-40) <== NOT EXECUTED 590d0: 41ea 0008 lea %a2@(8),%a0 <== NOT EXECUTED 590d4: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED 590d8: 41ea 0040 lea %a2@(64),%a0 <== NOT EXECUTED 590dc: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED
{
Timer_server_Control *ts = (Timer_server_Control *) arg;
Chain_Control insert_chain;
Chain_Control fire_chain;
_Chain_Initialize_empty( &insert_chain );
590e0: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED 590e4: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
590e8: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED 590ec: 2d46 fff4 movel %d6,%fp@(-12) <== NOT EXECUTED
the_chain->permanent_null = NULL;
590f0: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
590f4: 2d48 ffe8 movel %a0,%fp@(-24) <== NOT EXECUTED
the_chain->permanent_null = NULL;
590f8: 42ae ffec clrl %fp@(-20) <== NOT EXECUTED
the_chain->last = _Chain_Head(the_chain);
590fc: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED
{
/*
* 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;
59100: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED 59104: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED
static void _Timer_server_Process_interval_watchdogs(
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;
59108: 2039 0007 ec9c movel 7ec9c <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
/*
* We assume adequate unsigned arithmetic here.
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
5910e: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
watchdogs->last_snapshot = snapshot;
59112: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
59116: 9081 subl %d1,%d0 <== NOT EXECUTED 59118: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5911a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5911c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5911e: 4e95 jsr %a5@ <== NOT EXECUTED
static void _Timer_server_Process_tod_watchdogs(
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
59120: 2039 0007 ebfa movel 7ebfa <_TOD_Now>,%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 ) {
59126: 4fef 000c lea %sp@(12),%sp <== 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;
5912a: 222a 0074 movel %a2@(116),%d1 <== 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 ) {
5912e: b280 cmpl %d0,%d1 <== NOT EXECUTED 59130: 6500 0086 bcsw 591b8 <_Timer_server_Body+0x130> <== NOT EXECUTED
* TOD has been set forward.
*/
delta = snapshot - last_snapshot;
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
} else if ( snapshot < last_snapshot ) {
59134: b280 cmpl %d0,%d1 <== NOT EXECUTED 59136: 6200 00a4 bhiw 591dc <_Timer_server_Body+0x154> <== NOT EXECUTED
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
5913a: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
5913e: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 59142: 2f00 movel %d0,%sp@- <== NOT EXECUTED 59144: 4e93 jsr %a3@ <== NOT EXECUTED
if ( timer == NULL ) {
59146: 588f addql #4,%sp <== NOT EXECUTED 59148: 4a80 tstl %d0 <== NOT EXECUTED 5914a: 672e beqs 5917a <_Timer_server_Body+0xf2> <== NOT EXECUTED
static void _Timer_server_Insert_timer(
Timer_server_Control *ts,
Timer_Control *timer
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
5914c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5914e: 7e01 moveq #1,%d7 <== NOT EXECUTED 59150: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED 59154: be81 cmpl %d1,%d7 <== NOT EXECUTED 59156: 6700 00a8 beqw 59200 <_Timer_server_Body+0x178> <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
5915a: 7e03 moveq #3,%d7 <== NOT EXECUTED 5915c: be81 cmpl %d1,%d7 <== NOT EXECUTED 5915e: 66de bnes 5913e <_Timer_server_Body+0xb6> <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
59160: 2040 moveal %d0,%a0 <== NOT EXECUTED 59162: 4868 0010 pea %a0@(16) <== NOT EXECUTED 59166: 2f05 movel %d5,%sp@- <== NOT EXECUTED 59168: 4e94 jsr %a4@ <== NOT EXECUTED
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
5916a: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
)
{
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 );
5916e: 508f addql #8,%sp <== NOT EXECUTED
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
59170: 2f00 movel %d0,%sp@- <== NOT EXECUTED 59172: 4e93 jsr %a3@ <== NOT EXECUTED
if ( timer == NULL ) {
59174: 588f addql #4,%sp <== NOT EXECUTED 59176: 4a80 tstl %d0 <== NOT EXECUTED 59178: 66d2 bnes 5914c <_Timer_server_Body+0xc4> <== NOT EXECUTED
* of zero it will be processed in the next iteration of the timer server
* body loop.
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
5917a: 2004 movel %d4,%d0 <== NOT EXECUTED 5917c: 40c1 movew %sr,%d1 <== NOT EXECUTED 5917e: 8081 orl %d1,%d0 <== NOT EXECUTED 59180: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _Chain_Is_empty( insert_chain ) ) {
59182: bcae fff4 cmpl %fp@(-12),%d6 <== NOT EXECUTED 59186: 6700 0086 beqw 5920e <_Timer_server_Body+0x186> <== NOT EXECUTED
ts->insert_chain = NULL;
_ISR_Enable( level );
break;
} else {
_ISR_Enable( level );
5918a: 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;
5918c: 2039 0007 ec9c movel 7ec9c <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
/*
* We assume adequate unsigned arithmetic here.
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
59192: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
watchdogs->last_snapshot = snapshot;
59196: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
5919a: 9081 subl %d1,%d0 <== NOT EXECUTED 5919c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5919e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 591a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 591a2: 4e95 jsr %a5@ <== NOT EXECUTED
static void _Timer_server_Process_tod_watchdogs(
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
591a4: 2039 0007 ebfa movel 7ebfa <_TOD_Now>,%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 ) {
591aa: 4fef 000c lea %sp@(12),%sp <== 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;
591ae: 222a 0074 movel %a2@(116),%d1 <== 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 ) {
591b2: b280 cmpl %d0,%d1 <== NOT EXECUTED 591b4: 6400 ff7e bccw 59134 <_Timer_server_Body+0xac> <== 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 );
591b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 591ba: 2e00 movel %d0,%d7 <== NOT EXECUTED 591bc: 9e81 subl %d1,%d7 <== NOT EXECUTED 591be: 2f07 movel %d7,%sp@- <== NOT EXECUTED 591c0: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED 591c4: 2f05 movel %d5,%sp@- <== NOT EXECUTED 591c6: 4eb9 0005 d704 jsr 5d704 <_Watchdog_Adjust_to_chain> <== NOT EXECUTED 591cc: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 591d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
591d4: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 591d8: 6000 ff64 braw 5913e <_Timer_server_Body+0xb6> <== NOT EXECUTED
/*
* 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 );
591dc: 9280 subl %d0,%d1 <== NOT EXECUTED 591de: 2f01 movel %d1,%sp@- <== NOT EXECUTED 591e0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 591e4: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED 591e8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 591ea: 4eb9 0005 d670 jsr 5d670 <_Watchdog_Adjust> <== NOT EXECUTED 591f0: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 591f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
watchdogs->last_snapshot = snapshot;
591f8: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 591fc: 6000 ff40 braw 5913e <_Timer_server_Body+0xb6> <== NOT EXECUTED
Timer_server_Control *ts,
Timer_Control *timer
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
59200: 4868 0010 pea %a0@(16) <== NOT EXECUTED 59204: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59206: 4e94 jsr %a4@ <== NOT EXECUTED 59208: 508f addql #8,%sp <== NOT EXECUTED 5920a: 6000 ff32 braw 5913e <_Timer_server_Body+0xb6> <== NOT EXECUTED
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
if ( _Chain_Is_empty( insert_chain ) ) {
ts->insert_chain = NULL;
5920e: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED
_ISR_Enable( level );
59212: 46c1 movew %d1,%sr <== NOT EXECUTED
_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 ) ) {
59214: 202e ffd8 movel %fp@(-40),%d0 <== NOT EXECUTED 59218: b0ae ffe8 cmpl %fp@(-24),%d0 <== NOT EXECUTED 5921c: 6752 beqs 59270 <_Timer_server_Body+0x1e8> <== NOT EXECUTED
/*
* It is essential that interrupts are disable here since an interrupt
* service routine may remove a watchdog from the chain.
*/
_ISR_Disable( level );
5921e: 2204 movel %d4,%d1 <== NOT EXECUTED 59220: 40c0 movew %sr,%d0 <== NOT EXECUTED 59222: 8280 orl %d0,%d1 <== NOT EXECUTED 59224: 46c1 movew %d1,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
59226: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
5922a: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED 5922e: 6732 beqs 59262 <_Timer_server_Body+0x1da> <== NOT EXECUTED
{
Chain_Node *return_node;
Chain_Node *new_first;
return_node = the_chain->first;
new_first = return_node->next;
59230: 2250 moveal %a0@,%a1 <== NOT EXECUTED
the_chain->first = new_first; new_first->previous = _Chain_Head(the_chain);
59232: 2343 0004 movel %d3,%a1@(4) <== NOT EXECUTED
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
59236: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
Chain_Node *return_node;
Chain_Node *new_first;
return_node = the_chain->first;
new_first = return_node->next;
the_chain->first = new_first;
5923a: 2d49 ffe8 movel %a1,%fp@(-24) <== NOT EXECUTED
_ISR_Enable( level );
5923e: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* 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 );
59240: 2f28 0024 movel %a0@(36),%sp@- <== NOT EXECUTED 59244: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED 59248: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED 5924c: 4e90 jsr %a0@ <== NOT EXECUTED
}
5924e: 508f addql #8,%sp <== NOT EXECUTED
/*
* It is essential that interrupts are disable here since an interrupt
* service routine may remove a watchdog from the chain.
*/
_ISR_Disable( level );
59250: 2204 movel %d4,%d1 <== NOT EXECUTED 59252: 40c0 movew %sr,%d0 <== NOT EXECUTED 59254: 8280 orl %d0,%d1 <== NOT EXECUTED 59256: 46c1 movew %d1,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
59258: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
5925c: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED 59260: 66ce bnes 59230 <_Timer_server_Body+0x1a8> <== NOT EXECUTED
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
_ISR_Enable( level );
} else {
_ISR_Enable( level );
59262: 46c0 movew %d0,%sr <== NOT EXECUTED
{
/*
* 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;
59264: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED 59268: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED 5926c: 6000 fe9a braw 59108 <_Timer_server_Body+0x80> <== NOT EXECUTED
* the active flag of the timer server is true.
*/
(*watchdog->routine)( watchdog->id, watchdog->user_data );
}
} else {
ts->active = false;
59270: 4207 clrb %d7 <== NOT EXECUTED 59272: 1547 007c moveb %d7,%a2@(124) <== NOT EXECUTED 59276: 2039 0007 eb70 movel 7eb70 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5927c: 5280 addql #1,%d0 <== NOT EXECUTED 5927e: 23c0 0007 eb70 movel %d0,7eb70 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Block until there is something to do.
*/
_Thread_Disable_dispatch();
_Thread_Set_state( ts->thread, STATES_DELAYING );
59284: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED 59288: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 5928a: 4eb9 0005 cd80 jsr 5cd80 <_Thread_Set_state> <== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
59290: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59292: 4eba fd1c jsr %pc@(58fb0 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
59296: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59298: 4eba fd80 jsr %pc@(5901a <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED
_Thread_Enable_dispatch();
5929c: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
ts->active = true;
592a2: 7001 moveq #1,%d0 <== NOT EXECUTED 592a4: 1540 007c moveb %d0,%a2@(124) <== NOT EXECUTED
static void _Timer_server_Stop_interval_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );
592a8: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED 592ac: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
592b2: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED 592b6: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED 592bc: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 592c0: 6000 fe3e braw 59100 <_Timer_server_Body+0x78> <== NOT EXECUTED
00058fb0 <_Timer_server_Reset_interval_system_watchdog>:
}
static void _Timer_server_Reset_interval_system_watchdog(
Timer_server_Control *ts
)
{
58fb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 58fb4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58fb6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 58fba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
static void _Timer_server_Stop_interval_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );
58fbc: 240a movel %a2,%d2 <== NOT EXECUTED 58fbe: 5082 addql #8,%d2 <== NOT EXECUTED 58fc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58fc2: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_interval_system_watchdog( ts );
_ISR_Disable( level );
58fc8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 58fce: 40c1 movew %sr,%d1 <== NOT EXECUTED 58fd0: 8081 orl %d1,%d0 <== NOT EXECUTED 58fd2: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
58fd4: 200a movel %a2,%d0 <== NOT EXECUTED 58fd6: 0680 0000 0034 addil #52,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
58fdc: 588f addql #4,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
58fde: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED 58fe2: b088 cmpl %a0,%d0 <== NOT EXECUTED 58fe4: 6726 beqs 5900c <_Timer_server_Reset_interval_system_watchdog+0x5c><== NOT EXECUTED
Watchdog_Interval delta_interval =
58fe6: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->Interval_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
58fea: 46c1 movew %d1,%sr <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
58fec: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58fee: 4879 0007 ec32 pea 7ec32 <_Watchdog_Ticks_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
58ff4: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
58ff8: 4eb9 0005 d78c jsr 5d78c <_Watchdog_Insert> <== NOT EXECUTED
delta_interval
);
} else {
_ISR_Enable( level );
}
}
58ffe: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 59002: 508f addql #8,%sp <== NOT EXECUTED 59004: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 59008: 4e5e unlk %fp <== NOT EXECUTED 5900a: 4e75 rts <== NOT EXECUTED
_Watchdog_Insert_ticks(
&ts->Interval_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
5900c: 46c1 movew %d1,%sr <== NOT EXECUTED
} }
5900e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 59012: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 59016: 4e5e unlk %fp <== NOT EXECUTED
0005901a <_Timer_server_Reset_tod_system_watchdog>:
}
static void _Timer_server_Reset_tod_system_watchdog(
Timer_server_Control *ts
)
{
5901a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5901e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59020: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 59024: 2f02 movel %d2,%sp@- <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
59026: 240a movel %a2,%d2 <== NOT EXECUTED 59028: 0682 0000 0040 addil #64,%d2 <== NOT EXECUTED 5902e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59030: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_tod_system_watchdog( ts );
_ISR_Disable( level );
59036: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 5903c: 40c1 movew %sr,%d1 <== NOT EXECUTED 5903e: 8081 orl %d1,%d0 <== NOT EXECUTED 59040: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
59042: 200a movel %a2,%d0 <== NOT EXECUTED 59044: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
5904a: 588f addql #4,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
5904c: 206a 0068 moveal %a2@(104),%a0 <== NOT EXECUTED 59050: b088 cmpl %a0,%d0 <== NOT EXECUTED 59052: 6726 beqs 5907a <_Timer_server_Reset_tod_system_watchdog+0x60><== NOT EXECUTED
Watchdog_Interval delta_interval =
59054: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->TOD_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
59058: 46c1 movew %d1,%sr <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
5905a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5905c: 4879 0007 ec26 pea 7ec26 <_Watchdog_Seconds_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
59062: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
59066: 4eb9 0005 d78c jsr 5d78c <_Watchdog_Insert> <== NOT EXECUTED
delta_interval
);
} else {
_ISR_Enable( level );
}
}
5906c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 59070: 508f addql #8,%sp <== NOT EXECUTED 59072: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 59076: 4e5e unlk %fp <== NOT EXECUTED 59078: 4e75 rts <== NOT EXECUTED
_Watchdog_Insert_seconds(
&ts->TOD_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
5907a: 46c1 movew %d1,%sr <== NOT EXECUTED
} }
5907c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 59080: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 59084: 4e5e unlk %fp <== NOT EXECUTED
000592c4 <_Timer_server_Schedule_operation_method>:
static void _Timer_server_Schedule_operation_method(
Timer_server_Control *ts,
Timer_Control *timer
)
{
592c4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 592c8: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 592cc: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 592d0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( ts->insert_chain == NULL ) {
592d4: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 592d8: 671a beqs 592f4 <_Timer_server_Schedule_operation_method+0x30><== NOT EXECUTED
* 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 );
592da: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 592de: 2d48 000c movel %a0,%fp@(12) <== NOT EXECUTED
} }
592e2: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
* 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 );
592e8: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
} }
592ec: 4e5e unlk %fp <== NOT EXECUTED
* 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 );
592ee: 4ef9 0005 9c54 jmp 59c54 <_Chain_Append> <== NOT EXECUTED 592f4: 2039 0007 eb70 movel 7eb70 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 592fa: 5280 addql #1,%d0 <== NOT EXECUTED 592fc: 23c0 0007 eb70 movel %d0,7eb70 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* being inserted. This could result in an integer overflow.
*/
_Thread_Disable_dispatch();
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
59302: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 59306: 7201 moveq #1,%d1 <== NOT EXECUTED 59308: b280 cmpl %d0,%d1 <== NOT EXECUTED 5930a: 6700 008a beqw 59396 <_Timer_server_Schedule_operation_method+0xd2><== NOT EXECUTED
_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 ) {
5930e: 7803 moveq #3,%d4 <== NOT EXECUTED 59310: b880 cmpl %d0,%d4 <== NOT EXECUTED 59312: 670e beqs 59322 <_Timer_server_Schedule_operation_method+0x5e><== NOT EXECUTED
* 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 );
}
}
59314: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 5931a: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
5931c: 4ef9 0005 c27e jmp 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
} 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 );
59322: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 59328: 40c2 movew %sr,%d2 <== NOT EXECUTED 5932a: 8082 orl %d2,%d0 <== NOT EXECUTED 5932c: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
5932e: 260a movel %a2,%d3 <== NOT EXECUTED 59330: 0683 0000 006c addil #108,%d3 <== NOT EXECUTED
snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
59336: 2039 0007 ebfa movel 7ebfa <_TOD_Now>,%d0 <== NOT EXECUTED
last_snapshot = ts->TOD_watchdogs.last_snapshot;
5933c: 222a 0074 movel %a2@(116),%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
59340: 226a 0068 moveal %a2@(104),%a1 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
59344: b689 cmpl %a1,%d3 <== NOT EXECUTED 59346: 671c beqs 59364 <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );
delta_interval = first_watchdog->delta_interval;
59348: 2629 0010 movel %a1@(16),%d3 <== NOT EXECUTED
if ( snapshot > last_snapshot ) {
5934c: b280 cmpl %d0,%d1 <== NOT EXECUTED 5934e: 6400 00ba bccw 5940a <_Timer_server_Schedule_operation_method+0x146><== NOT EXECUTED
/*
* We advanced in time.
*/
delta = snapshot - last_snapshot;
59352: 2800 movel %d0,%d4 <== NOT EXECUTED 59354: 9881 subl %d1,%d4 <== NOT EXECUTED
if (delta_interval > delta) {
59356: b883 cmpl %d3,%d4 <== NOT EXECUTED 59358: 6400 00bc bccw 59416 <_Timer_server_Schedule_operation_method+0x152><== NOT EXECUTED
delta_interval -= delta;
5935c: 9684 subl %d4,%d3 <== NOT EXECUTED 5935e: 2203 movel %d3,%d1 <== NOT EXECUTED
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
59360: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
}
ts->TOD_watchdogs.last_snapshot = snapshot;
59364: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
_ISR_Enable( level );
59368: 46c2 movew %d2,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
5936a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 5936e: 486a 0068 pea %a2@(104) <== NOT EXECUTED 59372: 4eb9 0005 d78c jsr 5d78c <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
59378: 508f addql #8,%sp <== NOT EXECUTED 5937a: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED 5937e: 6694 bnes 59314 <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
59380: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59382: 4eba fc96 jsr %pc@(5901a <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED 59386: 588f addql #4,%sp <== NOT EXECUTED
* 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 );
}
}
59388: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 5938e: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
59390: 4ef9 0005 c27e jmp 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
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 );
59396: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 5939c: 40c3 movew %sr,%d3 <== NOT EXECUTED 5939e: 8083 orl %d3,%d0 <== NOT EXECUTED 593a0: 46c0 movew %d0,%sr <== NOT EXECUTED
snapshot = _Watchdog_Ticks_since_boot;
593a2: 2039 0007 ec9c movel 7ec9c <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
593a8: 220a movel %a2,%d1 <== NOT EXECUTED 593aa: 0681 0000 0034 addil #52,%d1 <== NOT EXECUTED
last_snapshot = ts->Interval_watchdogs.last_snapshot;
593b0: 282a 003c movel %a2@(60),%d4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
593b4: 226a 0030 moveal %a2@(48),%a1 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
593b8: b289 cmpl %a1,%d1 <== NOT EXECUTED 593ba: 6712 beqs 593ce <_Timer_server_Schedule_operation_method+0x10a><== NOT EXECUTED
first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
/*
* We assume adequate unsigned arithmetic here.
*/
delta = snapshot - last_snapshot;
593bc: 2200 movel %d0,%d1 <== NOT EXECUTED 593be: 9284 subl %d4,%d1 <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
593c0: 2429 0010 movel %a1@(16),%d2 <== NOT EXECUTED
if (delta_interval > delta) {
593c4: b481 cmpl %d1,%d2 <== NOT EXECUTED 593c6: 633a blss 59402 <_Timer_server_Schedule_operation_method+0x13e><== NOT EXECUTED
delta_interval -= delta;
593c8: 9481 subl %d1,%d2 <== NOT EXECUTED
} else {
delta_interval = 0;
}
first_watchdog->delta_interval = delta_interval;
593ca: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED
}
ts->Interval_watchdogs.last_snapshot = snapshot;
593ce: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_ISR_Enable( level );
593d2: 46c3 movew %d3,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
593d4: 4868 0010 pea %a0@(16) <== NOT EXECUTED 593d8: 486a 0030 pea %a2@(48) <== NOT EXECUTED 593dc: 4eb9 0005 d78c jsr 5d78c <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
593e2: 508f addql #8,%sp <== NOT EXECUTED 593e4: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED 593e8: 6600 ff2a bnew 59314 <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
593ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 593ee: 4eba fbc0 jsr %pc@(58fb0 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED 593f2: 588f addql #4,%sp <== NOT EXECUTED
* 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 );
}
}
593f4: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 593fa: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
593fc: 4ef9 0005 c27e jmp 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
59402: 4282 clrl %d2 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
59404: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED 59408: 60c4 bras 593ce <_Timer_server_Schedule_operation_method+0x10a><== NOT EXECUTED
}
} else {
/*
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
5940a: d283 addl %d3,%d1 <== NOT EXECUTED
delta_interval += delta;
5940c: 9280 subl %d0,%d1 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
5940e: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED 59412: 6000 ff50 braw 59364 <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
*/
delta = snapshot - last_snapshot;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
59416: 4281 clrl %d1 <== NOT EXECUTED
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
59418: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED 5941c: 6000 ff46 braw 59364 <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
0004959c <_Timespec_Add_to>:
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
4959c: 4e56 0000 linkw %fp,#0 495a0: 226e 0008 moveal %fp@(8),%a1 495a4: 2f0a movel %a2,%sp@- 495a6: 246e 000c moveal %fp@(12),%a2
uint32_t seconds = add->tv_sec;
/* Add the basics */
time->tv_sec += add->tv_sec;
time->tv_nsec += add->tv_nsec;
495aa: 206a 0004 moveal %a2@(4),%a0 495ae: d1e9 0004 addal %a1@(4),%a0
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
495b2: 2208 movel %a0,%d1
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
uint32_t seconds = add->tv_sec;
495b4: 2012 movel %a2@,%d0
/* Add the basics */
time->tv_sec += add->tv_sec;
495b6: d191 addl %d0,%a1@
time->tv_nsec += add->tv_nsec;
495b8: 2348 0004 movel %a0,%a1@(4)
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
495bc: b1fc 3b9a c9ff cmpal #999999999,%a0
495c2: 631a blss 495de <_Timespec_Add_to+0x42> <== ALWAYS TAKEN
495c4: 2051 moveal %a1@,%a0 <== NOT EXECUTED
*
* This routines adds two timespecs. The second argument is added
* to the first.
*/
uint32_t _Timespec_Add_to(
495c6: 5288 addql #1,%a0 <== NOT EXECUTED
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;
495c8: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED
time->tv_sec++;
seconds++;
495ce: 5280 addql #1,%d0 <== NOT EXECUTED
/* 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 ) {
495d0: 0c81 3b9a c9ff cmpil #999999999,%d1 <== NOT EXECUTED 495d6: 62ee bhis 495c6 <_Timespec_Add_to+0x2a> <== NOT EXECUTED 495d8: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED 495dc: 2288 movel %a0,%a1@ <== NOT EXECUTED
time->tv_sec++;
seconds++;
}
return seconds;
}
495de: 245f moveal %sp@+,%a2
495e0: 4e5e unlk %fp <== NOT EXECUTED
0004b140 <_Timespec_Divide>:
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b140: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4b144: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b148: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
* For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b14c: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b152: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
* For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b156: 45f9 0005 c824 lea 5c824 <__muldi3>,%a2 <== NOT EXECUTED 4b15c: 42a7 clrl %sp@- <== NOT EXECUTED
/*
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b15e: 2a10 movel %a0@,%d5 <== NOT EXECUTED
left += lhs->tv_nsec;
4b160: 2828 0004 movel %a0@(4),%d4 <== NOT EXECUTED
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b164: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 4b166: 5bc0 smi %d0 <== NOT EXECUTED 4b168: 49c0 extbl %d0 <== NOT EXECUTED 4b16a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b16c: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED
* For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b170: 4e92 jsr %a2@ <== NOT EXECUTED 4b172: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b176: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b178: 2241 moveal %d1,%a1 <== NOT EXECUTED
right += rhs->tv_nsec;
4b17a: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED 4b17e: 5bc2 smi %d2 <== NOT EXECUTED 4b180: 49c2 extbl %d2 <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b182: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED
* in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; right += rhs->tv_nsec;
4b186: 2208 movel %a0,%d1 <== NOT EXECUTED 4b188: d689 addl %a1,%d3 <== NOT EXECUTED 4b18a: d581 addxl %d1,%d2 <== NOT EXECUTED
if ( right == 0 ) {
4b18c: 6700 0086 beqw 4b214 <_Timespec_Divide+0xd4> <== NOT EXECUTED
* Put it back in the timespec result.
*
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
4b190: 4bf9 0005 d070 lea 5d070 <__udivdi3>,%a5 <== NOT EXECUTED
/*
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b196: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 4b19c: 42a7 clrl %sp@- <== NOT EXECUTED 4b19e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b1a0: 5bc1 smi %d1 <== NOT EXECUTED 4b1a2: 49c1 extbl %d1 <== NOT EXECUTED 4b1a4: 2f01 movel %d1,%sp@- <== NOT EXECUTED
left += lhs->tv_nsec;
4b1a6: 2a04 movel %d4,%d5 <== NOT EXECUTED 4b1a8: 5bc4 smi %d4 <== NOT EXECUTED 4b1aa: 49c4 extbl %d4 <== NOT EXECUTED
/*
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b1ac: 4e92 jsr %a2@ <== NOT EXECUTED 4b1ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b1b2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b1b4: 2241 moveal %d1,%a1 <== NOT EXECUTED
* Put it back in the timespec result.
*
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
4b1b6: 2f3c 0001 86a0 movel #100000,%sp@- <== NOT EXECUTED 4b1bc: 2008 movel %a0,%d0 <== NOT EXECUTED 4b1be: 2209 movel %a1,%d1 <== NOT EXECUTED 4b1c0: 42a7 clrl %sp@- <== NOT EXECUTED 4b1c2: d285 addl %d5,%d1 <== NOT EXECUTED 4b1c4: d184 addxl %d4,%d0 <== NOT EXECUTED 4b1c6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b1c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b1ca: 4e92 jsr %a2@ <== NOT EXECUTED 4b1cc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b1d0: 2e83 movel %d3,%sp@ <== NOT EXECUTED 4b1d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1d4: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b1d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b1d8: 4e95 jsr %a5@ <== NOT EXECUTED 4b1da: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b1de: 2400 movel %d0,%d2 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b1e0: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3> <== NOT EXECUTED
* Put it back in the timespec result.
*
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
4b1e4: 2601 movel %d1,%d3 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b1e6: 42a7 clrl %sp@- <== NOT EXECUTED 4b1e8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b1ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1ec: 4e95 jsr %a5@ <== NOT EXECUTED 4b1ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b1f2: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3> <== NOT EXECUTED 4b1f6: 42a7 clrl %sp@- <== NOT EXECUTED
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
4b1f8: 2881 movel %d1,%a4@ <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b1fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b1fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1fe: 4eb9 0005 d3fc jsr 5d3fc <__umoddi3> <== NOT EXECUTED 4b204: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b208: 2681 movel %d1,%a3@ <== NOT EXECUTED
}
4b20a: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4b210: 4e5e unlk %fp <== NOT EXECUTED 4b212: 4e75 rts <== NOT EXECUTED
left += lhs->tv_nsec;
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
right += rhs->tv_nsec;
if ( right == 0 ) {
*ival_percentage = 0;
4b214: 4294 clrl %a4@ <== NOT EXECUTED
*fval_percentage = 0;
4b216: 4293 clrl %a3@ <== NOT EXECUTED
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
*fval_percentage = answer % 1000;
}
4b218: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4b21e: 4e5e unlk %fp <== NOT EXECUTED
...
0004b158 <_Timespec_Divide_by_integer>:
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b158: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4b15c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
/* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND;
4b160: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b166: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b16a: 47f9 0005 cb2c lea 5cb2c <__udivdi3>,%a3 <== NOT EXECUTED
/* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND;
4b170: 42a7 clrl %sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b172: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
/* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND;
4b176: 2f14 movel %a4@,%sp@- <== NOT EXECUTED 4b178: 5bc0 smi %d0 <== NOT EXECUTED 4b17a: 49c0 extbl %d0 <== NOT EXECUTED 4b17c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b17e: 4eb9 0005 c2e0 jsr 5c2e0 <__muldi3> <== NOT EXECUTED 4b184: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b188: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b18a: 2241 moveal %d1,%a1 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b18c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b190: 2408 movel %a0,%d2 <== NOT EXECUTED 4b192: 2609 movel %a1,%d3 <== NOT EXECUTED
* For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND; t += time->tv_nsec;
4b194: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED 4b198: 5bc0 smi %d0 <== NOT EXECUTED 4b19a: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b19c: 42a7 clrl %sp@- <== NOT EXECUTED 4b19e: d681 addl %d1,%d3 <== NOT EXECUTED 4b1a0: d580 addxl %d0,%d2 <== NOT EXECUTED 4b1a2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b1a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1a6: 4e93 jsr %a3@ <== NOT EXECUTED 4b1a8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b1ac: 2400 movel %d0,%d2 <== NOT EXECUTED 4b1ae: 2601 movel %d1,%d3 <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b1b0: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 4b1b6: 42a7 clrl %sp@- <== NOT EXECUTED 4b1b8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b1ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1bc: 4e93 jsr %a3@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b1be: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b1c2: 2ebc 3b9a ca00 movel #1000000000,%sp@ <== NOT EXECUTED 4b1c8: 42a7 clrl %sp@- <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b1ca: 2481 movel %d1,%a2@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b1cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b1ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1d0: 4eb9 0005 ceb8 jsr 5ceb8 <__umoddi3> <== NOT EXECUTED 4b1d6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b1da: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
4b1de: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4b1e4: 4e5e unlk %fp <== NOT EXECUTED
0005cc68 <_Timespec_From_ticks>:
struct timespec *time
)
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
5cc68: 43f9 0005 f2f0 lea 5f2f0 <Configuration+0xc>,%a1 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5cc6e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
5cc72: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5cc76: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5cc7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND;
5cc7c: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5cc82: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND;
5cc86: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED 5cc8a: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
TOD_NANOSECONDS_PER_MICROSECOND;
}
5cc8e: 241f movel %sp@+,%d2 <== NOT EXECUTED 5cc90: 4e5e unlk %fp <== NOT EXECUTED
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND;
5cc92: 2080 movel %d0,%a0@ <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
5cc94: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED 5cc9a: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 5cc9e: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
TOD_NANOSECONDS_PER_MICROSECOND;
}
00049e18 <_Timespec_Greater_than>:
bool _Timespec_Greater_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
49e18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49e1c: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 49e20: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec > rhs->tv_sec )
49e24: 2211 movel %a1@,%d1 <== NOT EXECUTED 49e26: 2010 movel %a0@,%d0 <== NOT EXECUTED 49e28: b081 cmpl %d1,%d0 <== NOT EXECUTED 49e2a: 6d18 blts 49e44 <_Timespec_Greater_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec < rhs->tv_sec )
49e2c: 6e10 bgts 49e3e <_Timespec_Greater_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
49e2e: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 49e32: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 49e36: 5dc0 slt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49e38: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
49e3a: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49e3c: 4e75 rts <== NOT EXECUTED 49e3e: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
if ( lhs->tv_sec < rhs->tv_sec )
return false;
49e40: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49e42: 4e75 rts <== NOT EXECUTED 49e44: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
49e46: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
...
0005cca4 <_Timespec_Is_valid>:
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
const struct timespec *time
)
{
5cca4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5cca8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !time )
5ccac: 4a88 tstl %a0 <== NOT EXECUTED 5ccae: 6718 beqs 5ccc8 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_sec < 0 )
5ccb0: 4a90 tstl %a0@ <== NOT EXECUTED 5ccb2: 6d14 blts 5ccc8 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_nsec < 0 )
5ccb4: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 5ccb8: 6d0e blts 5ccc8 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
5ccba: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
5ccbc: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 5ccc2: 53c0 sls %d0 <== NOT EXECUTED 5ccc4: 4480 negl %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
5ccc6: 4e75 rts <== NOT EXECUTED 5ccc8: 4e5e unlk %fp <== NOT EXECUTED
if ( time->tv_sec < 0 )
return false;
if ( time->tv_nsec < 0 )
return false;
5ccca: 4200 clrb %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
...
0004ca38 <_Timespec_Less_than>:
bool _Timespec_Less_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
4ca38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ca3c: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4ca40: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec < rhs->tv_sec )
4ca44: 2211 movel %a1@,%d1 <== NOT EXECUTED 4ca46: 2010 movel %a0@,%d0 <== NOT EXECUTED 4ca48: b081 cmpl %d1,%d0 <== NOT EXECUTED 4ca4a: 6e18 bgts 4ca64 <_Timespec_Less_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec > rhs->tv_sec )
4ca4c: 6d10 blts 4ca5e <_Timespec_Less_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4ca4e: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 4ca52: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 4ca56: 5ec0 sgt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4ca58: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4ca5a: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4ca5c: 4e75 rts <== NOT EXECUTED 4ca5e: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
if ( lhs->tv_sec > rhs->tv_sec )
return false;
4ca60: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4ca62: 4e75 rts <== NOT EXECUTED 4ca64: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
4ca66: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
...
000495e4 <_Timespec_Subtract>:
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
495e4: 4e56 0000 linkw %fp,#0 495e8: 226e 0008 moveal %fp@(8),%a1 495ec: 2f0a movel %a2,%sp@- 495ee: 246e 000c moveal %fp@(12),%a2 495f2: 206e 0010 moveal %fp@(16),%a0
if (end->tv_nsec < start->tv_nsec) {
495f6: 222a 0004 movel %a2@(4),%d1 495fa: 2029 0004 movel %a1@(4),%d0
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
495fe: 2f02 movel %d2,%sp@-
if (end->tv_nsec < start->tv_nsec) {
49600: b081 cmpl %d1,%d0
49602: 6e14 bgts 49618 <_Timespec_Subtract+0x34> <== NEVER TAKEN
result->tv_sec = end->tv_sec - start->tv_sec - 1;
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
49604: 2412 movel %a2@,%d2 49606: 9491 subl %a1@,%d2
result->tv_nsec = end->tv_nsec - start->tv_nsec;
49608: 9280 subl %d0,%d1
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
4960a: 2082 movel %d2,%a0@
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
4960c: 241f movel %sp@+,%d2 4960e: 245f moveal %sp@+,%a2 49610: 4e5e unlk %fp
result->tv_sec = end->tv_sec - start->tv_sec - 1;
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
result->tv_nsec = end->tv_nsec - start->tv_nsec;
49612: 2141 0004 movel %d1,%a0@(4)
} }
49616: 4e75 rts
struct timespec *result
)
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
49618: 2452 moveal %a2@,%a2 <== NOT EXECUTED 4961a: 538a subql #1,%a2 <== NOT EXECUTED 4961c: 95d1 subal %a1@,%a2 <== NOT EXECUTED
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
4961e: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED 49624: 9280 subl %d0,%d1 <== NOT EXECUTED
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
49626: 241f movel %sp@+,%d2 <== NOT EXECUTED
struct timespec *result
)
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
49628: 208a movel %a2,%a0@ <== NOT EXECUTED
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
4962a: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4962c: 4e5e unlk %fp <== NOT EXECUTED
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
4962e: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
0004cd54 <_Timespec_To_ticks>:
*/
uint32_t _Timespec_To_ticks(
const struct timespec *time
)
{
4cd54: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4cd58: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4cd5c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
4cd60: 2412 movel %a2@,%d2 <== NOT EXECUTED 4cd62: 6606 bnes 4cd6a <_Timespec_To_ticks+0x16> <== NOT EXECUTED 4cd64: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 4cd68: 673e beqs 4cda8 <_Timespec_To_ticks+0x54> <== NOT EXECUTED
return 0;
ticks = time->tv_sec * TOD_TICKS_PER_SECOND;
4cd6a: 4eb9 0004 e698 jsr 4e698 <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4cd70: 2239 0005 e3f0 movel 5e3f0 <Configuration+0xc>,%d1 <== NOT EXECUTED 4cd76: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED 4cd7c: 4c03 1800 mulsl %d3,%d1 <== NOT EXECUTED
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
return 0;
ticks = time->tv_sec * TOD_TICKS_PER_SECOND;
4cd80: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4cd84: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 4cd88: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED 4cd8c: d083 addl %d3,%d0 <== NOT EXECUTED
if (ticks)
4cd8e: 670a beqs 4cd9a <_Timespec_To_ticks+0x46> <== NOT EXECUTED
return ticks;
return 1;
}
4cd90: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4cd96: 4e5e unlk %fp <== NOT EXECUTED 4cd98: 4e75 rts <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
if (ticks)
return ticks;
return 1;
4cd9a: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
}
4cd9e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4cda4: 4e5e unlk %fp <== NOT EXECUTED 4cda6: 4e75 rts <== NOT EXECUTED
)
{
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
return 0;
4cda8: 4280 clrl %d0 <== NOT EXECUTED
if (ticks)
return ticks;
return 1;
}
4cdaa: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4cdb0: 4e5e unlk %fp <== NOT EXECUTED
00049776 <_User_extensions_Fatal>:
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
49776: 4e56 fff0 linkw %fp,#-16 4977a: 48d7 041c moveml %d2-%d4/%a2,%sp@ 4977e: 242e 0008 movel %fp@(8),%d2 49782: 262e 0010 movel %fp@(16),%d3
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
49786: 2479 0005 fe0a moveal 5fe0a <_User_extensions_List+0x8>,%a2
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
4978c: 182e 000f moveb %fp@(15),%d4
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
49790: b5fc 0005 fe02 cmpal #392706,%a2
49796: 6726 beqs 497be <_User_extensions_Fatal+0x48> <== NEVER TAKEN
the_node = the_node->previous ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
49798: 0284 0000 00ff andil #255,%d4
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
4979e: 206a 0030 moveal %a2@(48),%a0 497a2: 4a88 tstl %a0
497a4: 670c beqs 497b2 <_User_extensions_Fatal+0x3c>
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
497a6: 2f03 movel %d3,%sp@- 497a8: 2f04 movel %d4,%sp@- 497aa: 2f02 movel %d2,%sp@- 497ac: 4e90 jsr %a0@
497ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
497b2: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
497b6: b5fc 0005 fe02 cmpal #392706,%a2
497bc: 66e0 bnes 4979e <_User_extensions_Fatal+0x28> <== ALWAYS TAKEN
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
}
}
497be: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 497c4: 4e5e unlk %fp <== NOT EXECUTED
00049634 <_User_extensions_Handler_initialization>:
#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <string.h>
void _User_extensions_Handler_initialization(void)
{
49634: 4e56 ffec linkw %fp,#-20
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
49638: 203c 0005 fe06 movel #392710,%d0 4963e: 23c0 0005 fe02 movel %d0,5fe02 <_User_extensions_List>
the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain);
49644: 203c 0005 fe02 movel #392706,%d0 4964a: 23c0 0005 fe0a movel %d0,5fe0a <_User_extensions_List+0x8>
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
49650: 203c 0005 fc94 movel #392340,%d0 49656: 23c0 0005 fc90 movel %d0,5fc90 <_User_extensions_Switches_list>
the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain);
4965c: 203c 0005 fc90 movel #392336,%d0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
49662: 42b9 0005 fe06 clrl 5fe06 <_User_extensions_List+0x4> 49668: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
User_extensions_Control *extension;
uint32_t i;
uint32_t number_of_extensions;
User_extensions_Table *initial_extensions;
number_of_extensions = Configuration.number_of_initial_extensions;
4966c: 2439 0005 e41a movel 5e41a <Configuration+0x36>,%d2
initial_extensions = Configuration.User_extension_table;
49672: 2639 0005 e41e movel 5e41e <Configuration+0x3a>,%d3 49678: 42b9 0005 fc94 clrl 5fc94 <_User_extensions_Switches_list+0x4>
the_chain->last = _Chain_Head(the_chain);
4967e: 23c0 0005 fc98 movel %d0,5fc98 <_User_extensions_Switches_list+0x8>
_Chain_Initialize_empty( &_User_extensions_List );
_Chain_Initialize_empty( &_User_extensions_Switches_list );
if ( initial_extensions ) {
49684: 4a83 tstl %d3
49686: 6764 beqs 496ec <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
extension = (User_extensions_Control *)
_Workspace_Allocate_or_fatal_error(
49688: 7834 moveq #52,%d4 4968a: 4c02 4800 mulsl %d2,%d4 4968e: 2f04 movel %d4,%sp@- 49690: 4eb9 0004 9bea jsr 49bea <_Workspace_Allocate_or_fatal_error> 49696: 2440 moveal %d0,%a2
number_of_extensions * sizeof( User_extensions_Control )
);
memset (
49698: 2f04 movel %d4,%sp@- 4969a: 42a7 clrl %sp@- 4969c: 2f00 movel %d0,%sp@- 4969e: 4eb9 0004 f228 jsr 4f228 <memset>
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
496a4: 4fef 0010 lea %sp@(16),%sp 496a8: 4a82 tstl %d2
496aa: 6740 beqs 496ec <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
496ac: 4284 clrl %d4 496ae: 47f9 0004 cdb4 lea 4cdb4 <_User_extensions_Add_set>,%a3
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
User_extensions_Control *extension,
const User_extensions_Table *extension_table
)
{
extension->Callouts = *extension_table;
496b4: 2043 moveal %d3,%a0 496b6: 5284 addql #1,%d4 496b8: 0683 0000 0020 addil #32,%d3 496be: 2558 0014 movel %a0@+,%a2@(20) 496c2: 2558 0018 movel %a0@+,%a2@(24) 496c6: 2558 001c movel %a0@+,%a2@(28) 496ca: 2558 0020 movel %a0@+,%a2@(32) 496ce: 2558 0024 movel %a0@+,%a2@(36) 496d2: 2558 0028 movel %a0@+,%a2@(40) 496d6: 2558 002c movel %a0@+,%a2@(44) 496da: 2550 0030 movel %a0@,%a2@(48)
_User_extensions_Add_set( extension );
496de: 2f0a movel %a2,%sp@-
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
496e0: 45ea 0034 lea %a2@(52),%a2 496e4: 4e93 jsr %a3@
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
496e6: 588f addql #4,%sp 496e8: b882 cmpl %d2,%d4
496ea: 65c8 bcss 496b4 <_User_extensions_Handler_initialization+0x80>
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
}
}
}
496ec: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 496f2: 4e5e unlk %fp
...
0004aef4 <_User_extensions_Remove_set>:
#include <rtems/score/userext.h>
void _User_extensions_Remove_set (
User_extensions_Control *the_extension
)
{
4aef4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4aef8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aefa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
_Chain_Extract( &the_extension->Node );
4aefe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4af00: 4eb9 0004 860c jsr 4860c <_Chain_Extract> <== NOT EXECUTED
/*
* If a switch handler is present, remove it.
*/
if ( the_extension->Callouts.thread_switch != NULL )
4af06: 588f addql #4,%sp <== NOT EXECUTED 4af08: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED 4af0c: 6712 beqs 4af20 <_User_extensions_Remove_set+0x2c><== NOT EXECUTED
_Chain_Extract( &the_extension->Switch.Node );
4af0e: 508a addql #8,%a2 <== NOT EXECUTED 4af10: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4af14: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4af18: 4e5e unlk %fp <== NOT EXECUTED
/*
* If a switch handler is present, remove it.
*/
if ( the_extension->Callouts.thread_switch != NULL )
_Chain_Extract( &the_extension->Switch.Node );
4af1a: 4ef9 0004 860c jmp 4860c <_Chain_Extract> <== NOT EXECUTED
}
4af20: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4af24: 4e5e unlk %fp <== NOT EXECUTED
000496f8 <_User_extensions_Thread_begin>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
496f8: 4e56 0000 linkw %fp,#0 496fc: 2f0a movel %a2,%sp@-
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
496fe: 2479 0005 fe02 moveal 5fe02 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
49704: 2f02 movel %d2,%sp@- 49706: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
4970a: b5fc 0005 fe06 cmpal #392710,%a2
49710: 6718 beqs 4972a <_User_extensions_Thread_begin+0x32><== NEVER TAKEN
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_begin != NULL )
49712: 206a 0028 moveal %a2@(40),%a0 49716: 4a88 tstl %a0
49718: 6706 beqs 49720 <_User_extensions_Thread_begin+0x28>
(*the_extension->Callouts.thread_begin)( executing );
4971a: 2f02 movel %d2,%sp@- 4971c: 4e90 jsr %a0@ 4971e: 588f addql #4,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
49720: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
49722: b5fc 0005 fe06 cmpal #392710,%a2
49728: 66e8 bnes 49712 <_User_extensions_Thread_begin+0x1a>
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_begin != NULL )
(*the_extension->Callouts.thread_begin)( executing );
}
}
4972a: 242e fff8 movel %fp@(-8),%d2 4972e: 246e fffc moveal %fp@(-4),%a2
49732: 4e5e unlk %fp <== NOT EXECUTED
000497c8 <_User_extensions_Thread_create>:
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
497c8: 4e56 0000 linkw %fp,#0 497cc: 2f0a movel %a2,%sp@-
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _User_extensions_List.first ;
497ce: 2479 0005 fe02 moveal 5fe02 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
497d4: 2f02 movel %d2,%sp@- 497d6: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _User_extensions_List.first ;
497da: b5fc 0005 fe06 cmpal #392710,%a2
497e0: 6722 beqs 49804 <_User_extensions_Thread_create+0x3c><== NEVER TAKEN
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_create != NULL ) {
497e2: 206a 0014 moveal %a2@(20),%a0 497e6: 4a88 tstl %a0
497e8: 6710 beqs 497fa <_User_extensions_Thread_create+0x32>
status = (*the_extension->Callouts.thread_create)(
497ea: 2f02 movel %d2,%sp@- 497ec: 2f39 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%sp@- 497f2: 4e90 jsr %a0@
_Thread_Executing,
the_thread
);
if ( !status )
497f4: 508f addql #8,%sp 497f6: 4a00 tstb %d0
497f8: 6718 beqs 49812 <_User_extensions_Thread_create+0x4a><== NEVER TAKEN
User_extensions_Control *the_extension;
bool status;
for ( the_node = _User_extensions_List.first ;
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
497fa: 2452 moveal %a2@,%a2
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _User_extensions_List.first ;
497fc: b5fc 0005 fe06 cmpal #392710,%a2
49802: 66de bnes 497e2 <_User_extensions_Thread_create+0x1a>
return false;
}
}
return true;
}
49804: 242e fff8 movel %fp@(-8),%d2 49808: 246e fffc moveal %fp@(-4),%a2 4980c: 4e5e unlk %fp
if ( !status )
return false;
}
}
return true;
4980e: 7001 moveq #1,%d0
}
49810: 4e75 rts
49812: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 49816: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4981a: 4e5e unlk %fp <== NOT EXECUTED
status = (*the_extension->Callouts.thread_create)(
_Thread_Executing,
the_thread
);
if ( !status )
return false;
4981c: 4200 clrb %d0 <== NOT EXECUTED
}
}
return true;
}
00049820 <_User_extensions_Thread_delete>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
49820: 4e56 0000 linkw %fp,#0 49824: 2f0a movel %a2,%sp@-
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
49826: 2479 0005 fe0a moveal 5fe0a <_User_extensions_List+0x8>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
4982c: 2f02 movel %d2,%sp@- 4982e: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
49832: b5fc 0005 fe02 cmpal #392706,%a2
49838: 6720 beqs 4985a <_User_extensions_Thread_delete+0x3a><== NEVER TAKEN
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_delete != NULL )
4983a: 206a 0020 moveal %a2@(32),%a0 4983e: 4a88 tstl %a0
49840: 670c beqs 4984e <_User_extensions_Thread_delete+0x2e><== NEVER TAKEN
(*the_extension->Callouts.thread_delete)(
49842: 2f02 movel %d2,%sp@- 49844: 2f39 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%sp@- 4984a: 4e90 jsr %a0@ 4984c: 508f addql #8,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
4984e: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
49852: b5fc 0005 fe02 cmpal #392706,%a2
49858: 66e0 bnes 4983a <_User_extensions_Thread_delete+0x1a>
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
4985a: 242e fff8 movel %fp@(-8),%d2 4985e: 246e fffc moveal %fp@(-4),%a2 49862: 4e5e unlk %fp
...
00049736 <_User_extensions_Thread_exitted>:
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
49736: 4e56 0000 linkw %fp,#0 4973a: 2f0a movel %a2,%sp@-
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
4973c: 2479 0005 fe0a moveal 5fe0a <_User_extensions_List+0x8>,%a2
}
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
49742: 2f02 movel %d2,%sp@- 49744: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
49748: b5fc 0005 fe02 cmpal #392706,%a2
4974e: 671a beqs 4976a <_User_extensions_Thread_exitted+0x34><== NEVER TAKEN
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_exitted != NULL )
49750: 206a 002c moveal %a2@(44),%a0 49754: 4a88 tstl %a0
49756: 6706 beqs 4975e <_User_extensions_Thread_exitted+0x28>
(*the_extension->Callouts.thread_exitted)( executing );
49758: 2f02 movel %d2,%sp@- 4975a: 4e90 jsr %a0@ 4975c: 588f addql #4,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
4975e: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.last ;
49762: b5fc 0005 fe02 cmpal #392706,%a2
49768: 66e6 bnes 49750 <_User_extensions_Thread_exitted+0x1a>
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_exitted != NULL )
(*the_extension->Callouts.thread_exitted)( executing );
}
}
4976a: 242e fff8 movel %fp@(-8),%d2 4976e: 246e fffc moveal %fp@(-4),%a2
49772: 4e5e unlk %fp <== NOT EXECUTED
0004a50c <_User_extensions_Thread_restart>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a50c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a510: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
4a512: 2479 0006 0d9a moveal 60d9a <_User_extensions_List>,%a2 <== NOT EXECUTED
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a518: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a51a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
4a51e: b5fc 0006 0d9e cmpal #396702,%a2 <== NOT EXECUTED 4a524: 671e beqs 4a544 <_User_extensions_Thread_restart+0x38><== NOT EXECUTED
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_restart != NULL )
4a526: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 4a52a: 4a88 tstl %a0 <== NOT EXECUTED 4a52c: 670c beqs 4a53a <_User_extensions_Thread_restart+0x2e><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
4a52e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a530: 2f39 0006 10b4 movel 610b4 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4a536: 4e90 jsr %a0@ <== NOT EXECUTED 4a538: 508f addql #8,%sp <== NOT EXECUTED
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
4a53a: 2452 moveal %a2@,%a2 <== NOT EXECUTED
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
4a53c: b5fc 0006 0d9e cmpal #396702,%a2 <== NOT EXECUTED 4a542: 66e2 bnes 4a526 <_User_extensions_Thread_restart+0x1a><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a544: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4a548: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4a54c: 4e5e unlk %fp <== NOT EXECUTED
00049868 <_User_extensions_Thread_start>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
49868: 4e56 0000 linkw %fp,#0 4986c: 2f0a movel %a2,%sp@-
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
4986e: 2479 0005 fe02 moveal 5fe02 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
49874: 2f02 movel %d2,%sp@- 49876: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
4987a: b5fc 0005 fe06 cmpal #392710,%a2
49880: 671e beqs 498a0 <_User_extensions_Thread_start+0x38><== NEVER TAKEN
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_start != NULL )
49882: 206a 0018 moveal %a2@(24),%a0 49886: 4a88 tstl %a0
49888: 670c beqs 49896 <_User_extensions_Thread_start+0x2e>
(*the_extension->Callouts.thread_start)(
4988a: 2f02 movel %d2,%sp@- 4988c: 2f39 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%sp@- 49892: 4e90 jsr %a0@ 49894: 508f addql #8,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
49896: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
49898: b5fc 0005 fe06 cmpal #392710,%a2
4989e: 66e2 bnes 49882 <_User_extensions_Thread_start+0x1a>
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
498a0: 242e fff8 movel %fp@(-8),%d2 498a4: 246e fffc moveal %fp@(-4),%a2
498a8: 4e5e unlk %fp <== NOT EXECUTED
000498ac <_User_extensions_Thread_switch>:
void _User_extensions_Thread_switch (
Thread_Control *executing,
Thread_Control *heir
)
{
498ac: 4e56 fff4 linkw %fp,#-12 498b0: 48d7 040c moveml %d2-%d3/%a2,%sp@ 498b4: 262e 0008 movel %fp@(8),%d3 498b8: 242e 000c movel %fp@(12),%d2
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _User_extensions_Switches_list.first ;
498bc: 2479 0005 fc90 moveal 5fc90 <_User_extensions_Switches_list>,%a2 498c2: b5fc 0005 fc94 cmpal #392340,%a2
498c8: 6716 beqs 498e0 <_User_extensions_Thread_switch+0x34><== NEVER TAKEN
!_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
the_node = the_node->next ) {
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
498ca: 2f02 movel %d2,%sp@- 498cc: 2f03 movel %d3,%sp@- 498ce: 206a 0008 moveal %a2@(8),%a0 498d2: 4e90 jsr %a0@
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _User_extensions_Switches_list.first ;
!_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
the_node = the_node->next ) {
498d4: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _User_extensions_Switches_list.first ;
498d6: 508f addql #8,%sp 498d8: b5fc 0005 fc94 cmpal #392340,%a2
498de: 66ea bnes 498ca <_User_extensions_Thread_switch+0x1e><== NEVER TAKEN
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
498e0: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 498e6: 4e5e unlk %fp
...
0004b570 <_Watchdog_Adjust>:
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b570: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4b574: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4b578: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b57c: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED 4b582: 2004 movel %d4,%d0 <== NOT EXECUTED
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b584: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 4b588: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b58c: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b58e: 8081 orl %d1,%d0 <== NOT EXECUTED 4b590: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4b592: 244b moveal %a3,%a2 <== NOT EXECUTED 4b594: 205a moveal %a2@+,%a0 <== NOT EXECUTED
* hence the compiler must not assume *header to remain
* unmodified across that call.
*
* Till Straumann, 7/2003
*/
if ( !_Chain_Is_empty( header ) ) {
4b596: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 4b598: 6748 beqs 4b5e2 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
4b59a: 4a89 tstl %a1 <== NOT EXECUTED 4b59c: 6650 bnes 4b5ee <_Watchdog_Adjust+0x7e> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b59e: 4a82 tstl %d2 <== NOT EXECUTED 4b5a0: 6740 beqs 4b5e2 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b5a2: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 4b5a6: 49f9 0004 b7ec lea 4b7ec <_Watchdog_Tickle>,%a4 <== NOT EXECUTED 4b5ac: b682 cmpl %d2,%d3 <== NOT EXECUTED 4b5ae: 622c bhis 4b5dc <_Watchdog_Adjust+0x6c> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval -= units;
break;
} else {
units -= _Watchdog_First( header )->delta_interval;
_Watchdog_First( header )->delta_interval = 1;
4b5b0: 7001 moveq #1,%d0 <== NOT EXECUTED 4b5b2: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
_ISR_Enable( level );
4b5b6: 46c1 movew %d1,%sr <== NOT EXECUTED
_Watchdog_Tickle( header );
4b5b8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b5ba: 4e94 jsr %a4@ <== NOT EXECUTED
_ISR_Disable( level );
4b5bc: 2004 movel %d4,%d0 <== NOT EXECUTED 4b5be: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b5c0: 8081 orl %d1,%d0 <== NOT EXECUTED 4b5c2: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _Chain_Is_empty( header ) )
4b5c4: 588f addql #4,%sp <== NOT EXECUTED
while ( units ) {
if ( units < _Watchdog_First( header )->delta_interval ) {
_Watchdog_First( header )->delta_interval -= units;
break;
} else {
units -= _Watchdog_First( header )->delta_interval;
4b5c6: 9483 subl %d3,%d2 <== NOT EXECUTED 4b5c8: 2013 movel %a3@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) header->first );
4b5ca: 2040 moveal %d0,%a0 <== NOT EXECUTED
_Watchdog_Tickle( header );
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
4b5cc: b08a cmpl %a2,%d0 <== NOT EXECUTED 4b5ce: 6712 beqs 4b5e2 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b5d0: 4a82 tstl %d2 <== NOT EXECUTED 4b5d2: 670e beqs 4b5e2 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b5d4: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 4b5d8: b483 cmpl %d3,%d2 <== NOT EXECUTED 4b5da: 64d4 bccs 4b5b0 <_Watchdog_Adjust+0x40> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval -= units;
4b5dc: 9682 subl %d2,%d3 <== NOT EXECUTED 4b5de: 2143 0010 movel %d3,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b5e2: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b5e4: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4b5ea: 4e5e unlk %fp <== NOT EXECUTED 4b5ec: 4e75 rts <== NOT EXECUTED
* unmodified across that call.
*
* Till Straumann, 7/2003
*/
if ( !_Chain_Is_empty( header ) ) {
switch ( direction ) {
4b5ee: 7001 moveq #1,%d0 <== NOT EXECUTED 4b5f0: b089 cmpl %a1,%d0 <== NOT EXECUTED 4b5f2: 66ee bnes 4b5e2 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
4b5f4: d5a8 0010 addl %d2,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b5f8: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b5fa: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4b600: 4e5e unlk %fp <== NOT EXECUTED
0005d704 <_Watchdog_Adjust_to_chain>:
Chain_Control *header,
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
5d704: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5d708: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 5d70c: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 5d710: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 5d714: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
Watchdog_Interval units = units_arg;
ISR_Level level;
Watchdog_Control *first;
if ( units <= 0 ) {
5d718: 6760 beqs 5d77a <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
return;
}
_ISR_Disable( level );
5d71a: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED 5d720: 2003 movel %d3,%d0 <== NOT EXECUTED 5d722: 40c2 movew %sr,%d2 <== NOT EXECUTED 5d724: 8082 orl %d2,%d0 <== NOT EXECUTED 5d726: 46c0 movew %d0,%sr <== NOT EXECUTED 5d728: 2a41 moveal %d1,%a5 <== NOT EXECUTED 5d72a: 205d moveal %a5@+,%a0 <== NOT EXECUTED
while ( 1 ) {
if ( units <= 0 ) {
break;
}
if ( _Chain_Is_empty( header ) ) {
5d72c: bbc8 cmpal %a0,%a5 <== NOT EXECUTED 5d72e: 6748 beqs 5d778 <_Watchdog_Adjust_to_chain+0x74> <== NOT EXECUTED
/*
* If it is longer than "units" until the first element on the chain
* fires, then bump it and quit.
*/
if ( units < first->delta_interval ) {
5d730: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED 5d734: b880 cmpl %d0,%d4 <== NOT EXECUTED 5d736: 654a bcss 5d782 <_Watchdog_Adjust_to_chain+0x7e> <== NOT EXECUTED
/*
* 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;
5d738: 9880 subl %d0,%d4 <== NOT EXECUTED
first->delta_interval = 0;
5d73a: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
5d73e: 2650 moveal %a0@,%a3 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
5d740: 2009 movel %a1,%d0 <== NOT EXECUTED 5d742: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
5d744: 2868 0004 moveal %a0@(4),%a4 <== NOT EXECUTED
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
5d748: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
previous->next = next;
5d74c: 288b movel %a3,%a4@ <== NOT EXECUTED
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
5d74e: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
5d752: 2080 movel %d0,%a0@ <== NOT EXECUTED
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail(the_chain);
old_last_node = the_chain->last;
the_chain->last = the_node;
5d754: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
old_last_node->next = the_node;
5d758: 2488 movel %a0,%a2@ <== NOT EXECUTED
the_node->previous = old_last_node;
5d75a: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
while ( 1 ) {
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
5d75e: 2003 movel %d3,%d0 <== NOT EXECUTED 5d760: 46c2 movew %d2,%sr <== NOT EXECUTED 5d762: 8082 orl %d2,%d0 <== NOT EXECUTED 5d764: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
5d766: 2441 moveal %d1,%a2 <== NOT EXECUTED 5d768: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( _Chain_Is_empty( header ) )
5d76a: b1cd cmpal %a5,%a0 <== NOT EXECUTED 5d76c: 6706 beqs 5d774 <_Watchdog_Adjust_to_chain+0x70> <== NOT EXECUTED
break;
first = _Watchdog_First( header );
if ( first->delta_interval != 0 )
5d76e: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED 5d772: 67ca beqs 5d73e <_Watchdog_Adjust_to_chain+0x3a> <== NOT EXECUTED
}
_ISR_Disable( level );
while ( 1 ) {
if ( units <= 0 ) {
5d774: 4a84 tstl %d4 <== NOT EXECUTED 5d776: 66b4 bnes 5d72c <_Watchdog_Adjust_to_chain+0x28> <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d778: 46c2 movew %d2,%sr <== NOT EXECUTED
}
5d77a: 4cd7 3c1c moveml %sp@,%d2-%d4/%a2-%a5 <== NOT EXECUTED 5d77e: 4e5e unlk %fp <== NOT EXECUTED 5d780: 4e75 rts <== NOT EXECUTED
/*
* 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;
5d782: 9084 subl %d4,%d0 <== NOT EXECUTED 5d784: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d788: 46c2 movew %d2,%sr <== NOT EXECUTED 5d78a: 60ee bras 5d77a <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
000498ec <_Watchdog_Insert>:
void _Watchdog_Insert(
Chain_Control *header,
Watchdog_Control *the_watchdog
)
{
498ec: 4e56 ffec linkw %fp,#-20 498f0: 226e 000c moveal %fp@(12),%a1 498f4: 48d7 043c moveml %d2-%d5/%a2,%sp@ 498f8: 246e 0008 moveal %fp@(8),%a2
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
_ISR_Disable( level );
498fc: 2a3c 0000 0700 movel #1792,%d5 49902: 2005 movel %d5,%d0
Watchdog_Control *after;
uint32_t insert_isr_nest_level;
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
49904: 2839 0006 0118 movel 60118 <_Per_CPU_Information+0x8>,%d4
_ISR_Disable( level );
4990a: 40c3 movew %sr,%d3 4990c: 8083 orl %d3,%d0 4990e: 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 ) {
49910: 4aa9 0008 tstl %a1@(8) 49914: 6600 00c6 bnew 499dc <_Watchdog_Insert+0xf0>
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
_Watchdog_Sync_count++;
49918: 2039 0005 fdb4 movel 5fdb4 <_Watchdog_Sync_count>,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
4991e: 7201 moveq #1,%d1
_Watchdog_Sync_count++;
49920: 5280 addql #1,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
49922: 2341 0008 movel %d1,%a1@(8)
_Watchdog_Sync_count++;
49926: 23c0 0005 fdb4 movel %d0,5fdb4 <_Watchdog_Sync_count>
restart:
delta_interval = the_watchdog->initial;
4992c: 2029 000c movel %a1@(12),%d0
* cache *header!! * * Till Straumann, 7/2003 (gcc-3.2.2 -O4 on powerpc) * */ for ( after = (Watchdog_Control *) ((volatile Chain_Control *)header)->first ;
49930: 2052 moveal %a2@,%a0
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
49932: 6764 beqs 49998 <_Watchdog_Insert+0xac> <== NEVER TAKEN
49934: 4a90 tstl %a0@
49936: 6760 beqs 49998 <_Watchdog_Insert+0xac> <== ALWAYS TAKEN
break;
if ( delta_interval < after->delta_interval ) {
49938: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED 4993c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4993e: 6252 bhis 49992 <_Watchdog_Insert+0xa6> <== NOT EXECUTED
* used around this flash point allowed interrupts to execute
* which violated the design assumptions. The critical section
* mechanism used here WAS redesigned to address this.
*/
_ISR_Flash( level );
49940: 2405 movel %d5,%d2 <== NOT EXECUTED 49942: 46c3 movew %d3,%sr <== NOT EXECUTED 49944: 8483 orl %d3,%d2 <== NOT EXECUTED 49946: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49948: 7401 moveq #1,%d2 <== NOT EXECUTED 4994a: b4a9 0008 cmpl %a1@(8),%d2 <== NOT EXECUTED 4994e: 666e bnes 499be <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49950: 2439 0005 fd32 movel 5fd32 <_Watchdog_Sync_level>,%d2 <== NOT EXECUTED 49956: b484 cmpl %d4,%d2 <== NOT EXECUTED 49958: 6230 bhis 4998a <_Watchdog_Insert+0x9e> <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
4995a: 9081 subl %d1,%d0 <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
4995c: 2050 moveal %a0@,%a0 <== NOT EXECUTED
*/
for ( after = (Watchdog_Control *) ((volatile Chain_Control *)header)->first ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
4995e: 4a80 tstl %d0 <== NOT EXECUTED 49960: 6736 beqs 49998 <_Watchdog_Insert+0xac> <== NOT EXECUTED 49962: 4a90 tstl %a0@ <== NOT EXECUTED 49964: 6732 beqs 49998 <_Watchdog_Insert+0xac> <== NOT EXECUTED
break;
if ( delta_interval < after->delta_interval ) {
49966: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED 4996a: b081 cmpl %d1,%d0 <== NOT EXECUTED 4996c: 6524 bcss 49992 <_Watchdog_Insert+0xa6> <== NOT EXECUTED
* used around this flash point allowed interrupts to execute
* which violated the design assumptions. The critical section
* mechanism used here WAS redesigned to address this.
*/
_ISR_Flash( level );
4996e: 2405 movel %d5,%d2 <== NOT EXECUTED 49970: 46c3 movew %d3,%sr <== NOT EXECUTED 49972: 8483 orl %d3,%d2 <== NOT EXECUTED 49974: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
49976: 9081 subl %d1,%d0 <== NOT EXECUTED
* mechanism used here WAS redesigned to address this.
*/
_ISR_Flash( level );
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49978: 7201 moveq #1,%d1 <== NOT EXECUTED 4997a: b2a9 0008 cmpl %a1@(8),%d1 <== NOT EXECUTED 4997e: 663e bnes 499be <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49980: 2239 0005 fd32 movel 5fd32 <_Watchdog_Sync_level>,%d1 <== NOT EXECUTED 49986: b284 cmpl %d4,%d1 <== NOT EXECUTED 49988: 63d2 blss 4995c <_Watchdog_Insert+0x70> <== NOT EXECUTED
_Watchdog_Sync_level = insert_isr_nest_level;
4998a: 23c4 0005 fd32 movel %d4,5fd32 <_Watchdog_Sync_level> <== NOT EXECUTED
goto restart;
49990: 609a bras 4992c <_Watchdog_Insert+0x40> <== NOT EXECUTED
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
break;
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
49992: 9280 subl %d0,%d1 <== NOT EXECUTED 49994: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
49998: 2068 0004 moveal %a0@(4),%a0
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_ACTIVE;
4999c: 7402 moveq #2,%d2
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4999e: 2450 moveal %a0@,%a2
}
}
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
499a0: 2340 0010 movel %d0,%a1@(16)
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
the_watchdog->start_time = _Watchdog_Ticks_since_boot;
499a4: 2039 0005 fdb8 movel 5fdb8 <_Watchdog_Ticks_since_boot>,%d0 499aa: 2342 0008 movel %d2,%a1@(8)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
499ae: 2348 0004 movel %a0,%a1@(4)
before_node = after_node->next; after_node->next = the_node;
499b2: 2089 movel %a1,%a0@
the_node->next = before_node; before_node->previous = the_node;
499b4: 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;
499b8: 228a movel %a2,%a1@ 499ba: 2340 0014 movel %d0,%a1@(20)
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
499be: 23c4 0005 fd32 movel %d4,5fd32 <_Watchdog_Sync_level>
_Watchdog_Sync_count--;
499c4: 2039 0005 fdb4 movel 5fdb4 <_Watchdog_Sync_count>,%d0 499ca: 5380 subql #1,%d0 499cc: 23c0 0005 fdb4 movel %d0,5fdb4 <_Watchdog_Sync_count>
_ISR_Enable( level );
499d2: 46c3 movew %d3,%sr
}
499d4: 4cd7 043c moveml %sp@,%d2-%d5/%a2 499d8: 4e5e unlk %fp 499da: 4e75 rts
* 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 ) {
_ISR_Enable( level );
499dc: 46c3 movew %d3,%sr <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
499de: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED 499e2: 4e5e unlk %fp <== NOT EXECUTED
...
00049a34 <_Watchdog_Remove>:
{
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
49a34: 203c 0000 0700 movel #1792,%d0
*/
Watchdog_States _Watchdog_Remove(
Watchdog_Control *the_watchdog
)
{
49a3a: 4e56 0000 linkw %fp,#0 49a3e: 206e 0008 moveal %fp@(8),%a0 49a42: 2f0a movel %a2,%sp@- 49a44: 2f02 movel %d2,%sp@-
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
49a46: 40c1 movew %sr,%d1 49a48: 8081 orl %d1,%d0 49a4a: 46c0 movew %d0,%sr
previous_state = the_watchdog->state;
49a4c: 2028 0008 movel %a0@(8),%d0
switch ( previous_state ) {
49a50: 7401 moveq #1,%d2 49a52: b480 cmpl %d0,%d2
49a54: 6764 beqs 49aba <_Watchdog_Remove+0x86> <== NEVER TAKEN
49a56: 6314 blss 49a6c <_Watchdog_Remove+0x38> <== ALWAYS TAKEN
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49a58: 2279 0005 fdb8 moveal 5fdb8 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED 49a5e: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
49a62: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state ); }
49a64: 241f movel %sp@+,%d2 <== NOT EXECUTED 49a66: 245f moveal %sp@+,%a2 <== NOT EXECUTED 49a68: 4e5e unlk %fp <== NOT EXECUTED 49a6a: 4e75 rts <== NOT EXECUTED
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
previous_state = the_watchdog->state;
switch ( previous_state ) {
49a6c: 143c 0003 moveb #3,%d2 49a70: b480 cmpl %d0,%d2
49a72: 65e4 bcss 49a58 <_Watchdog_Remove+0x24> <== NEVER TAKEN
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
_ISR_Enable( level );
return( previous_state );
}
49a74: 2250 moveal %a0@,%a1
break;
case WATCHDOG_ACTIVE:
case WATCHDOG_REMOVE_IT:
the_watchdog->state = WATCHDOG_INACTIVE;
49a76: 42a8 0008 clrl %a0@(8)
next_watchdog = _Watchdog_Next( the_watchdog );
if ( _Watchdog_Next(next_watchdog) )
49a7a: 4a91 tstl %a1@
49a7c: 6708 beqs 49a86 <_Watchdog_Remove+0x52> <== ALWAYS TAKEN
next_watchdog->delta_interval += the_watchdog->delta_interval;
49a7e: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED 49a82: d5a9 0010 addl %d2,%a1@(16) <== NOT EXECUTED
if ( _Watchdog_Sync_count )
49a86: 2479 0005 fdb4 moveal 5fdb4 <_Watchdog_Sync_count>,%a2 49a8c: 4a8a tstl %a2
49a8e: 670c beqs 49a9c <_Watchdog_Remove+0x68> <== ALWAYS TAKEN
_Watchdog_Sync_level = _ISR_Nest_level;
49a90: 45f9 0006 0118 lea 60118 <_Per_CPU_Information+0x8>,%a2 <== NOT EXECUTED 49a96: 23d2 0005 fd32 movel %a2@,5fd32 <_Watchdog_Sync_level> <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
49a9c: 2468 0004 moveal %a0@(4),%a2
next->previous = previous;
49aa0: 234a 0004 movel %a2,%a1@(4)
previous->next = next;
49aa4: 2489 movel %a1,%a2@
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49aa6: 2279 0005 fdb8 moveal 5fdb8 <_Watchdog_Ticks_since_boot>,%a1 49aac: 2149 0018 movel %a1,%a0@(24)
_ISR_Enable( level );
49ab0: 46c1 movew %d1,%sr
return( previous_state ); }
49ab2: 241f movel %sp@+,%d2 49ab4: 245f moveal %sp@+,%a2 49ab6: 4e5e unlk %fp 49ab8: 4e75 rts
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49aba: 2279 0005 fdb8 moveal 5fdb8 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED
/*
* 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;
49ac0: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49ac4: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
49ac8: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state ); }
49aca: 241f movel %sp@+,%d2 <== NOT EXECUTED 49acc: 245f moveal %sp@+,%a2 <== NOT EXECUTED 49ace: 4e5e unlk %fp <== NOT EXECUTED
...
0004afac <_Watchdog_Report>:
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4afac: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
printk(
4afb0: 223c 0005 f435 movel #390197,%d1 <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4afb6: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4afba: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED 4afbe: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
printk(
4afc2: 2a28 0024 movel %a0@(36),%d5 <== NOT EXECUTED 4afc6: 2828 0020 movel %a0@(32),%d4 <== NOT EXECUTED 4afca: 2628 001c movel %a0@(28),%d3 <== NOT EXECUTED 4afce: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED 4afd2: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED 4afd6: 4a80 tstl %d0 <== NOT EXECUTED 4afd8: 672a beqs 4b004 <_Watchdog_Report+0x58> <== NOT EXECUTED 4afda: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4afdc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4afde: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4afe0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4afe2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4afe4: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4afe6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4afe8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4afea: 4879 0005 f5b6 pea 5f5b6 <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED 4aff0: 4eb9 0004 4874 jsr 44874 <printk> <== NOT EXECUTED 4aff6: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4affa: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED 4b000: 4e5e unlk %fp <== NOT EXECUTED 4b002: 4e75 rts <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
printk(
4b004: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b006: 223c 0005 f43a movel #390202,%d1 <== NOT EXECUTED 4b00c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b00e: 2001 movel %d1,%d0 <== NOT EXECUTED 4b010: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b012: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4b014: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b016: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4b018: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b01a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b01c: 4879 0005 f5b6 pea 5f5b6 <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED 4b022: 4eb9 0004 4874 jsr 44874 <printk> <== NOT EXECUTED 4b028: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4b02c: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED 4b032: 4e5e unlk %fp <== NOT EXECUTED
...
0004af30 <_Watchdog_Report_chain>:
)
{
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4af30: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _Watchdog_Report_chain(
const char *name,
Chain_Control *header
)
{
4af36: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4af3a: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 4af3e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4af42: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4af46: 40c3 movew %sr,%d3 <== NOT EXECUTED 4af48: 8083 orl %d3,%d0 <== NOT EXECUTED 4af4a: 46c0 movew %d0,%sr <== NOT EXECUTED
printk( "Watchdog Chain: %s %p\n", name, header );
4af4c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4af4e: 4bf9 0004 4874 lea 44874 <printk>,%a5 <== NOT EXECUTED 4af54: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4af56: 4879 0005 f580 pea 5f580 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED 4af5c: 4e95 jsr %a5@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4af5e: 245b moveal %a3@+,%a2 <== NOT EXECUTED
if ( !_Chain_Is_empty( header ) ) {
4af60: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4af64: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4af66: 672c beqs 4af94 <_Watchdog_Report_chain+0x64> <== NOT EXECUTED 4af68: 49f9 0004 afac lea 4afac <_Watchdog_Report>,%a4 <== NOT EXECUTED
node != _Chain_Tail(header) ;
node = node->next )
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
4af6e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4af70: 42a7 clrl %sp@- <== NOT EXECUTED 4af72: 4e94 jsr %a4@ <== NOT EXECUTED
_ISR_Disable( level );
printk( "Watchdog Chain: %s %p\n", name, header );
if ( !_Chain_Is_empty( header ) ) {
for ( node = header->first ;
node != _Chain_Tail(header) ;
node = node->next )
4af74: 2452 moveal %a2@,%a2 <== NOT EXECUTED
Chain_Node *node;
_ISR_Disable( level );
printk( "Watchdog Chain: %s %p\n", name, header );
if ( !_Chain_Is_empty( header ) ) {
for ( node = header->first ;
4af76: 508f addql #8,%sp <== NOT EXECUTED 4af78: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4af7a: 66f2 bnes 4af6e <_Watchdog_Report_chain+0x3e> <== NOT EXECUTED
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
4af7c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4af7e: 4879 0005 f597 pea 5f597 <_Status_Object_name_errors_to_status+0x2b><== NOT EXECUTED 4af84: 4e95 jsr %a5@ <== NOT EXECUTED 4af86: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
4af88: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4af8a: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4af90: 4e5e unlk %fp <== NOT EXECUTED 4af92: 4e75 rts <== NOT EXECUTED
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
4af94: 4879 0005 f5a6 pea 5f5a6 <_Status_Object_name_errors_to_status+0x3a><== NOT EXECUTED 4af9a: 4e95 jsr %a5@ <== NOT EXECUTED 4af9c: 588f addql #4,%sp <== NOT EXECUTED
}
_ISR_Enable( level );
4af9e: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4afa0: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4afa6: 4e5e unlk %fp <== NOT EXECUTED
...
00049ad4 <_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 );
49ad4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _Watchdog_Tickle(
Chain_Control *header
)
{
49ada: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 49ade: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 49ae2: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
* 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 );
49ae6: 40c2 movew %sr,%d2 <== NOT EXECUTED 49ae8: 8082 orl %d2,%d0 <== NOT EXECUTED 49aea: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
49aec: 264c moveal %a4,%a3 <== NOT EXECUTED 49aee: 245b moveal %a3@+,%a2 <== NOT EXECUTED
if ( _Chain_Is_empty( header ) )
49af0: b7ca cmpal %a2,%a3 <== NOT EXECUTED 49af2: 673e beqs 49b32 <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
* 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) {
49af4: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 49af8: 4bf9 0004 9a34 lea 49a34 <_Watchdog_Remove>,%a5 <== NOT EXECUTED 49afe: 6708 beqs 49b08 <_Watchdog_Tickle+0x34> <== NOT EXECUTED
the_watchdog->delta_interval--;
49b00: 5380 subql #1,%d0 <== NOT EXECUTED 49b02: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
49b06: 662a bnes 49b32 <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
49b08: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
goto leave;
}
do {
watchdog_state = _Watchdog_Remove( the_watchdog );
49b0e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49b10: 4e95 jsr %a5@ <== NOT EXECUTED
_ISR_Enable( level );
49b12: 46c2 movew %d2,%sr <== NOT EXECUTED
switch( watchdog_state ) {
49b14: 7202 moveq #2,%d1 <== NOT EXECUTED 49b16: 588f addql #4,%sp <== NOT EXECUTED 49b18: b280 cmpl %d0,%d1 <== NOT EXECUTED 49b1a: 6722 beqs 49b3e <_Watchdog_Tickle+0x6a> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
49b1c: 2003 movel %d3,%d0 <== NOT EXECUTED 49b1e: 40c2 movew %sr,%d2 <== NOT EXECUTED 49b20: 8082 orl %d2,%d0 <== NOT EXECUTED 49b22: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
49b24: 2014 movel %a4@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) header->first );
49b26: 2440 moveal %d0,%a2 <== NOT EXECUTED
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
49b28: b7c0 cmpal %d0,%a3 <== NOT EXECUTED 49b2a: 6706 beqs 49b32 <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
}
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
49b2c: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 49b30: 67dc beqs 49b0e <_Watchdog_Tickle+0x3a> <== NOT EXECUTED
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
49b32: 46c2 movew %d2,%sr <== NOT EXECUTED
}
49b34: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 49b3a: 4e5e unlk %fp <== NOT EXECUTED 49b3c: 4e75 rts <== NOT EXECUTED
_ISR_Enable( level );
switch( watchdog_state ) {
case WATCHDOG_ACTIVE:
(*the_watchdog->routine)(
49b3e: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 49b42: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED 49b46: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 49b4a: 4e90 jsr %a0@ <== NOT EXECUTED
the_watchdog->id,
the_watchdog->user_data
);
break;
49b4c: 508f addql #8,%sp <== NOT EXECUTED 49b4e: 60cc bras 49b1c <_Watchdog_Tickle+0x48> <== NOT EXECUTED
00049bea <_Workspace_Allocate_or_fatal_error>:
* _Workspace_Allocate_or_fatal_error
*/
void *_Workspace_Allocate_or_fatal_error(
size_t size
)
{
49bea: 4e56 0000 linkw %fp,#0 49bee: 42a7 clrl %sp@- 49bf0: 42a7 clrl %sp@- 49bf2: 2f2e 0008 movel %fp@(8),%sp@- 49bf6: 4879 0005 fcaa pea 5fcaa <_Workspace_Area> 49bfc: 4eb9 0004 c688 jsr 4c688 <_Heap_Allocate_aligned_with_boundary>
__builtin_return_address( 1 ),
memory
);
#endif
if ( memory == NULL )
49c02: 4fef 0010 lea %sp@(16),%sp 49c06: 4a80 tstl %d0
49c08: 6704 beqs 49c0e <_Workspace_Allocate_or_fatal_error+0x24>
true,
INTERNAL_ERROR_WORKSPACE_ALLOCATION
);
return memory;
}
49c0a: 4e5e unlk %fp 49c0c: 4e75 rts
memory
);
#endif
if ( memory == NULL )
_Internal_error_Occurred(
49c0e: 4878 0003 pea 3 <DIVIDE> 49c12: 4878 0001 pea 1 <ADD> 49c16: 42a7 clrl %sp@- 49c18: 4eb9 0004 785c jsr 4785c <_Internal_error_Occurred>
...
00057ea0 <__env_lock>:
57ea0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 57ea4: 4e5e unlk %fp <== NOT EXECUTED
00057ea8 <__env_unlock>:
57ea8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 57eac: 4e5e unlk %fp <== NOT EXECUTED
00043404 <__getpid>:
#endif
#include <unistd.h>
pid_t __getpid(void)
{
43404: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid(); }
43408: 4e5e unlk %fp <== NOT EXECUTED
#include <unistd.h>
pid_t __getpid(void)
{
return getpid();
4340a: 4ef9 0004 3410 jmp 43410 <getpid> <== NOT EXECUTED
0005bb8c <_calloc_r>:
void *_calloc_r(
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
5bb8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5bb90: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return calloc( elements, size );
5bb94: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 5bb9a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5bb9e: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
return calloc( elements, size );
5bba0: 4ef9 0004 28f0 jmp 428f0 <calloc> <== NOT EXECUTED
...
0004462c <_chown_helper>:
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
4462c: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 44630: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED 44634: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &loc, follow_link ) )
44638: 260e movel %fp,%d3 <== NOT EXECUTED 4463a: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED 44640: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44642: 4eb9 0005 2cc8 jsr 52cc8 <strlen> <== NOT EXECUTED 44648: 2eae 0014 movel %fp@(20),%sp@ <== NOT EXECUTED 4464c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
4464e: 382e 000e movew %fp@(14),%d4 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &loc, follow_link ) )
44652: 42a7 clrl %sp@- <== NOT EXECUTED
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
44654: 3a2e 0012 movew %fp@(18),%d5 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &loc, follow_link ) )
44658: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4465a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4465c: 4eb9 0004 4998 jsr 44998 <rtems_filesystem_evaluate_path> <== NOT EXECUTED 44662: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 44666: 4a80 tstl %d0 <== NOT EXECUTED 44668: 670c beqs 44676 <_chown_helper+0x4a> <== NOT EXECUTED
return -1;
4466a: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->chown_h)( &loc, owner, group );
rtems_filesystem_freenode( &loc );
return result;
}
4466c: 4cee 003c ffd8 moveml %fp@(-40),%d2-%d5 <== NOT EXECUTED 44672: 4e5e unlk %fp <== NOT EXECUTED 44674: 4e75 rts <== NOT EXECUTED
int result;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &loc, follow_link ) )
return -1;
result = (*loc.ops->chown_h)( &loc, owner, group );
44676: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 4467a: 3f05 movew %d5,%sp@- <== NOT EXECUTED 4467c: 4267 clrw %sp@- <== NOT EXECUTED 4467e: 3f04 movew %d4,%sp@- <== NOT EXECUTED 44680: 4267 clrw %sp@- <== NOT EXECUTED 44682: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44684: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 44688: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4468a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4468c: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 44690: 4eb9 0004 4a7c jsr 44a7c <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
44696: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED 4469a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
4469e: 4cee 003c ffd8 moveml %fp@(-40),%d2-%d5 <== NOT EXECUTED 446a4: 4e5e unlk %fp <== NOT EXECUTED
0005ce60 <_execve>:
int _execve(
const char *path __attribute__((unused)),
char *const argv[] __attribute__((unused)),
char *const envp[] __attribute__((unused))
)
{
5ce60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
5ce64: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 5ce6a: 7258 moveq #88,%d1 <== NOT EXECUTED 5ce6c: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
5ce6e: 70ff moveq #-1,%d0 <== NOT EXECUTED 5ce70: 4e5e unlk %fp <== NOT EXECUTED
const char *path __attribute__((unused)),
char *const argv[] __attribute__((unused)),
char *const envp[] __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
5ce72: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000439da <_fcntl_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
int cmd,
int arg
)
{
439da: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 439de: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 439e2: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return fcntl( fd, cmd, arg );
439e6: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED 439ec: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED 439f0: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
439f4: 4e5e unlk %fp <== NOT EXECUTED
int fd,
int cmd,
int arg
)
{
return fcntl( fd, cmd, arg );
439f6: 4ef9 0004 37cc jmp 437cc <fcntl> <== NOT EXECUTED
0005bba8 <_free_r>:
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
5bba8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free( ptr );
5bbac: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
5bbb2: 4e5e unlk %fp <== NOT EXECUTED
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
free( ptr );
5bbb4: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
...
0005bc58 <_fstat_r>:
int _fstat_r(
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
5bc58: 4e56 0000 linkw %fp,#0 5bc5c: 202e 000c movel %fp@(12),%d0
return fstat( fd, buf );
5bc60: 2d6e 0010 000c movel %fp@(16),%fp@(12) 5bc66: 2d40 0008 movel %d0,%fp@(8)
}
5bc6a: 4e5e unlk %fp
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
return fstat( fd, buf );
5bc6c: 4ef9 0005 bbbc jmp 5bbbc <fstat>
...
0005bc7e <_getpid_r>:
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
return getpid();
}
5bc7e: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <reent.h>
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
5bc80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid(); }
5bc84: 4e5e unlk %fp <== NOT EXECUTED
00042e0a <_gettimeofday>:
int _gettimeofday(
struct timeval *tp,
struct timezone *tzp
)
{
42e0a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return gettimeofday( tp, tzp ); }
42e0e: 4e5e unlk %fp <== NOT EXECUTED
int _gettimeofday(
struct timeval *tp,
struct timezone *tzp
)
{
return gettimeofday( tp, tzp );
42e10: 4ef9 0004 2d8c jmp 42d8c <gettimeofday> <== NOT EXECUTED
...
00042df0 <_gettimeofday_r>:
int _gettimeofday_r(
struct _reent *ignored_reentrancy_stuff __attribute__((unused)),
struct timeval *tp,
struct timezone *tzp
)
{
42df0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42df4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return gettimeofday( tp, tzp );
42df8: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 42dfe: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
42e02: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored_reentrancy_stuff __attribute__((unused)),
struct timeval *tp,
struct timezone *tzp
)
{
return gettimeofday( tp, tzp );
42e04: 4ef9 0004 2d8c jmp 42d8c <gettimeofday> <== NOT EXECUTED
0005bc88 <_isatty_r>:
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
5bc88: 4e56 0000 linkw %fp,#0
return isatty( fd );
5bc8c: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5bc92: 4e5e unlk %fp
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
return isatty( fd );
5bc94: 4ef9 0005 c800 jmp 5c800 <isatty>
...
0005bf50 <_kill_r>:
int _kill_r(
struct _reent *ptr,
pid_t pid,
int sig
)
{
5bf50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
5bf54: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
int _kill_r(
struct _reent *ptr,
pid_t pid,
int sig
)
{
5bf5a: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
5bf5e: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED 5bf62: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
5bf66: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr,
pid_t pid,
int sig
)
{
return killinfo( pid, sig, NULL );
5bf68: 4ef9 0005 c140 jmp 5c140 <killinfo> <== NOT EXECUTED
...
00046576 <_link_r>:
int _link_r(
struct _reent *ptr __attribute__((unused)),
const char *existing,
const char *new
)
{
46576: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4657a: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return link( existing, new );
4657e: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 46584: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
46588: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *existing,
const char *new
)
{
return link( existing, new );
4658a: 4ef9 0004 647c jmp 4647c <link> <== NOT EXECUTED
0005bdf8 <_lseek_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
off_t offset,
int whence
)
{
5bdf8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5bdfc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 5be00: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 5be04: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
return lseek( fd, offset, whence );
5be08: 2d6e 0018 0014 movel %fp@(24),%fp@(20) <== NOT EXECUTED 5be0e: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 5be12: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED 5be16: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5be1a: 4e5e unlk %fp <== NOT EXECUTED
int fd,
off_t offset,
int whence
)
{
return lseek( fd, offset, whence );
5be1c: 4ef9 0005 bc9c jmp 5bc9c <lseek> <== NOT EXECUTED
...
00045104 <_lstat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
45104: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45108: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
4510c: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 45112: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45116: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
45118: 4ef9 0004 506c jmp 4506c <lstat> <== NOT EXECUTED
...
0005be24 <_malloc_r>:
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
5be24: 4e56 0000 linkw %fp,#0
return malloc( size );
5be28: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5be2e: 4e5e unlk %fp
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
return malloc( size );
5be30: 4ef9 0004 302c jmp 4302c <malloc>
...
00043b7a <_open_r>:
struct _reent *ptr __attribute__((unused)),
const char *buf,
int flags,
int mode
)
{
43b7a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43b7e: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 43b82: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return open( buf, flags, mode );
43b86: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED 43b8c: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED 43b90: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43b94: 4e5e unlk %fp <== NOT EXECUTED
const char *buf,
int flags,
int mode
)
{
return open( buf, flags, mode );
43b96: 4ef9 0004 3914 jmp 43914 <open> <== NOT EXECUTED
0005beee <_read_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
void *buf,
size_t nbytes
)
{
5beee: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5bef2: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 5bef6: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return read( fd, buf, nbytes );
5befa: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED 5bf00: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED 5bf04: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5bf08: 4e5e unlk %fp <== NOT EXECUTED
int fd,
void *buf,
size_t nbytes
)
{
return read( fd, buf, nbytes );
5bf0a: 4ef9 0005 be38 jmp 5be38 <read> <== NOT EXECUTED
0005bf10 <_realloc_r>:
void *_realloc_r(
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
5bf10: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5bf14: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return realloc( ptr, size );
5bf18: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 5bf1e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5bf22: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
return realloc( ptr, size );
5bf24: 4ef9 0005 bf70 jmp 5bf70 <realloc> <== NOT EXECUTED
...
00047504 <_rename_r>:
int _rename_r(
struct _reent *ptr __attribute__((unused)),
const char *old,
const char *new
)
{
47504: 4e56 ffa4 linkw %fp,#-92 <== NOT EXECUTED 47508: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4750c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 47510: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
/*
* Get the parent node of the old path to be renamed. Find the parent path.
*/
old_parent_pathlen = rtems_filesystem_dirname ( old );
47514: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47516: 4eb9 0004 5d00 jsr 45d00 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( old_parent_pathlen == 0 )
4751c: 588f addql #4,%sp <== NOT EXECUTED 4751e: 4a80 tstl %d0 <== NOT EXECUTED 47520: 6600 017c bnew 4769e <_rename_r+0x19a> <== NOT EXECUTED
rtems_filesystem_get_start_loc( old, &i, &old_parent_loc );
47524: 45ee ffd0 lea %fp@(-48),%a2 <== NOT EXECUTED 47528: 4282 clrl %d2 <== NOT EXECUTED 4752a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4752c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
rtems_filesystem_location_info_t old_parent_loc; rtems_filesystem_location_info_t new_parent_loc; int i; int result; const char *name; bool free_old_parentloc = false;
47530: 4205 clrb %d5 <== NOT EXECUTED
*/
old_parent_pathlen = rtems_filesystem_dirname ( old );
if ( old_parent_pathlen == 0 )
rtems_filesystem_get_start_loc( old, &i, &old_parent_loc );
47532: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47534: 4eb9 0004 7920 jsr 47920 <rtems_filesystem_get_start_loc> <== NOT EXECUTED 4753a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
old_loc = old_parent_loc;
4753e: 2d52 ffe4 movel %a2@,%fp@(-28) <== NOT EXECUTED
name = old + old_parent_pathlen;
47542: d483 addl %d3,%d2 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
47544: 47f9 0005 58f4 lea 558f4 <strlen>,%a3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
4754a: 260e movel %fp,%d3 <== NOT EXECUTED 4754c: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
old_loc = old_parent_loc;
47552: 2d6e ffd4 ffe8 movel %fp@(-44),%fp@(-24) <== NOT EXECUTED 47558: 2d6e ffd8 ffec movel %fp@(-40),%fp@(-20) <== NOT EXECUTED 4755e: 2d6e ffdc fff0 movel %fp@(-36),%fp@(-16) <== NOT EXECUTED 47564: 2d6e ffe0 fff4 movel %fp@(-32),%fp@(-12) <== NOT EXECUTED
name = old + old_parent_pathlen; name += rtems_filesystem_prefix_separators( name, strlen( name ) );
4756a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
old_loc = old_parent_loc;
name = old + old_parent_pathlen;
4756c: 2d42 fff8 movel %d2,%fp@(-8) <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
47570: 4e93 jsr %a3@ <== NOT EXECUTED 47572: 2e80 movel %d0,%sp@ <== NOT EXECUTED 47574: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47576: 4eb9 0004 5d42 jsr 45d42 <rtems_filesystem_prefix_separators><== NOT EXECUTED 4757c: d480 addl %d0,%d2 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
4757e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* Start from the parent to find the node that should be under it.
*/
old_loc = old_parent_loc;
name = old + old_parent_pathlen;
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
47580: 2d42 fff8 movel %d2,%fp@(-8) <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
47584: 4e93 jsr %a3@ <== NOT EXECUTED 47586: 4297 clrl %sp@ <== NOT EXECUTED 47588: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4758a: 42a7 clrl %sp@- <== NOT EXECUTED 4758c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4758e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47590: 4eb9 0004 5c44 jsr 45c44 <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &old_loc, false );
if ( result != 0 ) {
47596: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4759a: 4a80 tstl %d0 <== NOT EXECUTED 4759c: 6600 00d6 bnew 47674 <_rename_r+0x170> <== NOT EXECUTED
/*
* Get the parent of the new node we are renaming to.
*/
rtems_filesystem_get_start_loc( new, &i, &new_parent_loc );
475a0: 240e movel %fp,%d2 <== NOT EXECUTED 475a2: 0682 ffff ffbc addil #-68,%d2 <== NOT EXECUTED 475a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 475aa: 486e fffc pea %fp@(-4) <== NOT EXECUTED 475ae: 2f04 movel %d4,%sp@- <== NOT EXECUTED 475b0: 4eb9 0004 7920 jsr 47920 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
475b6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 475ba: d8ae fffc addl %fp@(-4),%d4 <== NOT EXECUTED 475be: 2f02 movel %d2,%sp@- <== NOT EXECUTED 475c0: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED 475c4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 475c6: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 475ca: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 ) {
475cc: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 475d0: 4a80 tstl %d0 <== NOT EXECUTED 475d2: 6600 00f0 bnew 476c4 <_rename_r+0x1c0> <== NOT EXECUTED
/*
* Check to see if the caller is trying to rename across file system
* boundaries.
*/
if ( old_parent_loc.mt_entry != new_parent_loc.mt_entry ) {
475d6: 202e ffcc movel %fp@(-52),%d0 <== NOT EXECUTED 475da: b0ae ffe0 cmpl %fp@(-32),%d0 <== NOT EXECUTED 475de: 6648 bnes 47628 <_rename_r+0x124> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
rtems_set_errno_and_return_minus_one( EXDEV );
}
result = (*new_parent_loc.ops->rename_h)( &old_parent_loc, &old_loc, &new_parent_loc, name );
475e0: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
rtems_filesystem_freenode( &new_parent_loc );
475e4: 47f9 0004 5fc8 lea 45fc8 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
rtems_set_errno_and_return_minus_one( EXDEV );
}
result = (*new_parent_loc.ops->rename_h)( &old_parent_loc, &old_loc, &new_parent_loc, name );
475ea: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED 475ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 475f0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 475f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475f4: 2068 0040 moveal %a0@(64),%a0 <== NOT EXECUTED 475f8: 4e90 jsr %a0@ <== NOT EXECUTED 475fa: 2800 movel %d0,%d4 <== NOT EXECUTED
rtems_filesystem_freenode( &new_parent_loc );
475fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 475fe: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_old_parentloc )
47600: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 47604: 4a05 tstb %d5 <== NOT EXECUTED 47606: 6612 bnes 4761a <_rename_r+0x116> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
47608: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4760a: 4e93 jsr %a3@ <== NOT EXECUTED
return result;
4760c: 588f addql #4,%sp <== NOT EXECUTED
}
4760e: 2004 movel %d4,%d0 <== NOT EXECUTED 47610: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED 47616: 4e5e unlk %fp <== NOT EXECUTED 47618: 4e75 rts <== NOT EXECUTED
result = (*new_parent_loc.ops->rename_h)( &old_parent_loc, &old_loc, &new_parent_loc, name );
rtems_filesystem_freenode( &new_parent_loc );
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
4761a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4761c: 4e93 jsr %a3@ <== NOT EXECUTED 4761e: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
47620: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47622: 4e93 jsr %a3@ <== NOT EXECUTED
return result;
47624: 588f addql #4,%sp <== NOT EXECUTED 47626: 60e6 bras 4760e <_rename_r+0x10a> <== NOT EXECUTED
* Check to see if the caller is trying to rename across file system
* boundaries.
*/
if ( old_parent_loc.mt_entry != new_parent_loc.mt_entry ) {
rtems_filesystem_freenode( &new_parent_loc );
47628: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4762a: 47f9 0004 5fc8 lea 45fc8 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED 47630: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_old_parentloc )
47632: 588f addql #4,%sp <== NOT EXECUTED 47634: 4a05 tstb %d5 <== NOT EXECUTED 47636: 6620 bnes 47658 <_rename_r+0x154> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
47638: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
4763a: 78ff moveq #-1,%d4 <== NOT EXECUTED
if ( old_parent_loc.mt_entry != new_parent_loc.mt_entry ) {
rtems_filesystem_freenode( &new_parent_loc );
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
4763c: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
4763e: 4eb9 0005 28c0 jsr 528c0 <__errno> <== NOT EXECUTED 47644: 588f addql #4,%sp <== NOT EXECUTED 47646: 2040 moveal %d0,%a0 <== NOT EXECUTED 47648: 7012 moveq #18,%d0 <== NOT EXECUTED 4764a: 2080 movel %d0,%a0@ <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
4764c: 2004 movel %d4,%d0 <== NOT EXECUTED 4764e: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED 47654: 4e5e unlk %fp <== NOT EXECUTED 47656: 4e75 rts <== NOT EXECUTED
*/
if ( old_parent_loc.mt_entry != new_parent_loc.mt_entry ) {
rtems_filesystem_freenode( &new_parent_loc );
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
47658: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
rtems_set_errno_and_return_minus_one( EXDEV );
4765a: 78ff moveq #-1,%d4 <== NOT EXECUTED
*/
if ( old_parent_loc.mt_entry != new_parent_loc.mt_entry ) {
rtems_filesystem_freenode( &new_parent_loc );
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
4765c: 4e93 jsr %a3@ <== NOT EXECUTED 4765e: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
47660: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47662: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
47664: 4eb9 0005 28c0 jsr 528c0 <__errno> <== NOT EXECUTED 4766a: 588f addql #4,%sp <== NOT EXECUTED 4766c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4766e: 7012 moveq #18,%d0 <== NOT EXECUTED 47670: 2080 movel %d0,%a0@ <== NOT EXECUTED 47672: 60d8 bras 4764c <_rename_r+0x148> <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &old_loc, false );
if ( result != 0 ) {
if ( free_old_parentloc )
47674: 4a05 tstb %d5 <== NOT EXECUTED 47676: 660e bnes 47686 <_rename_r+0x182> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
return -1;
47678: 78ff moveq #-1,%d4 <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
4767a: 2004 movel %d4,%d0 <== NOT EXECUTED 4767c: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED 47682: 4e5e unlk %fp <== NOT EXECUTED 47684: 4e75 rts <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &old_loc, false );
if ( result != 0 ) {
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
47686: 2f0a movel %a2,%sp@- <== NOT EXECUTED
return -1;
47688: 78ff moveq #-1,%d4 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &old_loc, false );
if ( result != 0 ) {
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
4768a: 4eb9 0004 5fc8 jsr 45fc8 <rtems_filesystem_freenode> <== NOT EXECUTED 47690: 588f addql #4,%sp <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
47692: 2004 movel %d4,%d0 <== NOT EXECUTED 47694: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4769a: 4e5e unlk %fp <== NOT EXECUTED 4769c: 4e75 rts <== NOT EXECUTED
old_parent_pathlen = rtems_filesystem_dirname ( old );
if ( old_parent_pathlen == 0 )
rtems_filesystem_get_start_loc( old, &i, &old_parent_loc );
else {
result = rtems_filesystem_evaluate_path( old, old_parent_pathlen,
4769e: 42a7 clrl %sp@- <== NOT EXECUTED 476a0: 45ee ffd0 lea %fp@(-48),%a2 <== NOT EXECUTED 476a4: 2400 movel %d0,%d2 <== NOT EXECUTED 476a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 476a8: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 476ac: 2f00 movel %d0,%sp@- <== NOT EXECUTED 476ae: 2f03 movel %d3,%sp@- <== NOT EXECUTED 476b0: 4eb9 0004 5cb4 jsr 45cb4 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&old_parent_loc,
false );
if ( result != 0 )
476b6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 476ba: 4a80 tstl %d0 <== NOT EXECUTED 476bc: 66ba bnes 47678 <_rename_r+0x174> <== NOT EXECUTED
return -1;
free_old_parentloc = true;
476be: 7a01 moveq #1,%d5 <== NOT EXECUTED 476c0: 6000 fe7c braw 4753e <_rename_r+0x3a> <== NOT EXECUTED
rtems_filesystem_get_start_loc( new, &i, &new_parent_loc );
result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
if ( result != 0 ) {
rtems_filesystem_freenode( &new_parent_loc );
476c4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 476c6: 47f9 0004 5fc8 lea 45fc8 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED 476cc: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_old_parentloc )
476ce: 588f addql #4,%sp <== NOT EXECUTED 476d0: 4a05 tstb %d5 <== NOT EXECUTED 476d2: 6614 bnes 476e8 <_rename_r+0x1e4> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
476d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
return -1;
476d6: 78ff moveq #-1,%d4 <== NOT EXECUTED
result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
if ( result != 0 ) {
rtems_filesystem_freenode( &new_parent_loc );
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
476d8: 4e93 jsr %a3@ <== NOT EXECUTED
return -1;
476da: 588f addql #4,%sp <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
476dc: 2004 movel %d4,%d0 <== NOT EXECUTED 476de: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED 476e4: 4e5e unlk %fp <== NOT EXECUTED 476e6: 4e75 rts <== NOT EXECUTED
result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
if ( result != 0 ) {
rtems_filesystem_freenode( &new_parent_loc );
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
476e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
return -1;
476ea: 78ff moveq #-1,%d4 <== NOT EXECUTED
result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
if ( result != 0 ) {
rtems_filesystem_freenode( &new_parent_loc );
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
476ec: 4e93 jsr %a3@ <== NOT EXECUTED 476ee: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
476f0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 476f2: 4e93 jsr %a3@ <== NOT EXECUTED
return -1;
476f4: 588f addql #4,%sp <== NOT EXECUTED 476f6: 60e4 bras 476dc <_rename_r+0x1d8> <== NOT EXECUTED
00043ab6 <_stat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
43ab6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43aba: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
43abe: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 43ac4: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43ac8: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
43aca: 4ef9 0004 3a1c jmp 43a1c <stat> <== NOT EXECUTED
00045c5c <_times>:
#endif
clock_t _times(
struct tms *ptms
)
{
45c5c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 45c60: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 45c64: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_interval ticks;
if ( !ptms )
45c68: 4a8a tstl %a2 <== NOT EXECUTED 45c6a: 6776 beqs 45ce2 <_times+0x86> <== NOT EXECUTED
/*
* This call does not depend on TOD being initialized and can't fail.
*/
ticks = rtems_clock_get_ticks_since_boot();
45c6c: 4eb9 0004 60b4 jsr 460b4 <rtems_clock_get_ticks_since_boot><== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45c72: 2239 0005 e800 movel 5e800 <Configuration+0xc>,%d1 <== NOT EXECUTED 45c78: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
45c7e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45c82: 4c01 2800 mulsl %d1,%d2 <== NOT EXECUTED 45c86: 283c 000f 4240 movel #1000000,%d4 <== NOT EXECUTED 45c8c: 4c44 1001 remul %d4,%d1,%d1 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
45c90: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45c94: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 45c98: 2079 0006 052c moveal 6052c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 45c9e: 41e8 0082 lea %a0@(130),%a0 <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45ca2: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED 45ca6: 223c 3b9a ca00 movel #1000000000,%d1 <== NOT EXECUTED 45cac: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
45cb0: 2d40 ffec movel %d0,%fp@(-20) <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45cb4: 2d43 fff4 movel %d3,%fp@(-12) <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
45cb8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45cba: 4eb9 0004 9874 jsr 49874 <_Timespec_Divide> <== NOT EXECUTED
ptms->tms_utime = ticks;
}
#else
ptms->tms_utime = _Thread_Executing->cpu_time_used;
#endif
ptms->tms_stime = ticks;
45cc0: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
ptms->tms_cutime = 0;
ptms->tms_cstime = 0;
return ticks;
45cc4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
&_Thread_Executing->cpu_time_used,
&per_tick,
&ticks,
&fractional_ticks
);
ptms->tms_utime = ticks;
45cc8: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED
}
#else
ptms->tms_utime = _Thread_Executing->cpu_time_used;
#endif
ptms->tms_stime = ticks;
45ccc: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
ptms->tms_cutime = 0;
45cd0: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
ptms->tms_cstime = 0;
45cd4: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
return ticks;
}
45cd8: 4cee 041c ffdc moveml %fp@(-36),%d2-%d4/%a2 <== NOT EXECUTED 45cde: 4e5e unlk %fp <== NOT EXECUTED 45ce0: 4e75 rts <== NOT EXECUTED
)
{
rtems_interval ticks;
if ( !ptms )
rtems_set_errno_and_return_minus_one( EFAULT );
45ce2: 4eb9 0004 ec80 jsr 4ec80 <__errno> <== NOT EXECUTED 45ce8: 720e moveq #14,%d1 <== NOT EXECUTED 45cea: 2040 moveal %d0,%a0 <== NOT EXECUTED 45cec: 70ff moveq #-1,%d0 <== NOT EXECUTED
ptms->tms_stime = ticks;
ptms->tms_cutime = 0;
ptms->tms_cstime = 0;
return ticks;
}
45cee: 4cee 041c ffdc moveml %fp@(-36),%d2-%d4/%a2 <== NOT EXECUTED
)
{
rtems_interval ticks;
if ( !ptms )
rtems_set_errno_and_return_minus_one( EFAULT );
45cf4: 2081 movel %d1,%a0@ <== NOT EXECUTED
ptms->tms_stime = ticks;
ptms->tms_cutime = 0;
ptms->tms_cstime = 0;
return ticks;
}
45cf6: 4e5e unlk %fp <== NOT EXECUTED
00045d06 <_times_r>:
clock_t _times_r(
struct _reent *ptr __attribute__((unused)),
struct tms *ptms
)
{
45d06: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _times( ptms );
45d0a: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
45d10: 4e5e unlk %fp <== NOT EXECUTED
clock_t _times_r(
struct _reent *ptr __attribute__((unused)),
struct tms *ptms
)
{
return _times( ptms );
45d12: 4ef9 0004 5c5c jmp 45c5c <_times> <== NOT EXECUTED
00046de0 <_unlink_r>:
int _unlink_r(
struct _reent *ptr __attribute__((unused)),
const char *path
)
{
46de0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return unlink( path );
46de4: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
46dea: 4e5e unlk %fp <== NOT EXECUTED
int _unlink_r(
struct _reent *ptr __attribute__((unused)),
const char *path
)
{
return unlink( path );
46dec: 4ef9 0004 6c6c jmp 46c6c <unlink> <== NOT EXECUTED
...
0005bf2c <_write_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
const void *buf,
size_t nbytes
)
{
5bf2c: 4e56 0000 linkw %fp,#0 5bf30: 222e 0010 movel %fp@(16),%d1 5bf34: 202e 000c movel %fp@(12),%d0
return write( fd, buf, nbytes );
5bf38: 2d6e 0014 0010 movel %fp@(20),%fp@(16) 5bf3e: 2d41 000c movel %d1,%fp@(12) 5bf42: 2d40 0008 movel %d0,%fp@(8)
}
5bf46: 4e5e unlk %fp
int fd,
const void *buf,
size_t nbytes
)
{
return write( fd, buf, nbytes );
5bf48: 4ef9 0005 c08c jmp 5c08c <write>
...
00044c98 <access>:
int access(
const char *path,
int amode
)
{
44c98: 4e56 ffb8 linkw %fp,#-72 <== NOT EXECUTED 44c9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
struct stat statbuf;
if ( stat(path, &statbuf) )
44c9e: 486e ffba pea %fp@(-70) <== NOT EXECUTED 44ca2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int access(
const char *path,
int amode
)
{
44ca6: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
struct stat statbuf;
if ( stat(path, &statbuf) )
44caa: 4eb9 0004 67cc jsr 467cc <stat> <== NOT EXECUTED 44cb0: 508f addql #8,%sp <== NOT EXECUTED 44cb2: 4a80 tstl %d0 <== NOT EXECUTED 44cb4: 6626 bnes 44cdc <access+0x44> <== NOT EXECUTED
return -1;
if ( amode & R_OK ) {
44cb6: 44c2 movew %d2,%ccr <== NOT EXECUTED 44cb8: 672c beqs 44ce6 <access+0x4e> <== NOT EXECUTED
if (!( statbuf.st_mode & S_IREAD ))
return -1;
}
if ( amode & W_OK ) {
44cba: 0802 0001 btst #1,%d2 <== NOT EXECUTED 44cbe: 6610 bnes 44cd0 <access+0x38> <== NOT EXECUTED
if ( !( statbuf.st_mode & S_IWRITE ) )
return -1;
}
if ( amode & X_OK ) {
44cc0: 0802 0000 btst #0,%d2 <== NOT EXECUTED 44cc4: 6634 bnes 44cfa <access+0x62> <== NOT EXECUTED
if ( !( statbuf.st_mode & S_IEXEC ) )
return -1;
}
return 0;
}
44cc6: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED
if ( amode & X_OK ) {
if ( !( statbuf.st_mode & S_IEXEC ) )
return -1;
}
return 0;
44cca: 4280 clrl %d0 <== NOT EXECUTED
}
44ccc: 4e5e unlk %fp <== NOT EXECUTED 44cce: 4e75 rts <== NOT EXECUTED
if (!( statbuf.st_mode & S_IREAD ))
return -1;
}
if ( amode & W_OK ) {
if ( !( statbuf.st_mode & S_IWRITE ) )
44cd0: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED 44cd4: 0280 0000 0080 andil #128,%d0 <== NOT EXECUTED 44cda: 66e4 bnes 44cc0 <access+0x28> <== NOT EXECUTED
if ( !( statbuf.st_mode & S_IEXEC ) )
return -1;
}
return 0;
}
44cdc: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED
return -1;
}
if ( amode & W_OK ) {
if ( !( statbuf.st_mode & S_IWRITE ) )
return -1;
44ce0: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( !( statbuf.st_mode & S_IEXEC ) )
return -1;
}
return 0;
}
44ce2: 4e5e unlk %fp <== NOT EXECUTED 44ce4: 4e75 rts <== NOT EXECUTED
if ( stat(path, &statbuf) )
return -1;
if ( amode & R_OK ) {
if (!( statbuf.st_mode & S_IREAD ))
44ce6: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED 44cea: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED 44cf0: 67ea beqs 44cdc <access+0x44> <== NOT EXECUTED
return -1;
}
if ( amode & W_OK ) {
44cf2: 0802 0001 btst #1,%d2 <== NOT EXECUTED 44cf6: 67c8 beqs 44cc0 <access+0x28> <== NOT EXECUTED 44cf8: 60d6 bras 44cd0 <access+0x38> <== NOT EXECUTED
if ( !( statbuf.st_mode & S_IWRITE ) )
return -1;
}
if ( amode & X_OK ) {
if ( !( statbuf.st_mode & S_IEXEC ) )
44cfa: 7040 moveq #64,%d0 <== NOT EXECUTED 44cfc: c0ae ffc6 andl %fp@(-58),%d0 <== NOT EXECUTED
return -1;
}
return 0;
}
44d00: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED
if ( amode & X_OK ) {
if ( !( statbuf.st_mode & S_IEXEC ) )
return -1;
}
return 0;
44d04: 4a80 tstl %d0 <== NOT EXECUTED 44d06: 57c0 seq %d0 <== NOT EXECUTED
}
44d08: 4e5e unlk %fp <== NOT EXECUTED
if ( amode & X_OK ) {
if ( !( statbuf.st_mode & S_IEXEC ) )
return -1;
}
return 0;
44d0a: 49c0 extbl %d0 <== NOT EXECUTED
}
...
00046520 <adjtime>:
int adjtime(
struct timeval *delta,
struct timeval *olddelta
)
{
46520: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46524: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 46528: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4652c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
long adjustment;
/*
* Simple validations
*/
if ( !delta )
46530: 4a8a tstl %a2 <== NOT EXECUTED 46532: 6700 00ec beqw 46620 <adjtime+0x100> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )
46536: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4653a: 0c80 000f 423f cmpil #999999,%d0 <== NOT EXECUTED 46540: 6200 00de bhiw 46620 <adjtime+0x100> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( olddelta ) {
46544: 4a8b tstl %a3 <== NOT EXECUTED 46546: 670a beqs 46552 <adjtime+0x32> <== NOT EXECUTED
olddelta->tv_sec = 0;
olddelta->tv_usec = 0;
46548: 42ab 0004 clrl %a3@(4) <== NOT EXECUTED 4654c: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( olddelta ) {
olddelta->tv_sec = 0;
46550: 4293 clrl %a3@ <== NOT EXECUTED
olddelta->tv_usec = 0;
}
/* convert delta to microseconds */
adjustment = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);
46552: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED 46558: 4c12 1800 mulsl %a2@,%d1 <== NOT EXECUTED
adjustment += delta->tv_usec;
4655c: d081 addl %d1,%d0 <== NOT EXECUTED
/* too small to account for */
if ( adjustment < rtems_configuration_get_microseconds_per_tick() )
4655e: b0b9 0005 fb40 cmpl 5fb40 <Configuration+0xc>,%d0 <== NOT EXECUTED 46564: 640c bccs 46572 <adjtime+0x52> <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
*olddelta = *delta;
return 0;
46566: 4280 clrl %d0 <== NOT EXECUTED
}
46568: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED 4656e: 4e5e unlk %fp <== NOT EXECUTED 46570: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46572: 2039 0006 1514 movel 61514 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46578: 5280 addql #1,%d0 <== NOT EXECUTED 4657a: 23c0 0006 1514 movel %d0,61514 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* This prevents context switches while we are adjusting the TOD
*/
_Thread_Disable_dispatch();
_TOD_Get( &ts );
46580: 240e movel %fp,%d2 <== NOT EXECUTED 46582: 5182 subql #8,%d2 <== NOT EXECUTED 46584: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46586: 4eb9 0004 7ef4 jsr 47ef4 <_TOD_Get> <== NOT EXECUTED
ts.tv_sec += delta->tv_sec;
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
4658c: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 46590: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 46596: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
/* if adjustment is too much positive */
while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4659a: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Get( &ts );
ts.tv_sec += delta->tv_sec;
4659c: 2212 movel %a2@,%d1 <== NOT EXECUTED
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
4659e: d0ae fffc addl %fp@(-4),%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Get( &ts );
ts.tv_sec += delta->tv_sec;
465a2: d3ae fff8 addl %d1,%fp@(-8) <== NOT EXECUTED
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
465a6: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
/* if adjustment is too much positive */
while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
465aa: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 465b0: 631c blss 465ce <adjtime+0xae> <== NOT EXECUTED 465b2: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
* At one point there was a static variable named adjustment
* used by this implementation. I don't see any reason for it
* to be here based upon the GNU/Linux documentation.
*/
int adjtime(
465b6: 5281 addql #1,%d1 <== NOT EXECUTED
ts.tv_sec += delta->tv_sec;
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
/* if adjustment is too much positive */
while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
465b8: 0680 c465 3600 addil #-1000000000,%d0 <== NOT EXECUTED
ts.tv_sec += delta->tv_sec;
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
/* if adjustment is too much positive */
while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
465be: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 465c4: 62f0 bhis 465b6 <adjtime+0x96> <== NOT EXECUTED 465c6: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 465ca: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
ts.tv_sec++;
}
/* if adjustment is too much negative */
while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {
465ce: 0c80 c465 3600 cmpil #-1000000000,%d0 <== NOT EXECUTED 465d4: 621c bhis 465f2 <adjtime+0xd2> <== NOT EXECUTED 465d6: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
* At one point there was a static variable named adjustment
* used by this implementation. I don't see any reason for it
* to be here based upon the GNU/Linux documentation.
*/
int adjtime(
465da: 5381 subql #1,%d1 <== NOT EXECUTED
ts.tv_sec++;
}
/* if adjustment is too much negative */
while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {
ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;
465dc: 0680 3b9a ca00 addil #1000000000,%d0 <== NOT EXECUTED
ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
ts.tv_sec++;
}
/* if adjustment is too much negative */
while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {
465e2: 0c80 c465 3600 cmpil #-1000000000,%d0 <== NOT EXECUTED 465e8: 63f0 blss 465da <adjtime+0xba> <== NOT EXECUTED 465ea: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 465ee: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;
ts.tv_sec--;
}
_TOD_Set( &ts );
465f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465f4: 4eb9 0004 7fc0 jsr 47fc0 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
465fa: 4eb9 0004 9296 jsr 49296 <_Thread_Enable_dispatch> <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
46600: 588f addql #4,%sp <== NOT EXECUTED 46602: 4a8b tstl %a3 <== NOT EXECUTED 46604: 6700 ff60 beqw 46566 <adjtime+0x46> <== NOT EXECUTED
*olddelta = *delta;
return 0;
46608: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
/* set the user's output */
if ( olddelta )
*olddelta = *delta;
4660a: 2212 movel %a2@,%d1 <== NOT EXECUTED 4660c: 242a 0004 movel %a2@(4),%d2 <== NOT EXECUTED 46610: 2681 movel %d1,%a3@ <== NOT EXECUTED 46612: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED
return 0;
}
46616: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED 4661c: 4e5e unlk %fp <== NOT EXECUTED 4661e: 4e75 rts <== NOT EXECUTED
*/
if ( !delta )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )
rtems_set_errno_and_return_minus_one( EINVAL );
46620: 4eb9 0004 f5f4 jsr 4f5f4 <__errno> <== NOT EXECUTED 46626: 7216 moveq #22,%d1 <== NOT EXECUTED 46628: 2040 moveal %d0,%a0 <== NOT EXECUTED 4662a: 70ff moveq #-1,%d0 <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
*olddelta = *delta;
return 0;
}
4662c: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
*/
if ( !delta )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )
rtems_set_errno_and_return_minus_one( EINVAL );
46632: 2081 movel %d1,%a0@ <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
*olddelta = *delta;
return 0;
}
46634: 4e5e unlk %fp <== NOT EXECUTED
0004842c <alarm>:
}
unsigned int alarm(
unsigned int seconds
)
{
4842c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 48430: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 48434: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Initialize the timer used to implement alarm().
*/
if ( !the_timer->routine ) {
48438: 4ab9 0006 4bfc tstl 64bfc <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED 4843e: 674e beqs 4848e <alarm+0x62> <== NOT EXECUTED
_Watchdog_Initialize( the_timer, _POSIX_signals_Alarm_TSR, 0, NULL );
} else {
Watchdog_States state;
state = _Watchdog_Remove( the_timer );
48440: 4879 0006 4be0 pea 64be0 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 48446: 4eb9 0004 d5ec jsr 4d5ec <_Watchdog_Remove> <== NOT EXECUTED
if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
4844c: 588f addql #4,%sp <== NOT EXECUTED 4844e: 7201 moveq #1,%d1 <== NOT EXECUTED 48450: 5580 subql #2,%d0 <== NOT EXECUTED 48452: b280 cmpl %d0,%d1 <== NOT EXECUTED 48454: 645e bccs 484b4 <alarm+0x88> <== NOT EXECUTED
unsigned int alarm(
unsigned int seconds
)
{
unsigned int remaining = 0;
48456: 4283 clrl %d3 <== NOT EXECUTED
remaining = the_timer->initial -
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
}
}
if ( seconds )
48458: 4a82 tstl %d2 <== NOT EXECUTED 4845a: 660c bnes 48468 <alarm+0x3c> <== NOT EXECUTED
_Watchdog_Insert_seconds( the_timer, seconds );
return remaining;
}
4845c: 2003 movel %d3,%d0 <== NOT EXECUTED 4845e: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED 48464: 4e5e unlk %fp <== NOT EXECUTED 48466: 4e75 rts <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
48468: 4879 0006 4be0 pea 64be0 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 4846e: 4879 0006 4f2a pea 64f2a <_Watchdog_Seconds_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
48474: 23c2 0006 4bec movel %d2,64bec <_POSIX_signals_Alarm_timer+0xc><== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
4847a: 4eb9 0004 d4a4 jsr 4d4a4 <_Watchdog_Insert> <== NOT EXECUTED 48480: 508f addql #8,%sp <== NOT EXECUTED 48482: 2003 movel %d3,%d0 <== NOT EXECUTED 48484: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED 4848a: 4e5e unlk %fp <== NOT EXECUTED 4848c: 4e75 rts <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4848e: 42b9 0006 4be8 clrl 64be8 <_POSIX_signals_Alarm_timer+0x8> <== NOT EXECUTED
unsigned int alarm(
unsigned int seconds
)
{
unsigned int remaining = 0;
48494: 4283 clrl %d3 <== NOT EXECUTED
the_watchdog->routine = routine;
48496: 203c 0004 8410 movel #295952,%d0 <== NOT EXECUTED
the_watchdog->id = id;
4849c: 42b9 0006 4c00 clrl 64c00 <_POSIX_signals_Alarm_timer+0x20><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
484a2: 23c0 0006 4bfc movel %d0,64bfc <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED
the_watchdog->id = id; the_watchdog->user_data = user_data;
484a8: 42b9 0006 4c04 clrl 64c04 <_POSIX_signals_Alarm_timer+0x24><== NOT EXECUTED
remaining = the_timer->initial -
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
}
}
if ( seconds )
484ae: 4a82 tstl %d2 <== NOT EXECUTED 484b0: 67aa beqs 4845c <alarm+0x30> <== NOT EXECUTED 484b2: 60b4 bras 48468 <alarm+0x3c> <== NOT EXECUTED
* boot. Since alarm() is dealing in seconds, we must account for
* this.
*/
remaining = the_timer->initial -
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
484b4: 2839 0006 4bf8 movel 64bf8 <_POSIX_signals_Alarm_timer+0x18>,%d4<== NOT EXECUTED 484ba: 98b9 0006 4bf4 subl 64bf4 <_POSIX_signals_Alarm_timer+0x14>,%d4<== NOT EXECUTED
* The stop_time and start_time fields are snapshots of ticks since
* boot. Since alarm() is dealing in seconds, we must account for
* this.
*/
remaining = the_timer->initial -
484c0: 2639 0006 4bec movel 64bec <_POSIX_signals_Alarm_timer+0xc>,%d3<== NOT EXECUTED
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
484c6: 4eb9 0004 af58 jsr 4af58 <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED 484cc: 4c40 4004 remul %d0,%d4,%d4 <== NOT EXECUTED
* The stop_time and start_time fields are snapshots of ticks since
* boot. Since alarm() is dealing in seconds, we must account for
* this.
*/
remaining = the_timer->initial -
484d0: 9684 subl %d4,%d3 <== NOT EXECUTED
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
}
}
if ( seconds )
484d2: 4a82 tstl %d2 <== NOT EXECUTED 484d4: 6786 beqs 4845c <alarm+0x30> <== NOT EXECUTED 484d6: 6090 bras 48468 <alarm+0x3c> <== NOT EXECUTED
000428f0 <calloc>:
void *calloc(
size_t nelem,
size_t elsize
)
{
428f0: 4e56 0000 linkw %fp,#0
register char *cptr;
size_t length;
MSBUMP(calloc_calls, 1);
length = nelem * elsize;
428f4: 41ee 0008 lea %fp@(8),%a0
)
{
register char *cptr;
size_t length;
MSBUMP(calloc_calls, 1);
428f8: 52b9 0005 fb60 addql #1,5fb60 <rtems_malloc_statistics+0x14>
void *calloc(
size_t nelem,
size_t elsize
)
{
428fe: 2f03 movel %d3,%sp@-
register char *cptr;
size_t length;
MSBUMP(calloc_calls, 1);
length = nelem * elsize;
42900: 262e 000c movel %fp@(12),%d3 42904: 4c10 3800 mulsl %a0@,%d3
void *calloc(
size_t nelem,
size_t elsize
)
{
42908: 2f02 movel %d2,%sp@-
size_t length;
MSBUMP(calloc_calls, 1);
length = nelem * elsize;
cptr = malloc( length );
4290a: 2f03 movel %d3,%sp@- 4290c: 4eb9 0004 302c jsr 4302c <malloc>
if ( cptr )
42912: 588f addql #4,%sp
size_t length;
MSBUMP(calloc_calls, 1);
length = nelem * elsize;
cptr = malloc( length );
42914: 2400 movel %d0,%d2
if ( cptr )
42916: 6710 beqs 42928 <calloc+0x38> <== NEVER TAKEN
memset( cptr, '\0', length );
42918: 2f03 movel %d3,%sp@- 4291a: 42a7 clrl %sp@- 4291c: 2f00 movel %d0,%sp@- 4291e: 4eb9 0004 f228 jsr 4f228 <memset> 42924: 4fef 000c lea %sp@(12),%sp
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
return cptr;
}
42928: 2002 movel %d2,%d0
length = nelem * elsize;
cptr = malloc( length );
if ( cptr )
memset( cptr, '\0', length );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
4292a: 53b9 0005 fb50 subql #1,5fb50 <rtems_malloc_statistics+0x4>
return cptr;
}
42930: 242e fff8 movel %fp@(-8),%d2 42934: 262e fffc movel %fp@(-4),%d3
42938: 4e5e unlk %fp <== NOT EXECUTED
00043fc8 <cfgetispeed>:
speed_t cfgetispeed(
const struct termios *tp
)
{
return (tp->c_cflag / (CIBAUD / CBAUD)) & CBAUD;
43fc8: 4280 clrl %d0 <== NOT EXECUTED
#include <termios.h>
speed_t cfgetispeed(
const struct termios *tp
)
{
43fca: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43fce: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return (tp->c_cflag / (CIBAUD / CBAUD)) & CBAUD; }
43fd2: 4e5e unlk %fp <== NOT EXECUTED
speed_t cfgetispeed(
const struct termios *tp
)
{
return (tp->c_cflag / (CIBAUD / CBAUD)) & CBAUD;
43fd4: 3028 0008 movew %a0@(8),%d0 <== NOT EXECUTED
}
43fd8: 0280 0000 100f andil #4111,%d0 <== NOT EXECUTED
00043fe0 <cfgetospeed>:
#include <termios.h>
speed_t cfgetospeed(
const struct termios *tp
)
{
43fe0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43fe4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return tp->c_cflag & CBAUD; }
43fe8: 4e5e unlk %fp <== NOT EXECUTED 43fea: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 43fee: 0280 0000 100f andil #4111,%d0 <== NOT EXECUTED
...
00043ff8 <cfsetispeed>:
int cfsetispeed(
struct termios *tp,
speed_t speed
)
{
43ff8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43ffc: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
if ( speed & ~CBAUD )
44000: 2001 movel %d1,%d0 <== NOT EXECUTED 44002: 0280 ffff eff0 andil #-4112,%d0 <== NOT EXECUTED
int cfsetispeed(
struct termios *tp,
speed_t speed
)
{
44008: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4400c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( speed & ~CBAUD )
4400e: 4a80 tstl %d0 <== NOT EXECUTED 44010: 661e bnes 44030 <cfsetispeed+0x38> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_cflag = (tp->c_cflag & ~CIBAUD) | (speed * (CIBAUD / CBAUD));
44012: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
return 0;
44016: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_cflag = (tp->c_cflag & ~CIBAUD) | (speed * (CIBAUD / CBAUD));
44018: 0282 eff0 ffff andil #-269418497,%d2 <== NOT EXECUTED 4401e: 4841 swap %d1 <== NOT EXECUTED 44020: 4241 clrw %d1 <== NOT EXECUTED 44022: 8282 orl %d2,%d1 <== NOT EXECUTED
return 0; }
44024: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 44028: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_cflag = (tp->c_cflag & ~CIBAUD) | (speed * (CIBAUD / CBAUD));
4402a: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
return 0; }
4402e: 4e75 rts <== NOT EXECUTED
struct termios *tp,
speed_t speed
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
44030: 4eb9 0005 0470 jsr 50470 <__errno> <== NOT EXECUTED
tp->c_cflag = (tp->c_cflag & ~CIBAUD) | (speed * (CIBAUD / CBAUD));
return 0;
}
44036: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
struct termios *tp,
speed_t speed
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
4403a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4403c: 7216 moveq #22,%d1 <== NOT EXECUTED 4403e: 70ff moveq #-1,%d0 <== NOT EXECUTED
tp->c_cflag = (tp->c_cflag & ~CIBAUD) | (speed * (CIBAUD / CBAUD));
return 0;
}
44040: 4e5e unlk %fp <== NOT EXECUTED
struct termios *tp,
speed_t speed
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
44042: 2081 movel %d1,%a0@ <== NOT EXECUTED
tp->c_cflag = (tp->c_cflag & ~CIBAUD) | (speed * (CIBAUD / CBAUD));
return 0;
}
...
00044048 <cfsetospeed>:
int cfsetospeed(
struct termios *tp,
speed_t speed
)
{
44048: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4404c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
if ( speed & ~CBAUD )
44050: 2001 movel %d1,%d0 <== NOT EXECUTED 44052: 0280 ffff eff0 andil #-4112,%d0 <== NOT EXECUTED
int cfsetospeed(
struct termios *tp,
speed_t speed
)
{
44058: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4405c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( speed & ~CBAUD )
4405e: 4a80 tstl %d0 <== NOT EXECUTED 44060: 661a bnes 4407c <cfsetospeed+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_cflag = (tp->c_cflag & ~CBAUD) | speed;
44062: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
return 0;
44066: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_cflag = (tp->c_cflag & ~CBAUD) | speed;
44068: 0282 ffff eff0 andil #-4112,%d2 <== NOT EXECUTED 4406e: 8282 orl %d2,%d1 <== NOT EXECUTED
return 0; }
44070: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 44074: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_cflag = (tp->c_cflag & ~CBAUD) | speed;
44076: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
return 0; }
4407a: 4e75 rts <== NOT EXECUTED
struct termios *tp,
speed_t speed
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
4407c: 4eb9 0005 0470 jsr 50470 <__errno> <== NOT EXECUTED
tp->c_cflag = (tp->c_cflag & ~CBAUD) | speed;
return 0;
}
44082: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
struct termios *tp,
speed_t speed
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
44086: 2040 moveal %d0,%a0 <== NOT EXECUTED 44088: 7216 moveq #22,%d1 <== NOT EXECUTED 4408a: 70ff moveq #-1,%d0 <== NOT EXECUTED
tp->c_cflag = (tp->c_cflag & ~CBAUD) | speed;
return 0;
}
4408c: 4e5e unlk %fp <== NOT EXECUTED
struct termios *tp,
speed_t speed
)
{
if ( speed & ~CBAUD )
rtems_set_errno_and_return_minus_one( EINVAL );
4408e: 2081 movel %d1,%a0@ <== NOT EXECUTED
tp->c_cflag = (tp->c_cflag & ~CBAUD) | speed;
return 0;
}
...
0004baf0 <chdir>:
#include <rtems/seterr.h>
int chdir(
const char *pathname
)
{
4baf0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4baf4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4baf6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4baf8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
4bafc: 6700 0086 beqw 4bb84 <chdir+0x94> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
/*
* Get the node where we wish to go.
*/
result = rtems_filesystem_evaluate_path(
4bb00: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bb02: 45ee ffec lea %fp@(-20),%a2 <== NOT EXECUTED 4bb06: 4eb9 0005 0620 jsr 50620 <strlen> <== NOT EXECUTED 4bb0c: 7201 moveq #1,%d1 <== NOT EXECUTED 4bb0e: 2e81 movel %d1,%sp@ <== NOT EXECUTED 4bb10: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bb12: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4bb16: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4bb18: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bb1a: 4eb9 0004 3150 jsr 43150 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
pathname, strlen( pathname ), RTEMS_LIBIO_PERMS_SEARCH, &loc, true );
if ( result != 0 )
4bb20: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4bb24: 4a80 tstl %d0 <== NOT EXECUTED 4bb26: 670e beqs 4bb36 <chdir+0x46> <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb28: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
* Get the node where we wish to go.
*/
result = rtems_filesystem_evaluate_path(
pathname, strlen( pathname ), RTEMS_LIBIO_PERMS_SEARCH, &loc, true );
if ( result != 0 )
return -1;
4bb2c: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb2e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4bb32: 4e5e unlk %fp <== NOT EXECUTED 4bb34: 4e75 rts <== NOT EXECUTED
return -1;
/*
* Verify you can change directory into this node.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
4bb36: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 4bb3a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bb3c: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4bb40: 4e90 jsr %a0@ <== NOT EXECUTED 4bb42: 588f addql #4,%sp <== NOT EXECUTED 4bb44: 7201 moveq #1,%d1 <== NOT EXECUTED 4bb46: b280 cmpl %d0,%d1 <== NOT EXECUTED 4bb48: 6654 bnes 4bb9e <chdir+0xae> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
4bb4a: 2039 0005 ef14 movel 5ef14 <rtems_current_user_env>,%d0 <== NOT EXECUTED 4bb50: 5880 addql #4,%d0 <== NOT EXECUTED 4bb52: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4bb54: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_filesystem_current = loc;
4bb5a: 2079 0005 ef14 moveal 5ef14 <rtems_current_user_env>,%a0 <== NOT EXECUTED 4bb60: 5888 addql #4,%a0 <== NOT EXECUTED
return 0;
4bb62: 588f addql #4,%sp <== NOT EXECUTED 4bb64: 4280 clrl %d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
4bb66: 20d2 movel %a2@,%a0@+ <== NOT EXECUTED 4bb68: 20ee fff0 movel %fp@(-16),%a0@+ <== NOT EXECUTED 4bb6c: 20ee fff4 movel %fp@(-12),%a0@+ <== NOT EXECUTED 4bb70: 20ee fff8 movel %fp@(-8),%a0@+ <== NOT EXECUTED
return 0;
}
4bb74: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
4bb78: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
return 0;
}
4bb7c: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4bb80: 4e5e unlk %fp <== NOT EXECUTED 4bb82: 4e75 rts <== NOT EXECUTED
{
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
rtems_set_errno_and_return_minus_one( EFAULT );
4bb84: 4eb9 0004 f27c jsr 4f27c <__errno> <== NOT EXECUTED 4bb8a: 740e moveq #14,%d2 <== NOT EXECUTED 4bb8c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bb8e: 70ff moveq #-1,%d0 <== NOT EXECUTED 4bb90: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb92: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED 4bb96: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4bb9a: 4e5e unlk %fp <== NOT EXECUTED 4bb9c: 4e75 rts <== NOT EXECUTED
/*
* Verify you can change directory into this node.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
4bb9e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bba0: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
4bba6: 4eb9 0004 f27c jsr 4f27c <__errno> <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bbac: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
/*
* Verify you can change directory into this node.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( ENOTDIR );
4bbb0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bbb2: 7214 moveq #20,%d1 <== NOT EXECUTED 4bbb4: 588f addql #4,%sp <== NOT EXECUTED 4bbb6: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bbb8: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4bbbc: 4e5e unlk %fp <== NOT EXECUTED
/*
* Verify you can change directory into this node.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( ENOTDIR );
4bbbe: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
...
000445b8 <chmod>:
int chmod(
const char *path,
mode_t mode
)
{
445b8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 445bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
int status;
rtems_filesystem_location_info_t loc;
int result;
status = rtems_filesystem_evaluate_path( path, strlen( path ), 0, &loc, true );
445be: 260e movel %fp,%d3 <== NOT EXECUTED 445c0: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
int chmod(
const char *path,
mode_t mode
)
{
445c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 445c8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int status;
rtems_filesystem_location_info_t loc;
int result;
status = rtems_filesystem_evaluate_path( path, strlen( path ), 0, &loc, true );
445cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 445ce: 4eb9 0005 2cc8 jsr 52cc8 <strlen> <== NOT EXECUTED 445d4: 7201 moveq #1,%d1 <== NOT EXECUTED 445d6: 2e81 movel %d1,%sp@ <== NOT EXECUTED 445d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 445da: 42a7 clrl %sp@- <== NOT EXECUTED 445dc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 445de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 445e0: 4eb9 0004 4998 jsr 44998 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
if ( status != 0 )
445e6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 445ea: 4a80 tstl %d0 <== NOT EXECUTED 445ec: 670e beqs 445fc <chmod+0x44> <== NOT EXECUTED
result = (*loc.handlers->fchmod_h)( &loc, mode );
rtems_filesystem_freenode( &loc );
return result;
}
445ee: 242e ffe0 movel %fp@(-32),%d2 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
status = rtems_filesystem_evaluate_path( path, strlen( path ), 0, &loc, true );
if ( status != 0 )
return -1;
445f2: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.handlers->fchmod_h)( &loc, mode );
rtems_filesystem_freenode( &loc );
return result;
}
445f4: 262e ffe4 movel %fp@(-28),%d3 <== NOT EXECUTED 445f8: 4e5e unlk %fp <== NOT EXECUTED 445fa: 4e75 rts <== NOT EXECUTED
status = rtems_filesystem_evaluate_path( path, strlen( path ), 0, &loc, true );
if ( status != 0 )
return -1;
result = (*loc.handlers->fchmod_h)( &loc, mode );
445fc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 44600: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED 44604: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44606: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED 4460a: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4460c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4460e: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 44612: 4eb9 0004 4a7c jsr 44a7c <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
44618: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED 4461c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
44620: 242e ffe0 movel %fp@(-32),%d2 <== NOT EXECUTED 44624: 262e ffe4 movel %fp@(-28),%d3 <== NOT EXECUTED 44628: 4e5e unlk %fp <== NOT EXECUTED
000446a8 <chown>:
const char *path,
uid_t owner,
gid_t group
)
{
return _chown_helper( path, owner, group, true );
446a8: 4281 clrl %d1 <== NOT EXECUTED 446aa: 4280 clrl %d0 <== NOT EXECUTED
int chown(
const char *path,
uid_t owner,
gid_t group
)
{
446ac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _chown_helper( path, owner, group, true );
446b0: 322e 0012 movew %fp@(18),%d1 <== NOT EXECUTED 446b4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 446b8: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED 446bc: 2f01 movel %d1,%sp@- <== NOT EXECUTED 446be: 2f00 movel %d0,%sp@- <== NOT EXECUTED 446c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 446c4: 4eb9 0004 462c jsr 4462c <_chown_helper> <== NOT EXECUTED
}
446ca: 4e5e unlk %fp <== NOT EXECUTED
...
00042d20 <chroot>:
#include <rtems/seterr.h>
int chroot(
const char *pathname
)
{
42d20: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
int result;
rtems_filesystem_location_info_t loc;
/* an automatic call to new private env the first time */
if (rtems_current_user_env == &rtems_global_user_env) {
42d24: 203c 0006 0554 movel #394580,%d0 <== NOT EXECUTED
#include <rtems/seterr.h>
int chroot(
const char *pathname
)
{
42d2a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 42d2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
int result;
rtems_filesystem_location_info_t loc;
/* an automatic call to new private env the first time */
if (rtems_current_user_env == &rtems_global_user_env) {
42d2e: b0b9 0005 ef14 cmpl 5ef14 <rtems_current_user_env>,%d0 <== NOT EXECUTED 42d34: 6778 beqs 42dae <chroot+0x8e> <== NOT EXECUTED
rtems_libio_set_private_env(); /* try to set a new private env*/
if (rtems_current_user_env == &rtems_global_user_env) /* not ok */
rtems_set_errno_and_return_minus_one( ENOTSUP );
}
result = chdir(pathname);
42d36: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 42d3a: 4eb9 0004 baf0 jsr 4baf0 <chdir> <== NOT EXECUTED
if (result) {
42d40: 588f addql #4,%sp <== NOT EXECUTED 42d42: 4a80 tstl %d0 <== NOT EXECUTED 42d44: 6600 009a bnew 42de0 <chroot+0xc0> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( errno );
}
/* clone the new root location */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
42d48: 42a7 clrl %sp@- <== NOT EXECUTED 42d4a: 45ee ffec lea %fp@(-20),%a2 <== NOT EXECUTED 42d4e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42d50: 42a7 clrl %sp@- <== NOT EXECUTED 42d52: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 42d56: 4879 0005 e0e6 pea 5e0e6 <dotdotname+0x4> <== NOT EXECUTED 42d5c: 4eb9 0004 3150 jsr 43150 <rtems_filesystem_evaluate_path> <== NOT EXECUTED 42d62: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 42d66: 4a80 tstl %d0 <== NOT EXECUTED 42d68: 6676 bnes 42de0 <chroot+0xc0> <== NOT EXECUTED
/* our cwd has changed, though - but there is no easy way of return :-( */
rtems_set_errno_and_return_minus_one( errno );
}
rtems_filesystem_freenode(&rtems_filesystem_root);
42d6a: 2079 0005 ef14 moveal 5ef14 <rtems_current_user_env>,%a0 <== NOT EXECUTED 42d70: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED 42d74: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42d76: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_filesystem_root = loc;
42d7c: 2079 0005 ef14 moveal 5ef14 <rtems_current_user_env>,%a0 <== NOT EXECUTED
return 0;
42d82: 588f addql #4,%sp <== NOT EXECUTED 42d84: 4280 clrl %d0 <== NOT EXECUTED
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
/* our cwd has changed, though - but there is no easy way of return :-( */
rtems_set_errno_and_return_minus_one( errno );
}
rtems_filesystem_freenode(&rtems_filesystem_root);
rtems_filesystem_root = loc;
42d86: 2152 0018 movel %a2@,%a0@(24) <== NOT EXECUTED 42d8a: 216e fff0 001c movel %fp@(-16),%a0@(28) <== NOT EXECUTED 42d90: 216e fff4 0020 movel %fp@(-12),%a0@(32) <== NOT EXECUTED 42d96: 216e fff8 0024 movel %fp@(-8),%a0@(36) <== NOT EXECUTED 42d9c: 216e fffc 0028 movel %fp@(-4),%a0@(40) <== NOT EXECUTED
return 0;
}
42da2: 246e ffe4 moveal %fp@(-28),%a2 <== NOT EXECUTED 42da6: 266e ffe8 moveal %fp@(-24),%a3 <== NOT EXECUTED 42daa: 4e5e unlk %fp <== NOT EXECUTED 42dac: 4e75 rts <== NOT EXECUTED
int result;
rtems_filesystem_location_info_t loc;
/* an automatic call to new private env the first time */
if (rtems_current_user_env == &rtems_global_user_env) {
rtems_libio_set_private_env(); /* try to set a new private env*/
42dae: 4eb9 0004 4440 jsr 44440 <rtems_libio_set_private_env> <== NOT EXECUTED
if (rtems_current_user_env == &rtems_global_user_env) /* not ok */
42db4: 41f9 0006 0554 lea 60554 <rtems_global_user_env>,%a0 <== NOT EXECUTED 42dba: b1f9 0005 ef14 cmpal 5ef14 <rtems_current_user_env>,%a0 <== NOT EXECUTED 42dc0: 6600 ff74 bnew 42d36 <chroot+0x16> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTSUP );
42dc4: 4eb9 0004 f27c jsr 4f27c <__errno> <== NOT EXECUTED
}
rtems_filesystem_freenode(&rtems_filesystem_root);
rtems_filesystem_root = loc;
return 0;
}
42dca: 246e ffe4 moveal %fp@(-28),%a2 <== NOT EXECUTED
/* an automatic call to new private env the first time */
if (rtems_current_user_env == &rtems_global_user_env) {
rtems_libio_set_private_env(); /* try to set a new private env*/
if (rtems_current_user_env == &rtems_global_user_env) /* not ok */
rtems_set_errno_and_return_minus_one( ENOTSUP );
42dce: 2040 moveal %d0,%a0 <== NOT EXECUTED 42dd0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
rtems_filesystem_freenode(&rtems_filesystem_root);
rtems_filesystem_root = loc;
return 0;
}
42dd2: 266e ffe8 moveal %fp@(-24),%a3 <== NOT EXECUTED 42dd6: 4e5e unlk %fp <== NOT EXECUTED
/* an automatic call to new private env the first time */
if (rtems_current_user_env == &rtems_global_user_env) {
rtems_libio_set_private_env(); /* try to set a new private env*/
if (rtems_current_user_env == &rtems_global_user_env) /* not ok */
rtems_set_errno_and_return_minus_one( ENOTSUP );
42dd8: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
}
rtems_filesystem_freenode(&rtems_filesystem_root);
rtems_filesystem_root = loc;
return 0;
}
42dde: 4e75 rts <== NOT EXECUTED
}
/* clone the new root location */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
/* our cwd has changed, though - but there is no easy way of return :-( */
rtems_set_errno_and_return_minus_one( errno );
42de0: 45f9 0004 f27c lea 4f27c <__errno>,%a2 <== NOT EXECUTED 42de6: 4e92 jsr %a2@ <== NOT EXECUTED 42de8: 2640 moveal %d0,%a3 <== NOT EXECUTED 42dea: 4e92 jsr %a2@ <== NOT EXECUTED
}
rtems_filesystem_freenode(&rtems_filesystem_root);
rtems_filesystem_root = loc;
return 0;
}
42dec: 246e ffe4 moveal %fp@(-28),%a2 <== NOT EXECUTED
}
/* clone the new root location */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
/* our cwd has changed, though - but there is no easy way of return :-( */
rtems_set_errno_and_return_minus_one( errno );
42df0: 2040 moveal %d0,%a0 <== NOT EXECUTED 42df2: 70ff moveq #-1,%d0 <== NOT EXECUTED 42df4: 2690 movel %a0@,%a3@ <== NOT EXECUTED
}
rtems_filesystem_freenode(&rtems_filesystem_root);
rtems_filesystem_root = loc;
return 0;
}
42df6: 266e ffe8 moveal %fp@(-24),%a3 <== NOT EXECUTED 42dfa: 4e5e unlk %fp <== NOT EXECUTED
...
000461ac <clock_getcpuclockid>:
int clock_getcpuclockid(
pid_t pid,
clockid_t *clock_id
)
{
461ac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
461b0: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 461b6: 7258 moveq #88,%d1 <== NOT EXECUTED 461b8: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
461ba: 70ff moveq #-1,%d0 <== NOT EXECUTED 461bc: 4e5e unlk %fp <== NOT EXECUTED
int clock_getcpuclockid(
pid_t pid,
clockid_t *clock_id
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
461be: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000461c4 <clock_getenable_attr>:
int clock_getenable_attr(
clockid_t clock_id,
int *attr
)
{
461c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
461c8: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 461ce: 7258 moveq #88,%d1 <== NOT EXECUTED 461d0: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
461d2: 70ff moveq #-1,%d0 <== NOT EXECUTED 461d4: 4e5e unlk %fp <== NOT EXECUTED
int clock_getenable_attr(
clockid_t clock_id,
int *attr
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
461d6: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000467d0 <clock_getres>:
int clock_getres(
clockid_t clock_id,
struct timespec *res
)
{
467d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 467d4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 467d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 467da: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !res )
467dc: 4a88 tstl %a0 <== NOT EXECUTED 467de: 670c beqs 467ec <clock_getres+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
switch ( clock_id ) {
467e0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 467e4: 7202 moveq #2,%d1 <== NOT EXECUTED 467e6: 5380 subql #1,%d0 <== NOT EXECUTED 467e8: b280 cmpl %d0,%d1 <== NOT EXECUTED 467ea: 641a bccs 46806 <clock_getres+0x36> <== NOT EXECUTED
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
}
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
467ec: 4eb9 0004 f7b0 jsr 4f7b0 <__errno> <== NOT EXECUTED
}
return 0;
}
467f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
}
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
467f6: 2040 moveal %d0,%a0 <== NOT EXECUTED 467f8: 7216 moveq #22,%d1 <== NOT EXECUTED 467fa: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return 0;
}
467fc: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 46800: 4e5e unlk %fp <== NOT EXECUTED
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
}
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
46802: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return 0;
}
46804: 4e75 rts <== NOT EXECUTED
case CLOCK_REALTIME:
case CLOCK_PROCESS_CPUTIME:
case CLOCK_THREAD_CPUTIME:
if ( res ) {
res->tv_sec = rtems_configuration_get_microseconds_per_tick() /
46806: 2239 0006 04e0 movel 604e0 <Configuration+0xc>,%d1 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND;
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
4680c: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 46812: 4c01 2800 mulsl %d1,%d2 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return 0;
46816: 4280 clrl %d0 <== NOT EXECUTED
case CLOCK_REALTIME:
case CLOCK_PROCESS_CPUTIME:
case CLOCK_THREAD_CPUTIME:
if ( res ) {
res->tv_sec = rtems_configuration_get_microseconds_per_tick() /
46818: 263c 000f 4240 movel #1000000,%d3 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND;
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
4681e: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
case CLOCK_REALTIME:
case CLOCK_PROCESS_CPUTIME:
case CLOCK_THREAD_CPUTIME:
if ( res ) {
res->tv_sec = rtems_configuration_get_microseconds_per_tick() /
46822: 4c43 1001 remul %d3,%d1,%d1 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return 0;
}
46826: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4682a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4682e: 4e5e unlk %fp <== NOT EXECUTED
case CLOCK_REALTIME:
case CLOCK_PROCESS_CPUTIME:
case CLOCK_THREAD_CPUTIME:
if ( res ) {
res->tv_sec = rtems_configuration_get_microseconds_per_tick() /
46830: 2081 movel %d1,%a0@ <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return 0;
}
0004638c <clock_gettime>:
int clock_gettime(
clockid_t clock_id,
struct timespec *tp
)
{
4638c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46390: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46394: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 46398: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !tp )
4639a: 4a81 tstl %d1 <== NOT EXECUTED 4639c: 6718 beqs 463b6 <clock_gettime+0x2a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
4639e: 7401 moveq #1,%d2 <== NOT EXECUTED 463a0: b480 cmpl %d0,%d2 <== NOT EXECUTED 463a2: 6752 beqs 463f6 <clock_gettime+0x6a> <== NOT EXECUTED
_TOD_Get(tp);
return 0;
}
#ifdef CLOCK_MONOTONIC
if ( clock_id == CLOCK_MONOTONIC ) {
463a4: 7404 moveq #4,%d2 <== NOT EXECUTED 463a6: b480 cmpl %d0,%d2 <== NOT EXECUTED 463a8: 6738 beqs 463e2 <clock_gettime+0x56> <== NOT EXECUTED
return 0;
}
#endif
#ifdef _POSIX_CPUTIME
if ( clock_id == CLOCK_PROCESS_CPUTIME ) {
463aa: 7402 moveq #2,%d2 <== NOT EXECUTED 463ac: b480 cmpl %d0,%d2 <== NOT EXECUTED 463ae: 6732 beqs 463e2 <clock_gettime+0x56> <== NOT EXECUTED
return 0;
}
#endif
#ifdef _POSIX_THREAD_CPUTIME
if ( clock_id == CLOCK_THREAD_CPUTIME )
463b0: 7203 moveq #3,%d1 <== NOT EXECUTED 463b2: b280 cmpl %d0,%d1 <== NOT EXECUTED 463b4: 6716 beqs 463cc <clock_gettime+0x40> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
463b6: 4eb9 0004 fb80 jsr 4fb80 <__errno> <== NOT EXECUTED
return 0;
}
463bc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
#ifdef _POSIX_THREAD_CPUTIME
if ( clock_id == CLOCK_THREAD_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
463c0: 2040 moveal %d0,%a0 <== NOT EXECUTED 463c2: 7216 moveq #22,%d1 <== NOT EXECUTED 463c4: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
463c6: 4e5e unlk %fp <== NOT EXECUTED
#ifdef _POSIX_THREAD_CPUTIME
if ( clock_id == CLOCK_THREAD_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
463c8: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
463ca: 4e75 rts <== NOT EXECUTED
}
#endif
#ifdef _POSIX_THREAD_CPUTIME
if ( clock_id == CLOCK_THREAD_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
463cc: 4eb9 0004 fb80 jsr 4fb80 <__errno> <== NOT EXECUTED 463d2: 7458 moveq #88,%d2 <== NOT EXECUTED 463d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 463d6: 70ff moveq #-1,%d0 <== NOT EXECUTED 463d8: 2082 movel %d2,%a0@ <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463da: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 463de: 4e5e unlk %fp <== NOT EXECUTED 463e0: 4e75 rts <== NOT EXECUTED
}
#endif
#ifdef _POSIX_CPUTIME
if ( clock_id == CLOCK_PROCESS_CPUTIME ) {
_TOD_Get_uptime_as_timespec( tp );
463e2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 463e4: 4eb9 0004 8518 jsr 48518 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463ea: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
#endif
#ifdef _POSIX_CPUTIME
if ( clock_id == CLOCK_PROCESS_CPUTIME ) {
_TOD_Get_uptime_as_timespec( tp );
return 0;
463ee: 588f addql #4,%sp <== NOT EXECUTED 463f0: 4280 clrl %d0 <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463f2: 4e5e unlk %fp <== NOT EXECUTED 463f4: 4e75 rts <== NOT EXECUTED
{
if ( !tp )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
_TOD_Get(tp);
463f6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 463f8: 4eb9 0004 847c jsr 4847c <_TOD_Get> <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463fe: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
if ( !tp )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
_TOD_Get(tp);
return 0;
46402: 588f addql #4,%sp <== NOT EXECUTED 46404: 4280 clrl %d0 <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
46406: 4e5e unlk %fp <== NOT EXECUTED
...
000461dc <clock_setenable_attr>:
int clock_setenable_attr(
clockid_t clock_id,
int attr
)
{
461dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
461e0: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 461e6: 7258 moveq #88,%d1 <== NOT EXECUTED 461e8: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
461ea: 70ff moveq #-1,%d0 <== NOT EXECUTED 461ec: 4e5e unlk %fp <== NOT EXECUTED
int clock_setenable_attr(
clockid_t clock_id,
int attr
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
461ee: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
0004640c <clock_settime>:
int clock_settime(
clockid_t clock_id,
const struct timespec *tp
)
{
4640c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46410: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46414: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( !tp )
46418: 4a88 tstl %a0 <== NOT EXECUTED 4641a: 6712 beqs 4642e <clock_settime+0x22> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
4641c: 7201 moveq #1,%d1 <== NOT EXECUTED 4641e: b280 cmpl %d0,%d1 <== NOT EXECUTED 46420: 6730 beqs 46452 <clock_settime+0x46> <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( tp );
_Thread_Enable_dispatch();
}
#ifdef _POSIX_CPUTIME
else if ( clock_id == CLOCK_PROCESS_CPUTIME )
46422: 7202 moveq #2,%d1 <== NOT EXECUTED 46424: b280 cmpl %d0,%d1 <== NOT EXECUTED 46426: 6718 beqs 46440 <clock_settime+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
#ifdef _POSIX_THREAD_CPUTIME
else if ( clock_id == CLOCK_THREAD_CPUTIME )
46428: 7203 moveq #3,%d1 <== NOT EXECUTED 4642a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4642c: 6712 beqs 46440 <clock_settime+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
4642e: 4eb9 0004 fb80 jsr 4fb80 <__errno> <== NOT EXECUTED 46434: 7216 moveq #22,%d1 <== NOT EXECUTED 46436: 2040 moveal %d0,%a0 <== NOT EXECUTED 46438: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
4643a: 4e5e unlk %fp <== NOT EXECUTED
#ifdef _POSIX_THREAD_CPUTIME
else if ( clock_id == CLOCK_THREAD_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
4643c: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
4643e: 4e75 rts <== NOT EXECUTED
else if ( clock_id == CLOCK_PROCESS_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
#ifdef _POSIX_THREAD_CPUTIME
else if ( clock_id == CLOCK_THREAD_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
46440: 4eb9 0004 fb80 jsr 4fb80 <__errno> <== NOT EXECUTED 46446: 7258 moveq #88,%d1 <== NOT EXECUTED 46448: 2040 moveal %d0,%a0 <== NOT EXECUTED 4644a: 70ff moveq #-1,%d0 <== NOT EXECUTED
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
4644c: 4e5e unlk %fp <== NOT EXECUTED
else if ( clock_id == CLOCK_PROCESS_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
#ifdef _POSIX_THREAD_CPUTIME
else if ( clock_id == CLOCK_THREAD_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
4644e: 2081 movel %d1,%a0@ <== NOT EXECUTED
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
46450: 4e75 rts <== NOT EXECUTED
{
if ( !tp )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 )
46452: 203c 21da e4ff movel #567993599,%d0 <== NOT EXECUTED 46458: b090 cmpl %a0@,%d0 <== NOT EXECUTED 4645a: 64d2 bccs 4642e <clock_settime+0x22> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4645c: 2039 0006 1ccc movel 61ccc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46462: 5280 addql #1,%d0 <== NOT EXECUTED 46464: 23c0 0006 1ccc movel %d0,61ccc <_Thread_Dispatch_disable_level><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
_Thread_Disable_dispatch();
_TOD_Set( tp );
4646a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4646c: 4eb9 0004 8570 jsr 48570 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
46472: 4eb9 0004 9846 jsr 49846 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
46478: 588f addql #4,%sp <== NOT EXECUTED 4647a: 4280 clrl %d0 <== NOT EXECUTED
}
4647c: 4e5e unlk %fp <== NOT EXECUTED
0004af04 <close>:
#include <rtems/libio_.h>
int close(
int fd
)
{
4af04: 4e56 fffc linkw %fp,#-4 4af08: 202e 0008 movel %fp@(8),%d0 4af0c: 2f0a movel %a2,%sp@-
rtems_libio_t *iop;
rtems_status_code rc;
rtems_libio_check_fd(fd);
4af0e: b0b9 0005 e334 cmpl 5e334 <rtems_libio_number_iops>,%d0
4af14: 644e bccs 4af64 <close+0x60> <== NEVER TAKEN
iop = rtems_libio_iop(fd);
4af16: 2200 movel %d0,%d1 4af18: ed88 lsll #6,%d0 4af1a: e789 lsll #3,%d1 4af1c: 2479 0005 fb34 moveal 5fb34 <rtems_libio_iops>,%a2 4af22: 9081 subl %d1,%d0 4af24: d5c0 addal %d0,%a2
rtems_libio_check_is_open(iop);
4af26: 202a 0014 movel %a2@(20),%d0 4af2a: 0280 0000 0100 andil #256,%d0
4af30: 6732 beqs 4af64 <close+0x60> <== NEVER TAKEN
rc = RTEMS_SUCCESSFUL;
rc = (*iop->pathinfo.handlers->close_h)( iop );
4af32: 206a 0020 moveal %a2@(32),%a0 4af36: 2f0a movel %a2,%sp@- 4af38: 2068 0004 moveal %a0@(4),%a0 4af3c: 4e90 jsr %a0@
rtems_filesystem_freenode( &iop->pathinfo );
4af3e: 486a 0018 pea %a2@(24) 4af42: 2d40 fffc movel %d0,%fp@(-4) 4af46: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode>
rtems_libio_free( iop );
4af4c: 2f0a movel %a2,%sp@- 4af4e: 4eb9 0004 b1d2 jsr 4b1d2 <rtems_libio_free>
return rc;
4af54: 202e fffc movel %fp@(-4),%d0 4af58: 4fef 000c lea %sp@(12),%sp
}
4af5c: 246e fff8 moveal %fp@(-8),%a2 4af60: 4e5e unlk %fp 4af62: 4e75 rts
rtems_libio_t *iop;
rtems_status_code rc;
rtems_libio_check_fd(fd);
iop = rtems_libio_iop(fd);
rtems_libio_check_is_open(iop);
4af64: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
4af6a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_status_code rc;
rtems_libio_check_fd(fd);
iop = rtems_libio_iop(fd);
rtems_libio_check_is_open(iop);
4af6e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4af70: 7209 moveq #9,%d1 <== NOT EXECUTED 4af72: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
4af74: 4e5e unlk %fp <== NOT EXECUTED
rtems_libio_t *iop;
rtems_status_code rc;
rtems_libio_check_fd(fd);
iop = rtems_libio_iop(fd);
rtems_libio_check_is_open(iop);
4af76: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
00042c1c <ctermid>:
static char *ctermid_name = "/dev/console";
char *ctermid(
char *s
)
{
42c1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42c20: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !s )
42c24: 671a beqs 42c40 <ctermid+0x24> <== NOT EXECUTED
/* * We have no way of knowing the length of the user provided buffer. * It may not be large enough but there is no way to know that. :( * So this is a potential buffer owerrun that we can do nothing about. */ strcpy( s, ctermid_name );
42c26: 2040 moveal %d0,%a0 <== NOT EXECUTED 42c28: 20fc 2f64 6576 movel #795108726,%a0@+ <== NOT EXECUTED 42c2e: 20fc 2f63 6f6e movel #795045742,%a0@+ <== NOT EXECUTED 42c34: 20fc 736f 6c65 movel #1936682085,%a0@+ <== NOT EXECUTED 42c3a: 4210 clrb %a0@ <== NOT EXECUTED
return s; }
42c3c: 4e5e unlk %fp <== NOT EXECUTED 42c3e: 4e75 rts <== NOT EXECUTED 42c40: 4e5e unlk %fp <== NOT EXECUTED
char *ctermid(
char *s
)
{
if ( !s )
return ctermid_name;
42c42: 203c 0005 aa34 movel #371252,%d0 <== NOT EXECUTED
* It may not be large enough but there is no way to know that. :(
* So this is a potential buffer owerrun that we can do nothing about.
*/
strcpy( s, ctermid_name );
return s;
}
...
000423e8 <devFS_Show>:
#include <rtems/seterr.h>
#include "devfs.h"
int devFS_Show(void)
{
423e8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
int i;
rtems_filesystem_location_info_t *temp_loc;
rtems_device_name_t *device_name_table;
temp_loc = &rtems_filesystem_root;
423ec: 2079 0005 b91c moveal 5b91c <rtems_current_user_env>,%a0 <== NOT EXECUTED
#include <rtems/seterr.h>
#include "devfs.h"
int devFS_Show(void)
{
423f2: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
int i;
rtems_filesystem_location_info_t *temp_loc;
rtems_device_name_t *device_name_table;
temp_loc = &rtems_filesystem_root;
device_name_table = (rtems_device_name_t *)temp_loc->node_access;
423f6: 2628 0018 movel %a0@(24),%d3 <== NOT EXECUTED
if (!device_name_table)
423fa: 6752 beqs 4244e <devFS_Show+0x66> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++){
423fc: 4ab9 0005 b688 tstl 5b688 <rtems_device_table_size> <== NOT EXECUTED 42402: 673e beqs 42442 <devFS_Show+0x5a> <== NOT EXECUTED 42404: 4280 clrl %d0 <== NOT EXECUTED 42406: 4282 clrl %d2 <== NOT EXECUTED
if (device_name_table[i].device_name){
printk("/%s %d %d\n", device_name_table[i].device_name,
42408: 45f9 0004 3794 lea 43794 <printk>,%a2 <== NOT EXECUTED
device_name_table = (rtems_device_name_t *)temp_loc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++){
if (device_name_table[i].device_name){
4240e: 2200 movel %d0,%d1 <== NOT EXECUTED
temp_loc = &rtems_filesystem_root;
device_name_table = (rtems_device_name_t *)temp_loc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++){
42410: 5282 addql #1,%d2 <== NOT EXECUTED
if (device_name_table[i].device_name){
42412: e989 lsll #4,%d1 <== NOT EXECUTED 42414: 2241 moveal %d1,%a1 <== NOT EXECUTED 42416: 41f1 0c00 lea %a1@(00000000,%d0:l:4),%a0 <== NOT EXECUTED 4241a: 41f0 3800 lea %a0@(00000000,%d3:l),%a0 <== NOT EXECUTED 4241e: 2010 movel %a0@,%d0 <== NOT EXECUTED 42420: 6716 beqs 42438 <devFS_Show+0x50> <== NOT EXECUTED
printk("/%s %d %d\n", device_name_table[i].device_name,
42422: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42426: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4242a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4242c: 4879 0005 a38e pea 5a38e <IntUartPollCallbacks.6307+0x20> <== NOT EXECUTED 42432: 4e92 jsr %a2@ <== NOT EXECUTED 42434: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
temp_loc = &rtems_filesystem_root;
device_name_table = (rtems_device_name_t *)temp_loc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++){
42438: 2002 movel %d2,%d0 <== NOT EXECUTED 4243a: b4b9 0005 b688 cmpl 5b688 <rtems_device_table_size>,%d2 <== NOT EXECUTED 42440: 65cc bcss 4240e <devFS_Show+0x26> <== NOT EXECUTED
if (device_name_table[i].device_name){
printk("/%s %d %d\n", device_name_table[i].device_name,
device_name_table[i].major, device_name_table[i].minor);
}
}
return 0;
42442: 4280 clrl %d0 <== NOT EXECUTED
}
42444: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4244a: 4e5e unlk %fp <== NOT EXECUTED 4244c: 4e75 rts <== NOT EXECUTED
rtems_device_name_t *device_name_table;
temp_loc = &rtems_filesystem_root;
device_name_table = (rtems_device_name_t *)temp_loc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
4244e: 4eb9 0004 c718 jsr 4c718 <__errno> <== NOT EXECUTED 42454: 720e moveq #14,%d1 <== NOT EXECUTED 42456: 2040 moveal %d0,%a0 <== NOT EXECUTED 42458: 70ff moveq #-1,%d0 <== NOT EXECUTED
printk("/%s %d %d\n", device_name_table[i].device_name,
device_name_table[i].major, device_name_table[i].minor);
}
}
return 0;
}
4245a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
rtems_device_name_t *device_name_table;
temp_loc = &rtems_filesystem_root;
device_name_table = (rtems_device_name_t *)temp_loc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
42460: 2081 movel %d1,%a0@ <== NOT EXECUTED
printk("/%s %d %d\n", device_name_table[i].device_name,
device_name_table[i].major, device_name_table[i].minor);
}
}
return 0;
}
42462: 4e5e unlk %fp <== NOT EXECUTED
...
00049a48 <devFS_close>:
#include "devfs.h"
int devFS_close(
rtems_libio_t *iop
)
{
49a48: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 49a4c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
49a50: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
{
rtems_libio_open_close_args_t args;
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
49a54: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
49a58: 2f29 000c movel %a1@(12),%sp@- <== NOT EXECUTED 49a5c: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
49a60: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
args.flags = 0;
49a64: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
args.mode = 0;
49a68: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
status = rtems_io_close(
49a6c: 4eb9 0004 b3b0 jsr 4b3b0 <rtems_io_close> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
return rtems_deviceio_errno(status);
49a72: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49a74: 4eb9 0004 9b70 jsr 49b70 <rtems_deviceio_errno> <== NOT EXECUTED
}
49a7a: 4e5e unlk %fp <== NOT EXECUTED
...
00049a80 <devFS_evaluate_path>:
{
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
49a80: 70f8 moveq #-8,%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
49a82: 4e56 ffdc linkw %fp,#-36
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
49a86: c0ae 0010 andl %fp@(16),%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
49a8a: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ 49a8e: 2c2e 0008 movel %fp@(8),%d6 49a92: 262e 000c movel %fp@(12),%d3 49a96: 286e 0014 moveal %fp@(20),%a4
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
49a9a: 4a80 tstl %d0 49a9c: 6600 0090 bnew 49b2e <devFS_evaluate_path+0xae>
rtems_set_errno_and_return_minus_one( EPERM );
/* get the device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
49aa0: 2814 movel %a4@,%d4
if (!device_name_table)
49aa2: 6700 00a2 beqw 49b46 <devFS_evaluate_path+0xc6>
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++) {
49aa6: 2a39 0005 b688 movel 5b688 <rtems_device_table_size>,%d5
49aac: 673c beqs 49aea <devFS_evaluate_path+0x6a> <== NEVER TAKEN
49aae: 4280 clrl %d0 49ab0: 4282 clrl %d2
if (!device_name_table[i].device_name)
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
49ab2: 4bf9 0004 da58 lea 4da58 <strncmp>,%a5
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++) {
if (!device_name_table[i].device_name)
49ab8: 2200 movel %d0,%d1
/* get the device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++) {
49aba: 5282 addql #1,%d2
if (!device_name_table[i].device_name)
49abc: e989 lsll #4,%d1 49abe: 2041 moveal %d1,%a0 49ac0: 47f0 0c00 lea %a0@(00000000,%d0:l:4),%a3 49ac4: 47f3 4800 lea %a3@(00000000,%d4:l),%a3 49ac8: 2453 moveal %a3@,%a2 49aca: 4a8a tstl %a2
49acc: 6716 beqs 49ae4 <devFS_evaluate_path+0x64>
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
49ace: 2f03 movel %d3,%sp@- 49ad0: 2f0a movel %a2,%sp@- 49ad2: 2f06 movel %d6,%sp@- 49ad4: 4e95 jsr %a5@ 49ad6: 4fef 000c lea %sp@(12),%sp 49ada: 4a80 tstl %d0
49adc: 6606 bnes 49ae4 <devFS_evaluate_path+0x64>
continue;
if (device_name_table[i].device_name[pathnamelen] != '\0')
49ade: 4a32 3800 tstb %a2@(00000000,%d3:l)
49ae2: 671e beqs 49b02 <devFS_evaluate_path+0x82> <== ALWAYS TAKEN
/* get the device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++) {
49ae4: 2002 movel %d2,%d0 49ae6: b485 cmpl %d5,%d2
49ae8: 65ce bcss 49ab8 <devFS_evaluate_path+0x38>
pathloc->mt_entry = rtems_filesystem_root.mt_entry;
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
49aea: 4eb9 0004 c718 jsr 4c718 <__errno> 49af0: 7202 moveq #2,%d1 49af2: 2040 moveal %d0,%a0 49af4: 70ff moveq #-1,%d0
}
49af6: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
pathloc->mt_entry = rtems_filesystem_root.mt_entry;
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
49afc: 2081 movel %d1,%a0@
}
49afe: 4e5e unlk %fp 49b00: 4e75 rts
/* find the device, set proper values */
pathloc->node_access = (void *)&device_name_table[i];
pathloc->handlers = &devFS_file_handlers;
pathloc->ops = &devFS_ops;
pathloc->mt_entry = rtems_filesystem_root.mt_entry;
49b02: 2079 0005 b91c moveal 5b91c <rtems_current_user_env>,%a0 49b08: 2968 0028 0010 movel %a0@(40),%a4@(16)
if (device_name_table[i].device_name[pathnamelen] != '\0')
continue;
/* find the device, set proper values */
pathloc->node_access = (void *)&device_name_table[i];
pathloc->handlers = &devFS_file_handlers;
49b0e: 223c 0005 b7c8 movel #374728,%d1
pathloc->ops = &devFS_ops;
49b14: 41f9 0005 b780 lea 5b780 <devFS_ops>,%a0
if (device_name_table[i].device_name[pathnamelen] != '\0')
continue;
/* find the device, set proper values */
pathloc->node_access = (void *)&device_name_table[i];
pathloc->handlers = &devFS_file_handlers;
49b1a: 2941 0008 movel %d1,%a4@(8)
pathloc->ops = &devFS_ops;
49b1e: 2948 000c movel %a0,%a4@(12)
if (device_name_table[i].device_name[pathnamelen] != '\0')
continue;
/* find the device, set proper values */
pathloc->node_access = (void *)&device_name_table[i];
49b22: 288b movel %a3,%a4@
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49b24: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 49b2a: 4e5e unlk %fp 49b2c: 4e75 rts
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
rtems_set_errno_and_return_minus_one( EPERM );
49b2e: 4eb9 0004 c718 jsr 4c718 <__errno> <== NOT EXECUTED 49b34: 7601 moveq #1,%d3 <== NOT EXECUTED 49b36: 2040 moveal %d0,%a0 <== NOT EXECUTED 49b38: 70ff moveq #-1,%d0 <== NOT EXECUTED 49b3a: 2083 movel %d3,%a0@ <== NOT EXECUTED
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49b3c: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED 49b42: 4e5e unlk %fp <== NOT EXECUTED 49b44: 4e75 rts <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
/* get the device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
49b46: 4eb9 0004 c718 jsr 4c718 <__errno> <== NOT EXECUTED 49b4c: 740e moveq #14,%d2 <== NOT EXECUTED 49b4e: 2040 moveal %d0,%a0 <== NOT EXECUTED 49b50: 70ff moveq #-1,%d0 <== NOT EXECUTED 49b52: 2082 movel %d2,%a0@ <== NOT EXECUTED
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49b54: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED 49b5a: 4e5e unlk %fp <== NOT EXECUTED
000421e4 <devFS_initialize>:
int devFS_initialize(
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const void *data
)
{
421e4: 4e56 0000 linkw %fp,#0
rtems_device_name_t *device_name_table;
/* allocate device only filesystem name table */
device_name_table = (rtems_device_name_t *)_Workspace_Allocate(
421e8: 2039 0005 b688 movel 5b688 <rtems_device_table_size>,%d0 421ee: 2200 movel %d0,%d1
int devFS_initialize(
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const void *data
)
{
421f0: 2f0a movel %a2,%sp@- 421f2: 246e 0008 moveal %fp@(8),%a2
rtems_device_name_t *device_name_table;
/* allocate device only filesystem name table */
device_name_table = (rtems_device_name_t *)_Workspace_Allocate(
421f6: e989 lsll #4,%d1
int devFS_initialize(
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const void *data
)
{
421f8: 2f02 movel %d2,%sp@-
rtems_device_name_t *device_name_table;
/* allocate device only filesystem name table */
device_name_table = (rtems_device_name_t *)_Workspace_Allocate(
421fa: 2041 moveal %d1,%a0 421fc: 4870 0c00 pea %a0@(00000000,%d0:l:4) 42200: 4eb9 0004 9686 jsr 49686 <_Workspace_Allocate>
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
42206: 588f addql #4,%sp
)
{
rtems_device_name_t *device_name_table;
/* allocate device only filesystem name table */
device_name_table = (rtems_device_name_t *)_Workspace_Allocate(
42208: 2400 movel %d0,%d2
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
4220a: 6744 beqs 42250 <devFS_initialize+0x6c> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( ENOMEM );
memset(
4220c: 2039 0005 b688 movel 5b688 <rtems_device_table_size>,%d0 42212: 2200 movel %d0,%d1 42214: e989 lsll #4,%d1 42216: 2041 moveal %d1,%a0 42218: 4870 0c00 pea %a0@(00000000,%d0:l:4) 4221c: 42a7 clrl %sp@- 4221e: 2f02 movel %d2,%sp@- 42220: 4eb9 0004 d034 jsr 4d034 <memset>
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
42226: 4fef 000c lea %sp@(12),%sp
device_name_table, 0,
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* set file handlers */
temp_mt_entry->mt_fs_root.handlers = &devFS_file_handlers;
4222a: 203c 0005 b7c8 movel #374728,%d0
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
42230: 41f9 0005 b780 lea 5b780 <devFS_ops>,%a0
device_name_table, 0,
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* set file handlers */
temp_mt_entry->mt_fs_root.handlers = &devFS_file_handlers;
42236: 2540 0024 movel %d0,%a2@(36)
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
4223a: 4280 clrl %d0
/* set file handlers */
temp_mt_entry->mt_fs_root.handlers = &devFS_file_handlers;
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
4223c: 2542 001c movel %d2,%a2@(28)
return 0;
}
42240: 242e fff8 movel %fp@(-8),%d2
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* set file handlers */
temp_mt_entry->mt_fs_root.handlers = &devFS_file_handlers;
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
42244: 2548 0028 movel %a0,%a2@(40)
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
}
42248: 246e fffc moveal %fp@(-4),%a2 4224c: 4e5e unlk %fp 4224e: 4e75 rts
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
rtems_set_errno_and_return_minus_one( ENOMEM );
42250: 4eb9 0004 c718 jsr 4c718 <__errno> <== NOT EXECUTED
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
}
42256: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
rtems_set_errno_and_return_minus_one( ENOMEM );
4225a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4225c: 720c moveq #12,%d1 <== NOT EXECUTED 4225e: 70ff moveq #-1,%d0 <== NOT EXECUTED
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
}
42260: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 42264: 4e5e unlk %fp <== NOT EXECUTED
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
rtems_set_errno_and_return_minus_one( ENOMEM );
42266: 2081 movel %d1,%a0@ <== NOT EXECUTED
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
}
...
00042468 <devFS_ioctl>:
int devFS_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
42468: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4246c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.iop = iop;
args.command = command;
args.buffer = buffer;
status = rtems_io_control(
42470: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
{
rtems_libio_ioctl_args_t args;
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
42474: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.iop = iop;
args.command = command;
args.buffer = buffer;
status = rtems_io_control(
42478: 2f29 000c movel %a1@(12),%sp@- <== NOT EXECUTED
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.command = command;
4247c: 2d6e 000c fff4 movel %fp@(12),%fp@(-12) <== NOT EXECUTED
args.buffer = buffer;
status = rtems_io_control(
42482: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.command = command;
args.buffer = buffer;
42486: 2d6e 0010 fff8 movel %fp@(16),%fp@(-8) <== NOT EXECUTED
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
4248c: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED
args.command = command;
args.buffer = buffer;
status = rtems_io_control(
42490: 4eb9 0004 677c jsr 4677c <rtems_io_control> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
if ( status )
42496: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4249a: 4a80 tstl %d0 <== NOT EXECUTED 4249c: 6608 bnes 424a6 <devFS_ioctl+0x3e> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return args.ioctl_return;
4249e: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
424a2: 4e5e unlk %fp <== NOT EXECUTED 424a4: 4e75 rts <== NOT EXECUTED
np->minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
424a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 424a8: 4eb9 0004 9b70 jsr 49b70 <rtems_deviceio_errno> <== NOT EXECUTED 424ae: 588f addql #4,%sp <== NOT EXECUTED
return args.ioctl_return;
}
424b0: 4e5e unlk %fp <== NOT EXECUTED
0004226c <devFS_mknod>:
* condition and do not create the '/dev' and the 'path'
* actually passed in is 'dev', not '/dev'. Just return 0 to
* indicate we are OK.
*/
if ((path[0] == 'd') && (path[1] == 'e') &&
4226c: 7264 moveq #100,%d1
const char *path,
mode_t mode,
dev_t dev,
rtems_filesystem_location_info_t *pathloc
)
{
4226e: 4e56 ffdc linkw %fp,#-36 42272: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ 42276: 266e 0008 moveal %fp@(8),%a3
* condition and do not create the '/dev' and the 'path'
* actually passed in is 'dev', not '/dev'. Just return 0 to
* indicate we are OK.
*/
if ((path[0] == 'd') && (path[1] == 'e') &&
4227a: 1013 moveb %a3@,%d0
const char *path,
mode_t mode,
dev_t dev,
rtems_filesystem_location_info_t *pathloc
)
{
4227c: 2a2e 000c movel %fp@(12),%d5
* condition and do not create the '/dev' and the 'path'
* actually passed in is 'dev', not '/dev'. Just return 0 to
* indicate we are OK.
*/
if ((path[0] == 'd') && (path[1] == 'e') &&
42280: 49c0 extbl %d0
const char *path,
mode_t mode,
dev_t dev,
rtems_filesystem_location_info_t *pathloc
)
{
42282: 2e2e 0010 movel %fp@(16),%d7 42286: 2c2e 0014 movel %fp@(20),%d6
* condition and do not create the '/dev' and the 'path'
* actually passed in is 'dev', not '/dev'. Just return 0 to
* indicate we are OK.
*/
if ((path[0] == 'd') && (path[1] == 'e') &&
4228a: b280 cmpl %d0,%d1 4228c: 6700 00d0 beqw 4235e <devFS_mknod+0xf2>
(path[2] == 'v') && (path[3] == '\0'))
return 0;
/* must be a character device or a block device */
if (!S_ISBLK(mode) && !S_ISCHR(mode))
42290: 2005 movel %d5,%d0 42292: 0280 0000 f000 andil #61440,%d0 42298: 0c80 0000 6000 cmpil #24576,%d0
4229e: 670a beqs 422aa <devFS_mknod+0x3e> <== NEVER TAKEN
422a0: 0c80 0000 2000 cmpil #8192,%d0 422a6: 6600 00ea bnew 42392 <devFS_mknod+0x126>
rtems_set_errno_and_return_minus_one( EINVAL );
else
rtems_filesystem_split_dev_t(dev, major, minor);
/* Find an empty slot in device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
422aa: 206e 0018 moveal %fp@(24),%a0 422ae: 2450 moveal %a0@,%a2
if (!device_name_table)
422b0: 4a8a tstl %a2 422b2: 6700 010e beqw 423c2 <devFS_mknod+0x156>
rtems_set_errno_and_return_minus_one( EFAULT );
for (slot = -1, i = 0; i < rtems_device_table_size; i++){
422b6: 2639 0005 b688 movel 5b688 <rtems_device_table_size>,%d3 422bc: 6700 00ec beqw 423aa <devFS_mknod+0x13e> 422c0: 4280 clrl %d0 422c2: 78ff moveq #-1,%d4 422c4: 4282 clrl %d2
if (device_name_table[i].device_name == NULL)
slot = i;
else
if (strcmp(path, device_name_table[i].device_name) == 0)
422c6: 49f9 0004 d564 lea 4d564 <strcmp>,%a4
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (slot = -1, i = 0; i < rtems_device_table_size; i++){
if (device_name_table[i].device_name == NULL)
422cc: 2200 movel %d0,%d1 422ce: e989 lsll #4,%d1 422d0: 2241 moveal %d1,%a1 422d2: 41f1 0c00 lea %a1@(00000000,%d0:l:4),%a0 422d6: 2030 a800 movel %a0@(00000000,%a2:l),%d0
422da: 675e beqs 4233a <devFS_mknod+0xce>
slot = i;
else
if (strcmp(path, device_name_table[i].device_name) == 0)
422dc: 2f00 movel %d0,%sp@- 422de: 2f0b movel %a3,%sp@- 422e0: 4e94 jsr %a4@ 422e2: 508f addql #8,%sp 422e4: 4a80 tstl %d0
422e6: 675e beqs 42346 <devFS_mknod+0xda> <== NEVER TAKEN
/* Find an empty slot in device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (slot = -1, i = 0; i < rtems_device_table_size; i++){
422e8: 5282 addql #1,%d2 422ea: 2002 movel %d2,%d0 422ec: b682 cmpl %d2,%d3
422ee: 62dc bhis 422cc <devFS_mknod+0x60>
else
if (strcmp(path, device_name_table[i].device_name) == 0)
rtems_set_errno_and_return_minus_one( EEXIST );
}
if (slot == -1)
422f0: 70ff moveq #-1,%d0 422f2: b084 cmpl %d4,%d0 422f4: 6700 00b4 beqw 423aa <devFS_mknod+0x13e>
rtems_set_errno_and_return_minus_one( ENOMEM );
_ISR_Disable(level);
422f8: 203c 0000 0700 movel #1792,%d0 422fe: 40c2 movew %sr,%d2 42300: 8082 orl %d2,%d0 42302: 46c0 movew %d0,%sr
device_name_table[slot].device_name = (char *)path;
42304: 2004 movel %d4,%d0 42306: e988 lsll #4,%d0 42308: 2240 moveal %d0,%a1 4230a: 41f1 4c00 lea %a1@(00000000,%d4:l:4),%a0 4230e: d5c8 addal %a0,%a2 42310: 248b movel %a3,%a2@
device_name_table[slot].device_name_length = strlen(path);
42312: 2f0b movel %a3,%sp@- 42314: 4eb9 0004 da40 jsr 4da40 <strlen> 4231a: 588f addql #4,%sp 4231c: 2540 0004 movel %d0,%a2@(4)
device_name_table[slot].major = major;
42320: 2547 0008 movel %d7,%a2@(8)
device_name_table[slot].minor = minor;
42324: 2546 000c movel %d6,%a2@(12)
device_name_table[slot].mode = mode;
42328: 2545 0010 movel %d5,%a2@(16)
_ISR_Enable(level);
4232c: 46c2 movew %d2,%sr
return 0;
4232e: 4280 clrl %d0
}
42330: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 42336: 4e5e unlk %fp 42338: 4e75 rts
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (slot = -1, i = 0; i < rtems_device_table_size; i++){
if (device_name_table[i].device_name == NULL)
4233a: 2802 movel %d2,%d4
/* Find an empty slot in device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
for (slot = -1, i = 0; i < rtems_device_table_size; i++){
4233c: 5282 addql #1,%d2 4233e: 2002 movel %d2,%d0 42340: b682 cmpl %d2,%d3
42342: 6288 bhis 422cc <devFS_mknod+0x60>
42344: 60aa bras 422f0 <devFS_mknod+0x84>
if (device_name_table[i].device_name == NULL)
slot = i;
else
if (strcmp(path, device_name_table[i].device_name) == 0)
rtems_set_errno_and_return_minus_one( EEXIST );
42346: 4eb9 0004 c718 jsr 4c718 <__errno> <== NOT EXECUTED 4234c: 7411 moveq #17,%d2 <== NOT EXECUTED 4234e: 2040 moveal %d0,%a0 <== NOT EXECUTED 42350: 70ff moveq #-1,%d0 <== NOT EXECUTED 42352: 2082 movel %d2,%a0@ <== NOT EXECUTED
device_name_table[slot].minor = minor;
device_name_table[slot].mode = mode;
_ISR_Enable(level);
return 0;
}
42354: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4235a: 4e5e unlk %fp <== NOT EXECUTED 4235c: 4e75 rts <== NOT EXECUTED
* condition and do not create the '/dev' and the 'path'
* actually passed in is 'dev', not '/dev'. Just return 0 to
* indicate we are OK.
*/
if ((path[0] == 'd') && (path[1] == 'e') &&
4235e: 123c 0065 moveb #101,%d1 42362: 102b 0001 moveb %a3@(1),%d0 42366: 49c0 extbl %d0 42368: b280 cmpl %d0,%d1 4236a: 6600 ff24 bnew 42290 <devFS_mknod+0x24> 4236e: 123c 0076 moveb #118,%d1 42372: 102b 0002 moveb %a3@(2),%d0 42376: 49c0 extbl %d0 42378: b280 cmpl %d0,%d1 4237a: 6600 ff14 bnew 42290 <devFS_mknod+0x24>
(path[2] == 'v') && (path[3] == '\0'))
4237e: 4a2b 0003 tstb %a3@(3) 42382: 6600 ff0c bnew 42290 <devFS_mknod+0x24>
return 0;
42386: 4280 clrl %d0
device_name_table[slot].minor = minor;
device_name_table[slot].mode = mode;
_ISR_Enable(level);
return 0;
}
42388: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 4238e: 4e5e unlk %fp 42390: 4e75 rts
(path[2] == 'v') && (path[3] == '\0'))
return 0;
/* must be a character device or a block device */
if (!S_ISBLK(mode) && !S_ISCHR(mode))
rtems_set_errno_and_return_minus_one( EINVAL );
42392: 4eb9 0004 c718 jsr 4c718 <__errno> <== NOT EXECUTED 42398: 7816 moveq #22,%d4 <== NOT EXECUTED 4239a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4239c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4239e: 2084 movel %d4,%a0@ <== NOT EXECUTED
device_name_table[slot].minor = minor;
device_name_table[slot].mode = mode;
_ISR_Enable(level);
return 0;
}
423a0: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 423a6: 4e5e unlk %fp <== NOT EXECUTED 423a8: 4e75 rts <== NOT EXECUTED
if (strcmp(path, device_name_table[i].device_name) == 0)
rtems_set_errno_and_return_minus_one( EEXIST );
}
if (slot == -1)
rtems_set_errno_and_return_minus_one( ENOMEM );
423aa: 4eb9 0004 c718 jsr 4c718 <__errno> <== NOT EXECUTED 423b0: 720c moveq #12,%d1 <== NOT EXECUTED 423b2: 2040 moveal %d0,%a0 <== NOT EXECUTED 423b4: 70ff moveq #-1,%d0 <== NOT EXECUTED
device_name_table[slot].minor = minor;
device_name_table[slot].mode = mode;
_ISR_Enable(level);
return 0;
}
423b6: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
if (strcmp(path, device_name_table[i].device_name) == 0)
rtems_set_errno_and_return_minus_one( EEXIST );
}
if (slot == -1)
rtems_set_errno_and_return_minus_one( ENOMEM );
423bc: 2081 movel %d1,%a0@ <== NOT EXECUTED
device_name_table[slot].minor = minor;
device_name_table[slot].mode = mode;
_ISR_Enable(level);
return 0;
}
423be: 4e5e unlk %fp <== NOT EXECUTED 423c0: 4e75 rts <== NOT EXECUTED
rtems_filesystem_split_dev_t(dev, major, minor);
/* Find an empty slot in device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
if (!device_name_table)
rtems_set_errno_and_return_minus_one( EFAULT );
423c2: 4eb9 0004 c718 jsr 4c718 <__errno> <== NOT EXECUTED 423c8: 760e moveq #14,%d3 <== NOT EXECUTED 423ca: 2040 moveal %d0,%a0 <== NOT EXECUTED 423cc: 70ff moveq #-1,%d0 <== NOT EXECUTED 423ce: 2083 movel %d3,%a0@ <== NOT EXECUTED
device_name_table[slot].minor = minor;
device_name_table[slot].mode = mode;
_ISR_Enable(level);
return 0;
}
423d0: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 423d6: 4e5e unlk %fp <== NOT EXECUTED
...
000424f0 <devFS_read>:
ssize_t devFS_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
424f0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 424f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
424f8: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
{
rtems_libio_rw_args_t args;
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
424fc: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
42500: 2f29 000c movel %a1@(12),%sp@- <== NOT EXECUTED
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
42504: 2d68 0014 fff8 movel %a0@(20),%fp@(-8) <== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_read(
4250a: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
4250e: 2d6e 000c fff0 movel %fp@(12),%fp@(-16) <== NOT EXECUTED
args.count = count;
42514: 2d6e 0010 fff4 movel %fp@(16),%fp@(-12) <== NOT EXECUTED
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4251a: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED 4251e: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
42522: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED
args.offset = iop->offset; args.buffer = buffer; args.count = count; args.flags = iop->flags; args.bytes_moved = 0;
42526: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4252a: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 4252e: 2d41 ffec movel %d1,%fp@(-20) <== NOT EXECUTED
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
42532: 4eb9 0004 68e0 jsr 468e0 <rtems_io_read> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
if ( status )
42538: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4253c: 4a80 tstl %d0 <== NOT EXECUTED 4253e: 6608 bnes 42548 <devFS_read+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
42540: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
42544: 4e5e unlk %fp <== NOT EXECUTED 42546: 4e75 rts <== NOT EXECUTED
np->minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
42548: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4254a: 4eb9 0004 9b70 jsr 49b70 <rtems_deviceio_errno> <== NOT EXECUTED 42550: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
42552: 4e5e unlk %fp <== NOT EXECUTED
...
00042580 <devFS_write>:
ssize_t devFS_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
42580: 4e56 ffe4 linkw %fp,#-28 42584: 206e 0008 moveal %fp@(8),%a0
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
42588: 486e ffe4 pea %fp@(-28)
{
rtems_libio_rw_args_t args;
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
4258c: 2268 0018 moveal %a0@(24),%a1
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
42590: 2f29 000c movel %a1@(12),%sp@-
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
42594: 2d68 0014 fff8 movel %a0@(20),%fp@(-8)
args.bytes_moved = 0;
status = rtems_io_write(
4259a: 2f29 0008 movel %a1@(8),%sp@-
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
4259e: 2d6e 000c fff0 movel %fp@(12),%fp@(-16)
args.count = count;
425a4: 2d6e 0010 fff4 movel %fp@(16),%fp@(-12)
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
425aa: 2028 000c movel %a0@(12),%d0 425ae: 2228 0010 movel %a0@(16),%d1
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
425b2: 2d48 ffe4 movel %a0,%fp@(-28)
args.offset = iop->offset; args.buffer = (void *) buffer; args.count = count; args.flags = iop->flags; args.bytes_moved = 0;
425b6: 42ae fffc clrl %fp@(-4)
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
425ba: 2d40 ffe8 movel %d0,%fp@(-24) 425be: 2d41 ffec movel %d1,%fp@(-20)
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
425c2: 4eb9 0004 6928 jsr 46928 <rtems_io_write>
np->major,
np->minor,
(void *) &args
);
if ( status )
425c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 425cc: 4a80 tstl %d0 <== NOT EXECUTED 425ce: 6608 bnes 425d8 <devFS_write+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
425d0: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
425d4: 4e5e unlk %fp <== NOT EXECUTED 425d6: 4e75 rts <== NOT EXECUTED
np->minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
425d8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 425da: 4eb9 0004 9b70 jsr 49b70 <rtems_deviceio_errno> <== NOT EXECUTED 425e0: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
425e2: 4e5e unlk %fp <== NOT EXECUTED
...
0004dba6 <device_ftruncate>:
rtems_libio_t *iop,
rtems_off64_t length
)
{
return 0;
}
4dba6: 4280 clrl %d0 <== NOT EXECUTED
int device_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4dba8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; }
4dbac: 4e5e unlk %fp <== NOT EXECUTED
0004db4a <device_ioctl>:
int device_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4db4a: 4e56 fff0 linkw %fp,#-16 4db4e: 206e 0008 moveal %fp@(8),%a0
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4db52: 486e fff0 pea %fp@(-16)
args.iop = iop;
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
4db56: 2268 0018 moveal %a0@(24),%a1
status = rtems_io_control(
4db5a: 2f29 0050 movel %a1@(80),%sp@-
rtems_libio_ioctl_args_t args;
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
args.command = command;
4db5e: 2d6e 000c fff4 movel %fp@(12),%fp@(-12)
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4db64: 2f29 004c movel %a1@(76),%sp@-
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
args.command = command;
args.buffer = buffer;
4db68: 2d6e 0010 fff8 movel %fp@(16),%fp@(-8)
{
rtems_libio_ioctl_args_t args;
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
4db6e: 2d48 fff0 movel %a0,%fp@(-16)
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4db72: 4eb9 0004 e578 jsr 4e578 <rtems_io_control>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4db78: 4fef 000c lea %sp@(12),%sp 4db7c: 4a80 tstl %d0
4db7e: 6608 bnes 4db88 <device_ioctl+0x3e> <== NEVER TAKEN
return rtems_deviceio_errno(status);
return args.ioctl_return;
4db80: 202e fffc movel %fp@(-4),%d0
}
4db84: 4e5e unlk %fp 4db86: 4e75 rts
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4db88: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db8a: 4eb9 0004 e828 jsr 4e828 <rtems_deviceio_errno> <== NOT EXECUTED 4db90: 588f addql #4,%sp <== NOT EXECUTED
return args.ioctl_return;
}
4db92: 4e5e unlk %fp <== NOT EXECUTED
0004db96 <device_lseek>:
rtems_off64_t device_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4db96: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return offset; }
4db9a: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4db9e: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 4dba2: 4e5e unlk %fp <== NOT EXECUTED
0004da7e <device_read>:
ssize_t device_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4da7e: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4da82: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
4da86: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
{
rtems_libio_rw_args_t args;
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4da8a: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
4da8e: 2f29 0050 movel %a1@(80),%sp@- <== NOT EXECUTED
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
4da92: 2d68 0014 fff8 movel %a0@(20),%fp@(-8) <== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_read(
4da98: 2f29 004c movel %a1@(76),%sp@- <== NOT EXECUTED
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
4da9c: 2d6e 000c fff0 movel %fp@(12),%fp@(-16) <== NOT EXECUTED
args.count = count;
4daa2: 2d6e 0010 fff4 movel %fp@(16),%fp@(-12) <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4daa8: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED 4daac: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
4dab0: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED
args.offset = iop->offset; args.buffer = buffer; args.count = count; args.flags = iop->flags; args.bytes_moved = 0;
4dab4: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4dab8: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 4dabc: 2d41 ffec movel %d1,%fp@(-20) <== NOT EXECUTED
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
4dac0: 4eb9 0004 e608 jsr 4e608 <rtems_io_read> <== NOT EXECUTED
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4dac6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4daca: 4a80 tstl %d0 <== NOT EXECUTED 4dacc: 6608 bnes 4dad6 <device_read+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
4dace: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4dad2: 4e5e unlk %fp <== NOT EXECUTED 4dad4: 4e75 rts <== NOT EXECUTED
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4dad6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4dad8: 4eb9 0004 e828 jsr 4e828 <rtems_deviceio_errno> <== NOT EXECUTED 4dade: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
4dae0: 4e5e unlk %fp <== NOT EXECUTED
0004dae4 <device_write>:
ssize_t device_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4dae4: 4e56 ffe4 linkw %fp,#-28 4dae8: 206e 0008 moveal %fp@(8),%a0
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
4daec: 486e ffe4 pea %fp@(-28)
{
rtems_libio_rw_args_t args;
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4daf0: 2268 0018 moveal %a0@(24),%a1
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
4daf4: 2f29 0050 movel %a1@(80),%sp@-
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
4daf8: 2d68 0014 fff8 movel %a0@(20),%fp@(-8)
args.bytes_moved = 0;
status = rtems_io_write(
4dafe: 2f29 004c movel %a1@(76),%sp@-
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
4db02: 2d6e 000c fff0 movel %fp@(12),%fp@(-16)
args.count = count;
4db08: 2d6e 0010 fff4 movel %fp@(16),%fp@(-12)
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4db0e: 2028 000c movel %a0@(12),%d0 4db12: 2228 0010 movel %a0@(16),%d1
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
4db16: 2d48 ffe4 movel %a0,%fp@(-28)
args.offset = iop->offset; args.buffer = (void *) buffer; args.count = count; args.flags = iop->flags; args.bytes_moved = 0;
4db1a: 42ae fffc clrl %fp@(-4)
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4db1e: 2d40 ffe8 movel %d0,%fp@(-24) 4db22: 2d41 ffec movel %d1,%fp@(-20)
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
4db26: 4eb9 0004 e650 jsr 4e650 <rtems_io_write>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4db2c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4db30: 4a80 tstl %d0 <== NOT EXECUTED 4db32: 6608 bnes 4db3c <device_write+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
4db34: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4db38: 4e5e unlk %fp <== NOT EXECUTED 4db3a: 4e75 rts <== NOT EXECUTED
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4db3c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db3e: 4eb9 0004 e828 jsr 4e828 <rtems_deviceio_errno> <== NOT EXECUTED 4db44: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
4db46: 4e5e unlk %fp <== NOT EXECUTED
00043ccc <drainOutput>:
/*
* Drain output queue
*/
static void
drainOutput (struct rtems_termios_tty *tty)
{
43ccc: 4e56 fff4 linkw %fp,#-12 43cd0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 43cd4: 246e 0008 moveal %fp@(8),%a2
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {
43cd8: 4aaa 00b4 tstl %a2@(180)
43cdc: 6750 beqs 43d2e <drainOutput+0x62> <== NEVER TAKEN
rtems_interrupt_disable (level);
43cde: 243c 0000 0700 movel #1792,%d2 43ce4: 2002 movel %d2,%d0 43ce6: 40c1 movew %sr,%d1 43ce8: 8081 orl %d1,%d0 43cea: 46c0 movew %d0,%sr
while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {
43cec: 206a 0084 moveal %a2@(132),%a0 43cf0: 202a 0080 movel %a2@(128),%d0 43cf4: b088 cmpl %a0,%d0
43cf6: 6734 beqs 43d2c <drainOutput+0x60> <== ALWAYS TAKEN
43cf8: 47f9 0004 6478 lea 46478 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED
tty->rawOutBufState = rob_wait;
43cfe: 7002 moveq #2,%d0 <== NOT EXECUTED 43d00: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable (level);
43d04: 46c1 movew %d1,%sr <== NOT EXECUTED
sc = rtems_semaphore_obtain(
43d06: 42a7 clrl %sp@- <== NOT EXECUTED 43d08: 42a7 clrl %sp@- <== NOT EXECUTED 43d0a: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED 43d0e: 4e93 jsr %a3@ <== NOT EXECUTED
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
43d10: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 43d14: 4a80 tstl %d0 <== NOT EXECUTED 43d16: 6620 bnes 43d38 <drainOutput+0x6c> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
43d18: 2002 movel %d2,%d0 <== NOT EXECUTED 43d1a: 40c1 movew %sr,%d1 <== NOT EXECUTED 43d1c: 8081 orl %d1,%d0 <== NOT EXECUTED 43d1e: 46c0 movew %d0,%sr <== NOT EXECUTED
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) {
43d20: 206a 0084 moveal %a2@(132),%a0 <== NOT EXECUTED 43d24: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED 43d28: b088 cmpl %a0,%d0 <== NOT EXECUTED 43d2a: 66d2 bnes 43cfe <drainOutput+0x32> <== NOT EXECUTED
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);
43d2c: 46c1 movew %d1,%sr
} }
43d2e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 43d34: 4e5e unlk %fp 43d36: 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);
43d38: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43d3a: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred> <== NOT EXECUTED
00043408 <dup>:
#include <fcntl.h>
int dup(
int fildes
)
{
43408: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return fcntl( fildes, F_DUPFD, 0 );
4340c: 42a7 clrl %sp@- <== NOT EXECUTED 4340e: 42a7 clrl %sp@- <== NOT EXECUTED 43410: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43414: 4eb9 0004 37cc jsr 437cc <fcntl> <== NOT EXECUTED
}
4341a: 4e5e unlk %fp <== NOT EXECUTED
...
000433a8 <dup2>:
int dup2(
int fildes,
int fildes2
)
{
433a8: 4e56 ffac linkw %fp,#-84 <== NOT EXECUTED 433ac: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
/*
* If fildes is not valid, then fildes2 should not be closed.
*/
status = fstat( fildes, &buf );
433b0: 240e movel %fp,%d2 <== NOT EXECUTED 433b2: 0682 ffff ffba addil #-70,%d2 <== NOT EXECUTED 433b8: 45f9 0004 3c28 lea 43c28 <fstat>,%a2 <== NOT EXECUTED 433be: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int dup2(
int fildes,
int fildes2
)
{
433c0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
/*
* If fildes is not valid, then fildes2 should not be closed.
*/
status = fstat( fildes, &buf );
433c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 433c6: 4e92 jsr %a2@ <== NOT EXECUTED
if ( status == -1 )
433c8: 508f addql #8,%sp <== NOT EXECUTED 433ca: 72ff moveq #-1,%d1 <== NOT EXECUTED 433cc: b280 cmpl %d0,%d1 <== NOT EXECUTED 433ce: 660c bnes 433dc <dup2+0x34> <== NOT EXECUTED
* If fildes2 is not valid, then we should not do anything either.
*/
status = fstat( fildes2, &buf );
if ( status == -1 )
return -1;
433d0: 70ff moveq #-1,%d0 <== NOT EXECUTED
/*
* This fcntl handles everything else.
*/
return fcntl( fildes, F_DUPFD, fildes2 );
}
433d2: 4cee 040c ffac moveml %fp@(-84),%d2-%d3/%a2 <== NOT EXECUTED 433d8: 4e5e unlk %fp <== NOT EXECUTED 433da: 4e75 rts <== NOT EXECUTED
/*
* If fildes2 is not valid, then we should not do anything either.
*/
status = fstat( fildes2, &buf );
433dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 433de: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 433e2: 4e92 jsr %a2@ <== NOT EXECUTED
if ( status == -1 )
433e4: 508f addql #8,%sp <== NOT EXECUTED 433e6: 72ff moveq #-1,%d1 <== NOT EXECUTED 433e8: b280 cmpl %d0,%d1 <== NOT EXECUTED 433ea: 67e4 beqs 433d0 <dup2+0x28> <== NOT EXECUTED
/*
* This fcntl handles everything else.
*/
return fcntl( fildes, F_DUPFD, fildes2 );
433ec: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 433f0: 42a7 clrl %sp@- <== NOT EXECUTED 433f2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 433f4: 4eb9 0004 37cc jsr 437cc <fcntl> <== NOT EXECUTED 433fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
433fe: 4cee 040c ffac moveml %fp@(-84),%d2-%d3/%a2 <== NOT EXECUTED 43404: 4e5e unlk %fp <== NOT EXECUTED
00044a18 <echo>:
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
44a18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 44a1c: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 44a20: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44a22: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 44a26: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
44a28: 242a 003c movel %a2@(60),%d2 <== NOT EXECUTED 44a2c: 0282 0000 0200 andil #512,%d2 <== NOT EXECUTED
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
44a32: 1001 moveb %d1,%d0 <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
44a34: 4a82 tstl %d2 <== NOT EXECUTED 44a36: 673e beqs 44a76 <echo+0x5e> <== NOT EXECUTED
iscntrl(c) && (c != '\t') && (c != '\n')) {
44a38: 1001 moveb %d1,%d0 <== NOT EXECUTED 44a3a: 2079 0005 e60c moveal 5e60c <__ctype_ptr__>,%a0 <== NOT EXECUTED 44a40: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 44a46: 1430 0801 moveb %a0@(00000001,%d0:l),%d2 <== NOT EXECUTED 44a4a: 49c2 extbl %d2 <== NOT EXECUTED
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
if ((tty->termios.c_lflag & ECHOCTL) &&
44a4c: 0802 0005 btst #5,%d2 <== NOT EXECUTED 44a50: 670e beqs 44a60 <echo+0x48> <== NOT EXECUTED
iscntrl(c) && (c != '\t') && (c != '\n')) {
44a52: 7409 moveq #9,%d2 <== NOT EXECUTED 44a54: b480 cmpl %d0,%d2 <== NOT EXECUTED 44a56: 6708 beqs 44a60 <echo+0x48> <== NOT EXECUTED 44a58: 143c 000a moveb #10,%d2 <== NOT EXECUTED 44a5c: b480 cmpl %d0,%d2 <== NOT EXECUTED 44a5e: 662a bnes 44a8a <echo+0x72> <== NOT EXECUTED
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
} else {
oproc (c, tty);
44a60: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44a62: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44a64: 4eba fdd4 jsr %pc@(4483a <oproc>) <== NOT EXECUTED 44a68: 508f addql #8,%sp <== NOT EXECUTED
} }
44a6a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 44a6e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 44a72: 4e5e unlk %fp <== NOT EXECUTED 44a74: 4e75 rts <== NOT EXECUTED 44a76: 1001 moveb %d1,%d0 <== NOT EXECUTED
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
} else {
oproc (c, tty);
44a78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44a7a: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 44a80: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44a82: 4eba fdb6 jsr %pc@(4483a <oproc>) <== NOT EXECUTED 44a86: 508f addql #8,%sp <== NOT EXECUTED 44a88: 60e0 bras 44a6a <echo+0x52> <== NOT EXECUTED
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
44a8a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44a8c: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
44a90: 7040 moveq #64,%d0 <== NOT EXECUTED
rtems_termios_puts (echobuf, 2, tty);
44a92: 486e fffe pea %fp@(-2) <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
44a96: b181 eorl %d0,%d1 <== NOT EXECUTED
{
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
44a98: 745e moveq #94,%d2 <== NOT EXECUTED
echobuf[1] = c ^ 0x40;
44a9a: 1d41 ffff moveb %d1,%fp@(-1) <== NOT EXECUTED
{
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
44a9e: 1d42 fffe moveb %d2,%fp@(-2) <== NOT EXECUTED
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
44aa2: 4eb9 0004 4736 jsr 44736 <rtems_termios_puts> <== NOT EXECUTED
tty->column += 2;
} else {
oproc (c, tty);
}
}
44aa8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
44aac: 54aa 0028 addql #2,%a2@(40) <== NOT EXECUTED
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
44ab0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
} else {
oproc (c, tty);
}
}
44ab4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 44ab8: 4e5e unlk %fp <== NOT EXECUTED
00043cda <endgrent>:
void endgrent(void)
{
43cda: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (group_fp != NULL)
43cde: 2039 0006 0df0 movel 60df0 <group_fp>,%d0 <== NOT EXECUTED 43ce4: 670a beqs 43cf0 <endgrent+0x16> <== NOT EXECUTED
fclose(group_fp);
43ce6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43ce8: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED 43cee: 588f addql #4,%sp <== NOT EXECUTED
}
43cf0: 4e5e unlk %fp <== NOT EXECUTED
00043b8e <endpwent>:
void endpwent(void)
{
43b8e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (passwd_fp != NULL)
43b92: 2039 0006 0eca movel 60eca <passwd_fp>,%d0 <== NOT EXECUTED 43b98: 670a beqs 43ba4 <endpwent+0x16> <== NOT EXECUTED
fclose(passwd_fp);
43b9a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43b9c: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED 43ba2: 588f addql #4,%sp <== NOT EXECUTED
}
43ba4: 4e5e unlk %fp <== NOT EXECUTED
00044abc <erase>:
* 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)
{
44abc: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 44ac0: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 44ac4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 44ac8: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
if (tty->ccount == 0)
44acc: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED 44ad0: 6734 beqs 44b06 <erase+0x4a> <== NOT EXECUTED
return;
if (lineFlag) {
44ad2: 4a84 tstl %d4 <== NOT EXECUTED 44ad4: 673a beqs 44b10 <erase+0x54> <== NOT EXECUTED
if (!(tty->termios.c_lflag & ECHO)) {
44ad6: 262a 003c movel %a2@(60),%d3 <== NOT EXECUTED 44ada: 7208 moveq #8,%d1 <== NOT EXECUTED 44adc: c283 andl %d3,%d1 <== NOT EXECUTED 44ade: 6700 01b0 beqw 44c90 <erase+0x1d4> <== NOT EXECUTED
tty->ccount = 0;
return;
}
if (!(tty->termios.c_lflag & ECHOE)) {
44ae2: 0803 0004 btst #4,%d3 <== NOT EXECUTED 44ae6: 6630 bnes 44b18 <erase+0x5c> <== NOT EXECUTED
tty->ccount = 0;
echo (tty->termios.c_cc[VKILL], tty);
44ae8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44aea: 4280 clrl %d0 <== NOT EXECUTED 44aec: 102a 0044 moveb %a2@(68),%d0 <== NOT EXECUTED
if (!(tty->termios.c_lflag & ECHO)) {
tty->ccount = 0;
return;
}
if (!(tty->termios.c_lflag & ECHOE)) {
tty->ccount = 0;
44af0: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
echo (tty->termios.c_cc[VKILL], tty);
44af4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44af6: 4eba ff20 jsr %pc@(44a18 <echo>) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHOK)
44afa: 508f addql #8,%sp <== NOT EXECUTED 44afc: 7020 moveq #32,%d0 <== NOT EXECUTED 44afe: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED 44b02: 6600 019a bnew 44c9e <erase+0x1e2> <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44b06: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 44b0c: 4e5e unlk %fp <== NOT EXECUTED 44b0e: 4e75 rts <== NOT EXECUTED
echo ('\n', tty);
return;
}
}
while (tty->ccount) {
44b10: 262a 003c movel %a2@(60),%d3 <== NOT EXECUTED 44b14: 7208 moveq #8,%d1 <== NOT EXECUTED 44b16: c283 andl %d3,%d1 <== NOT EXECUTED 44b18: 47f9 0004 4736 lea 44736 <rtems_termios_puts>,%a3 <== NOT EXECUTED
unsigned char c = tty->cbuf[--tty->ccount];
44b1e: 5380 subql #1,%d0 <== NOT EXECUTED 44b20: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 44b24: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED 44b28: 1430 0800 moveb %a0@(00000000,%d0:l),%d2 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO) {
44b2c: 4a81 tstl %d1 <== NOT EXECUTED 44b2e: 6734 beqs 44b64 <erase+0xa8> <== NOT EXECUTED
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
44b30: 4a84 tstl %d4 <== NOT EXECUTED 44b32: 6608 bnes 44b3c <erase+0x80> <== NOT EXECUTED 44b34: 0803 0004 btst #4,%d3 <== NOT EXECUTED 44b38: 6700 013c beqw 44c76 <erase+0x1ba> <== NOT EXECUTED
echo (tty->termios.c_cc[VERASE], tty);
} else if (c == '\t') {
44b3c: 7209 moveq #9,%d1 <== NOT EXECUTED 44b3e: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 44b44: b282 cmpl %d2,%d1 <== NOT EXECUTED 44b46: 6700 0090 beqw 44bd8 <erase+0x11c> <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
tty->column--;
}
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
44b4a: 2079 0005 e60c moveal 5e60c <__ctype_ptr__>,%a0 <== NOT EXECUTED 44b50: 5282 addql #1,%d2 <== NOT EXECUTED 44b52: 1030 2800 moveb %a0@(00000000,%d2:l),%d0 <== NOT EXECUTED 44b56: 49c0 extbl %d0 <== NOT EXECUTED 44b58: 0800 0005 btst #5,%d0 <== NOT EXECUTED 44b5c: 6756 beqs 44bb4 <erase+0xf8> <== NOT EXECUTED 44b5e: 0803 0009 btst #9,%d3 <== NOT EXECUTED 44b62: 6614 bnes 44b78 <erase+0xbc> <== NOT EXECUTED
if (tty->column)
tty->column--;
}
}
}
if (!lineFlag)
44b64: 4a84 tstl %d4 <== NOT EXECUTED 44b66: 679e beqs 44b06 <erase+0x4a> <== NOT EXECUTED
echo ('\n', tty);
return;
}
}
while (tty->ccount) {
44b68: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED 44b6c: 6798 beqs 44b06 <erase+0x4a> <== NOT EXECUTED
}
if (!(tty->termios.c_lflag & ECHOE)) {
tty->ccount = 0;
echo (tty->termios.c_cc[VKILL], tty);
if (tty->termios.c_lflag & ECHOK)
echo ('\n', tty);
44b6e: 262a 003c movel %a2@(60),%d3 <== NOT EXECUTED 44b72: 7208 moveq #8,%d1 <== NOT EXECUTED 44b74: c283 andl %d3,%d1 <== NOT EXECUTED 44b76: 60a6 bras 44b1e <erase+0x62> <== NOT EXECUTED
tty->column--;
}
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
rtems_termios_puts ("\b \b", 3, tty);
44b78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44b7a: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 44b7e: 4879 0005 d465 pea 5d465 <rtems_filesystem_default_pathconf+0xb1><== NOT EXECUTED 44b84: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->column)
44b86: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED 44b8a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 44b8e: 6706 beqs 44b96 <erase+0xda> <== NOT EXECUTED
tty->column--;
44b90: 5380 subql #1,%d0 <== NOT EXECUTED 44b92: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
}
if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {
44b96: 2079 0005 e60c moveal 5e60c <__ctype_ptr__>,%a0 <== NOT EXECUTED 44b9c: 1030 2800 moveb %a0@(00000000,%d2:l),%d0 <== NOT EXECUTED 44ba0: 49c0 extbl %d0 <== NOT EXECUTED 44ba2: 0800 0005 btst #5,%d0 <== NOT EXECUTED 44ba6: 670c beqs 44bb4 <erase+0xf8> <== NOT EXECUTED 44ba8: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED 44bac: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED 44bb2: 67b0 beqs 44b64 <erase+0xa8> <== NOT EXECUTED
rtems_termios_puts ("\b \b", 3, tty);
44bb4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44bb6: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 44bba: 4879 0005 d465 pea 5d465 <rtems_filesystem_default_pathconf+0xb1><== NOT EXECUTED 44bc0: 4eb9 0004 4736 jsr 44736 <rtems_termios_puts> <== NOT EXECUTED
if (tty->column)
44bc6: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED 44bca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 44bce: 6794 beqs 44b64 <erase+0xa8> <== NOT EXECUTED
tty->column--;
44bd0: 5380 subql #1,%d0 <== NOT EXECUTED 44bd2: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED 44bd6: 608c bras 44b64 <erase+0xa8> <== 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;
44bd8: 242a 002c movel %a2@(44),%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
44bdc: 4a80 tstl %d0 <== NOT EXECUTED 44bde: 6732 beqs 44c12 <erase+0x156> <== NOT EXECUTED
c = tty->cbuf[i++];
if (c == '\t') {
col = (col | 7) + 1;
} else if (iscntrl (c)) {
if (tty->termios.c_lflag & ECHOCTL)
44be0: 2c03 movel %d3,%d6 <== 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;
int i = 0;
44be2: 4201 clrb %d1 <== NOT EXECUTED
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)
44be4: 0286 0000 0200 andil #512,%d6 <== NOT EXECUTED
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
if (c == '\t') {
col = (col | 7) + 1;
} else if (iscntrl (c)) {
44bea: 2279 0005 e60c moveal 5e60c <__ctype_ptr__>,%a1 <== NOT EXECUTED
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
if (c == '\t') {
44bf0: 4283 clrl %d3 <== NOT EXECUTED 44bf2: 1618 moveb %a0@+,%d3 <== NOT EXECUTED
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
44bf4: 5281 addql #1,%d1 <== NOT EXECUTED
if (c == '\t') {
44bf6: 7a09 moveq #9,%d5 <== NOT EXECUTED 44bf8: ba83 cmpl %d3,%d5 <== NOT EXECUTED 44bfa: 676c beqs 44c68 <erase+0x1ac> <== NOT EXECUTED
col = (col | 7) + 1;
} else if (iscntrl (c)) {
44bfc: 1a31 3801 moveb %a1@(00000001,%d3:l),%d5 <== NOT EXECUTED 44c00: 49c5 extbl %d5 <== NOT EXECUTED 44c02: 0805 0005 btst #5,%d5 <== NOT EXECUTED 44c06: 6758 beqs 44c60 <erase+0x1a4> <== NOT EXECUTED
if (tty->termios.c_lflag & ECHOCTL)
44c08: 4a86 tstl %d6 <== NOT EXECUTED 44c0a: 6702 beqs 44c0e <erase+0x152> <== NOT EXECUTED
col += 2;
44c0c: 5482 addql #2,%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
44c0e: b280 cmpl %d0,%d1 <== NOT EXECUTED 44c10: 66de bnes 44bf0 <erase+0x134> <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c12: b4aa 0028 cmpl %a2@(40),%d2 <== NOT EXECUTED 44c16: 6c00 ff4c bgew 44b64 <erase+0xa8> <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
44c1a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44c1c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44c20: 4879 0005 d467 pea 5d467 <rtems_filesystem_default_pathconf+0xb3><== NOT EXECUTED 44c26: 4e93 jsr %a3@ <== NOT EXECUTED
tty->column--;
44c28: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED 44c2c: 5380 subql #1,%d0 <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c2e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
tty->column--;
44c32: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c36: b480 cmpl %d0,%d2 <== NOT EXECUTED 44c38: 6c00 ff2a bgew 44b64 <erase+0xa8> <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
44c3c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44c3e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44c42: 4879 0005 d467 pea 5d467 <rtems_filesystem_default_pathconf+0xb3><== NOT EXECUTED 44c48: 4e93 jsr %a3@ <== NOT EXECUTED
tty->column--;
44c4a: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED 44c4e: 5380 subql #1,%d0 <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c50: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
tty->column--;
44c54: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c58: b480 cmpl %d0,%d2 <== NOT EXECUTED 44c5a: 6dbe blts 44c1a <erase+0x15e> <== NOT EXECUTED 44c5c: 6000 ff06 braw 44b64 <erase+0xa8> <== NOT EXECUTED
col = (col | 7) + 1;
} else if (iscntrl (c)) {
if (tty->termios.c_lflag & ECHOCTL)
col += 2;
} else {
col++;
44c60: 5282 addql #1,%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
44c62: b280 cmpl %d0,%d1 <== NOT EXECUTED 44c64: 668a bnes 44bf0 <erase+0x134> <== NOT EXECUTED 44c66: 60aa bras 44c12 <erase+0x156> <== NOT EXECUTED
c = tty->cbuf[i++];
if (c == '\t') {
col = (col | 7) + 1;
44c68: 7607 moveq #7,%d3 <== NOT EXECUTED 44c6a: 8483 orl %d3,%d2 <== NOT EXECUTED 44c6c: 5282 addql #1,%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
44c6e: b280 cmpl %d0,%d1 <== NOT EXECUTED 44c70: 6600 ff7e bnew 44bf0 <erase+0x134> <== NOT EXECUTED 44c74: 609c bras 44c12 <erase+0x156> <== 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);
44c76: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED 44c7a: 4280 clrl %d0 <== NOT EXECUTED 44c7c: 102a 0043 moveb %a2@(67),%d0 <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44c80: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== 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);
44c86: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44c8a: 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);
44c8c: 6000 fd8a braw 44a18 <echo> <== NOT EXECUTED
{
if (tty->ccount == 0)
return;
if (lineFlag) {
if (!(tty->termios.c_lflag & ECHO)) {
tty->ccount = 0;
44c90: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44c94: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 44c9a: 4e5e unlk %fp <== NOT EXECUTED 44c9c: 4e75 rts <== NOT EXECUTED
}
if (!(tty->termios.c_lflag & ECHOE)) {
tty->ccount = 0;
echo (tty->termios.c_cc[VKILL], tty);
if (tty->termios.c_lflag & ECHOK)
echo ('\n', tty);
44c9e: 700a moveq #10,%d0 <== NOT EXECUTED 44ca0: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44ca4: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
}
if (!(tty->termios.c_lflag & ECHOE)) {
tty->ccount = 0;
echo (tty->termios.c_cc[VKILL], tty);
if (tty->termios.c_lflag & ECHOK)
echo ('\n', tty);
44caa: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44cae: 4e5e unlk %fp <== NOT EXECUTED
}
if (!(tty->termios.c_lflag & ECHOE)) {
tty->ccount = 0;
echo (tty->termios.c_cc[VKILL], tty);
if (tty->termios.c_lflag & ECHOK)
echo ('\n', tty);
44cb0: 6000 fd66 braw 44a18 <echo> <== NOT EXECUTED
000438e4 <fchdir>:
#include <rtems/seterr.h>
int fchdir(
int fd
)
{
438e4: 4e56 ffb4 linkw %fp,#-76 <== NOT EXECUTED 438e8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 438ec: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc, saved;
rtems_libio_check_fd( fd );
438f0: b0b9 0005 f8a4 cmpl 5f8a4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 438f6: 6400 012a bccw 43a22 <fchdir+0x13e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
438fa: 2200 movel %d0,%d1 <== NOT EXECUTED 438fc: ed88 lsll #6,%d0 <== NOT EXECUTED 438fe: e789 lsll #3,%d1 <== NOT EXECUTED 43900: 2479 0006 10a4 moveal 610a4 <rtems_libio_iops>,%a2 <== NOT EXECUTED 43906: 9081 subl %d1,%d0 <== NOT EXECUTED 43908: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4390a: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4390e: 0800 0008 btst #8,%d0 <== NOT EXECUTED 43912: 6700 010e beqw 43a22 <fchdir+0x13e> <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
43916: 0800 0001 btst #1,%d0 <== NOT EXECUTED 4391a: 6700 011e beqw 43a3a <fchdir+0x156> <== NOT EXECUTED
/*
* Verify you can change directory into this node.
*/
if ( (*iop->pathinfo.ops->node_type_h)( &iop->pathinfo ) !=
4391e: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED 43922: 47ea 0018 lea %a2@(24),%a3 <== NOT EXECUTED 43926: 2f0b movel %a3,%sp@- <== NOT EXECUTED 43928: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4392c: 4e90 jsr %a0@ <== NOT EXECUTED 4392e: 588f addql #4,%sp <== NOT EXECUTED 43930: 7201 moveq #1,%d1 <== NOT EXECUTED 43932: b280 cmpl %d0,%d1 <== NOT EXECUTED 43934: 6600 00ae bnew 439e4 <fchdir+0x100> <== NOT EXECUTED
* but note the race condition. Threads who
* share their rtems_filesystem_current better
* be synchronized!
*/
saved = rtems_filesystem_current;
43938: 2279 0005 fabc moveal 5fabc <rtems_current_user_env>,%a1 <== NOT EXECUTED 4393e: 41e9 0004 lea %a1@(4),%a0 <== NOT EXECUTED
rtems_filesystem_current = iop->pathinfo;
43942: 2248 moveal %a0,%a1 <== NOT EXECUTED
* but note the race condition. Threads who
* share their rtems_filesystem_current better
* be synchronized!
*/
saved = rtems_filesystem_current;
43944: 49ee ffd8 lea %fp@(-40),%a4 <== NOT EXECUTED 43948: 2a0e movel %fp,%d5 <== NOT EXECUTED 4394a: 0685 ffff ffdc addil #-36,%d5 <== NOT EXECUTED 43950: 2a45 moveal %d5,%a5 <== NOT EXECUTED 43952: 280e movel %fp,%d4 <== NOT EXECUTED 43954: 0684 ffff ffe0 addil #-32,%d4 <== NOT EXECUTED 4395a: 260e movel %fp,%d3 <== NOT EXECUTED 4395c: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED 43962: 240e movel %fp,%d2 <== NOT EXECUTED 43964: 0682 ffff ffe8 addil #-24,%d2 <== NOT EXECUTED
rtems_filesystem_current = iop->pathinfo;
/* clone the current node */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
4396a: 2c0e movel %fp,%d6 <== NOT EXECUTED 4396c: 0686 ffff ffec addil #-20,%d6 <== NOT EXECUTED
* but note the race condition. Threads who
* share their rtems_filesystem_current better
* be synchronized!
*/
saved = rtems_filesystem_current;
43972: 2898 movel %a0@+,%a4@ <== NOT EXECUTED 43974: 2a98 movel %a0@+,%a5@ <== NOT EXECUTED 43976: 2a44 moveal %d4,%a5 <== NOT EXECUTED 43978: 2a98 movel %a0@+,%a5@ <== NOT EXECUTED 4397a: 2a43 moveal %d3,%a5 <== NOT EXECUTED 4397c: 2a98 movel %a0@+,%a5@ <== NOT EXECUTED 4397e: 2a42 moveal %d2,%a5 <== NOT EXECUTED 43980: 2a90 movel %a0@,%a5@ <== NOT EXECUTED
rtems_filesystem_current = iop->pathinfo;
43982: 22d3 movel %a3@,%a1@+ <== NOT EXECUTED 43984: 22ea 001c movel %a2@(28),%a1@+ <== NOT EXECUTED 43988: 22ea 0020 movel %a2@(32),%a1@+ <== NOT EXECUTED 4398c: 22aa 0024 movel %a2@(36),%a1@ <== NOT EXECUTED 43990: 20aa 0028 movel %a2@(40),%a0@ <== NOT EXECUTED
/* clone the current node */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
43994: 42a7 clrl %sp@- <== NOT EXECUTED 43996: 2f06 movel %d6,%sp@- <== NOT EXECUTED 43998: 42a7 clrl %sp@- <== NOT EXECUTED 4399a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4399e: 4879 0005 ec76 pea 5ec76 <dotdotname+0x4> <== NOT EXECUTED 439a4: 4eb9 0004 3800 jsr 43800 <rtems_filesystem_evaluate_path> <== NOT EXECUTED 439aa: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 439ae: 4a80 tstl %d0 <== NOT EXECUTED 439b0: 664a bnes 439fc <fchdir+0x118> <== NOT EXECUTED
/* cloning failed; restore original and bail out */
rtems_filesystem_current = saved;
return -1;
}
/* release the old one */
rtems_filesystem_freenode( &saved );
439b2: 2f0c movel %a4,%sp@- <== NOT EXECUTED 439b4: 4eb9 0004 3b70 jsr 43b70 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_filesystem_current = loc;
439ba: 2079 0005 fabc moveal 5fabc <rtems_current_user_env>,%a0 <== NOT EXECUTED 439c0: 2246 moveal %d6,%a1 <== NOT EXECUTED 439c2: 5888 addql #4,%a0 <== NOT EXECUTED
return 0;
439c4: 588f addql #4,%sp <== NOT EXECUTED 439c6: 4280 clrl %d0 <== NOT EXECUTED
return -1;
}
/* release the old one */
rtems_filesystem_freenode( &saved );
rtems_filesystem_current = loc;
439c8: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED 439ca: 20ee fff0 movel %fp@(-16),%a0@+ <== NOT EXECUTED 439ce: 20ee fff4 movel %fp@(-12),%a0@+ <== NOT EXECUTED 439d2: 20ee fff8 movel %fp@(-8),%a0@+ <== NOT EXECUTED 439d6: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
return 0;
}
439da: 4cee 3c7c ffb4 moveml %fp@(-76),%d2-%d6/%a2-%a5 <== NOT EXECUTED 439e0: 4e5e unlk %fp <== NOT EXECUTED 439e2: 4e75 rts <== NOT EXECUTED
* Verify you can change directory into this node.
*/
if ( (*iop->pathinfo.ops->node_type_h)( &iop->pathinfo ) !=
RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_set_errno_and_return_minus_one( ENOTDIR );
439e4: 4eb9 0004 f938 jsr 4f938 <__errno> <== NOT EXECUTED 439ea: 7214 moveq #20,%d1 <== NOT EXECUTED 439ec: 2040 moveal %d0,%a0 <== NOT EXECUTED 439ee: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &saved );
rtems_filesystem_current = loc;
return 0;
}
439f0: 4cee 3c7c ffb4 moveml %fp@(-76),%d2-%d6/%a2-%a5 <== NOT EXECUTED
* Verify you can change directory into this node.
*/
if ( (*iop->pathinfo.ops->node_type_h)( &iop->pathinfo ) !=
RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_set_errno_and_return_minus_one( ENOTDIR );
439f6: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &saved );
rtems_filesystem_current = loc;
return 0;
}
439f8: 4e5e unlk %fp <== NOT EXECUTED 439fa: 4e75 rts <== NOT EXECUTED
rtems_filesystem_current = iop->pathinfo;
/* clone the current node */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
/* cloning failed; restore original and bail out */
rtems_filesystem_current = saved;
439fc: 2079 0005 fabc moveal 5fabc <rtems_current_user_env>,%a0 <== NOT EXECUTED 43a02: 5888 addql #4,%a0 <== NOT EXECUTED 43a04: 2245 moveal %d5,%a1 <== NOT EXECUTED 43a06: 2a44 moveal %d4,%a5 <== NOT EXECUTED
return -1;
43a08: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_current = iop->pathinfo;
/* clone the current node */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
/* cloning failed; restore original and bail out */
rtems_filesystem_current = saved;
43a0a: 20d4 movel %a4@,%a0@+ <== NOT EXECUTED 43a0c: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED 43a0e: 2243 moveal %d3,%a1 <== NOT EXECUTED 43a10: 20d5 movel %a5@,%a0@+ <== NOT EXECUTED 43a12: 2a42 moveal %d2,%a5 <== NOT EXECUTED 43a14: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED 43a16: 2095 movel %a5@,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &saved );
rtems_filesystem_current = loc;
return 0;
}
43a18: 4cee 3c7c ffb4 moveml %fp@(-76),%d2-%d6/%a2-%a5 <== NOT EXECUTED 43a1e: 4e5e unlk %fp <== NOT EXECUTED 43a20: 4e75 rts <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc, saved;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43a22: 4eb9 0004 f938 jsr 4f938 <__errno> <== NOT EXECUTED 43a28: 7609 moveq #9,%d3 <== NOT EXECUTED 43a2a: 2040 moveal %d0,%a0 <== NOT EXECUTED 43a2c: 70ff moveq #-1,%d0 <== NOT EXECUTED 43a2e: 2083 movel %d3,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &saved );
rtems_filesystem_current = loc;
return 0;
}
43a30: 4cee 3c7c ffb4 moveml %fp@(-76),%d2-%d6/%a2-%a5 <== NOT EXECUTED 43a36: 4e5e unlk %fp <== NOT EXECUTED 43a38: 4e75 rts <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
43a3a: 4eb9 0004 f938 jsr 4f938 <__errno> <== NOT EXECUTED 43a40: 7416 moveq #22,%d2 <== NOT EXECUTED 43a42: 2040 moveal %d0,%a0 <== NOT EXECUTED 43a44: 70ff moveq #-1,%d0 <== NOT EXECUTED 43a46: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &saved );
rtems_filesystem_current = loc;
return 0;
}
43a48: 4cee 3c7c ffb4 moveml %fp@(-76),%d2-%d6/%a2-%a5 <== NOT EXECUTED 43a4e: 4e5e unlk %fp <== NOT EXECUTED
...
00043a54 <fchmod>:
int fchmod(
int fd,
mode_t mode
)
{
43a54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43a58: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 43a5c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 43a60: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
43a62: b0b9 0005 f8a4 cmpl 5f8a4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 43a68: 643a bccs 43aa4 <fchmod+0x50> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
43a6a: 2400 movel %d0,%d2 <== NOT EXECUTED 43a6c: ed88 lsll #6,%d0 <== NOT EXECUTED 43a6e: e78a lsll #3,%d2 <== NOT EXECUTED 43a70: 2079 0006 10a4 moveal 610a4 <rtems_libio_iops>,%a0 <== NOT EXECUTED 43a76: 9082 subl %d2,%d0 <== NOT EXECUTED 43a78: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43a7a: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED 43a7e: 0800 0008 btst #8,%d0 <== NOT EXECUTED 43a82: 6720 beqs 43aa4 <fchmod+0x50> <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43a84: 44c0 movew %d0,%ccr <== NOT EXECUTED 43a86: 6632 bnes 43aba <fchmod+0x66> <== NOT EXECUTED
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
43a88: 2268 0020 moveal %a0@(32),%a1 <== NOT EXECUTED 43a8c: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED 43a90: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED 43a94: 2269 001c moveal %a1@(28),%a1 <== NOT EXECUTED
}
43a98: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
43a9c: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
43aa0: 4e5e unlk %fp <== NOT EXECUTED
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
43aa2: 4ed1 jmp %a1@ <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43aa4: 4eb9 0004 f938 jsr 4f938 <__errno> <== NOT EXECUTED
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
}
43aaa: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43aae: 2040 moveal %d0,%a0 <== NOT EXECUTED 43ab0: 7209 moveq #9,%d1 <== NOT EXECUTED
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
}
43ab2: 70ff moveq #-1,%d0 <== NOT EXECUTED 43ab4: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43ab6: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
}
43ab8: 4e75 rts <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43aba: 4eb9 0004 f938 jsr 4f938 <__errno> <== NOT EXECUTED
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
}
43ac0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43ac4: 2040 moveal %d0,%a0 <== NOT EXECUTED 43ac6: 7016 moveq #22,%d0 <== NOT EXECUTED
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
}
43ac8: 4e5e unlk %fp <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43aca: 2080 movel %d0,%a0@ <== NOT EXECUTED
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
}
43acc: 70ff moveq #-1,%d0 <== NOT EXECUTED
00043ad0 <fchown>:
int fchown(
int fd,
uid_t owner,
gid_t group
)
{
43ad0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43ad4: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED 43ad8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43ada: 322e 0012 movew %fp@(18),%d1 <== NOT EXECUTED 43ade: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43ae0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
43ae4: b4b9 0005 f8a4 cmpl 5f8a4 <rtems_libio_number_iops>,%d2 <== NOT EXECUTED 43aea: 644e bccs 43b3a <fchown+0x6a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
43aec: 2602 movel %d2,%d3 <== NOT EXECUTED 43aee: ed8a lsll #6,%d2 <== NOT EXECUTED 43af0: e78b lsll #3,%d3 <== NOT EXECUTED 43af2: 2079 0006 10a4 moveal 610a4 <rtems_libio_iops>,%a0 <== NOT EXECUTED 43af8: 9483 subl %d3,%d2 <== NOT EXECUTED 43afa: d1c2 addal %d2,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43afc: 2428 0014 movel %a0@(20),%d2 <== NOT EXECUTED 43b00: 0802 0008 btst #8,%d2 <== NOT EXECUTED 43b04: 6734 beqs 43b3a <fchown+0x6a> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43b06: 44c2 movew %d2,%ccr <== NOT EXECUTED 43b08: 664a bnes 43b54 <fchown+0x84> <== NOT EXECUTED
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
43b0a: 2268 0024 moveal %a0@(36),%a1 <== NOT EXECUTED 43b0e: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED 43b12: 2269 0018 moveal %a1@(24),%a1 <== NOT EXECUTED 43b16: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 43b1c: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
}
43b22: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 43b26: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
43b2a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED 43b2e: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED 43b32: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
43b36: 4e5e unlk %fp <== NOT EXECUTED
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
43b38: 4ed1 jmp %a1@ <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43b3a: 4eb9 0004 f938 jsr 4f938 <__errno> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
}
43b40: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43b44: 2040 moveal %d0,%a0 <== NOT EXECUTED 43b46: 7209 moveq #9,%d1 <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
}
43b48: 70ff moveq #-1,%d0 <== NOT EXECUTED 43b4a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 43b4e: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43b50: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
}
43b52: 4e75 rts <== NOT EXECUTED
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43b54: 4eb9 0004 f938 jsr 4f938 <__errno> <== NOT EXECUTED
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
}
43b5a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43b5e: 2040 moveal %d0,%a0 <== NOT EXECUTED 43b60: 7016 moveq #22,%d0 <== NOT EXECUTED
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
}
43b62: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 43b66: 4e5e unlk %fp <== NOT EXECUTED
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43b68: 2080 movel %d0,%a0@ <== NOT EXECUTED
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
}
43b6a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
000437cc <fcntl>:
int fcntl(
int fd,
int cmd,
...
)
{
437cc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 437d0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
int ret; va_list ap; va_start( ap, cmd );
437d4: 41ee 0010 lea %fp@(16),%a0 <== NOT EXECUTED
int fcntl(
int fd,
int cmd,
...
)
{
437d8: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 437dc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
int fd2;
int flags;
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
437e0: 2239 0006 0074 movel 60074 <rtems_libio_number_iops>,%d1 <== NOT EXECUTED 437e6: b280 cmpl %d0,%d1 <== NOT EXECUTED 437e8: 6300 0188 blsw 43972 <fcntl+0x1a6> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
437ec: 2600 movel %d0,%d3 <== NOT EXECUTED 437ee: ed88 lsll #6,%d0 <== NOT EXECUTED 437f0: e78b lsll #3,%d3 <== NOT EXECUTED 437f2: 2279 0006 1874 moveal 61874 <rtems_libio_iops>,%a1 <== NOT EXECUTED 437f8: 9083 subl %d3,%d0 <== NOT EXECUTED 437fa: 45f1 0800 lea %a1@(00000000,%d0:l),%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
437fe: 282a 0014 movel %a2@(20),%d4 <== NOT EXECUTED 43802: 0804 0008 btst #8,%d4 <== NOT EXECUTED 43806: 6700 016a beqw 43972 <fcntl+0x1a6> <== NOT EXECUTED
/*
* This switch should contain all the cases from POSIX.
*/
switch ( cmd ) {
4380a: 7009 moveq #9,%d0 <== NOT EXECUTED 4380c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4380e: 641a bccs 4382a <fcntl+0x5e> <== NOT EXECUTED
errno = ENOTSUP;
ret = -1;
break;
default:
errno = EINVAL;
43810: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED 43816: 2040 moveal %d0,%a0 <== NOT EXECUTED 43818: 7016 moveq #22,%d0 <== NOT EXECUTED 4381a: 2080 movel %d0,%a0@ <== NOT EXECUTED
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
4381c: 76ff moveq #-1,%d3 <== NOT EXECUTED
va_list ap; va_start( ap, cmd ); ret = vfcntl(fd,cmd,ap); va_end(ap); return ret; }
4381e: 2003 movel %d3,%d0 <== NOT EXECUTED 43820: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 43826: 4e5e unlk %fp <== NOT EXECUTED 43828: 4e75 rts <== NOT EXECUTED
/*
* This switch should contain all the cases from POSIX.
*/
switch ( cmd ) {
4382a: 303b 2a08 movew %pc@(43834 <fcntl+0x68>,%d2:l:2),%d0 <== NOT EXECUTED 4382e: 48c0 extl %d0 <== NOT EXECUTED 43830: 4efb 0802 jmp %pc@(43834 <fcntl+0x68>,%d0:l) <== NOT EXECUTED 43834: 00aa 009e 008e oril #10354830,%d2 <== NOT EXECUTED 4383a: 0074 0164 <== NOT EXECUTED 4383c: 0026 046 <== NOT EXECUTED 4383e: 0014 024 <== NOT EXECUTED 43840: 0014 024 <== NOT EXECUTED 43842: 0014 024 <== NOT EXECUTED 43844: 0014 024 <== NOT EXECUTED 43846: 0014 024 <== NOT EXECUTED
errno = ENOTSUP;
ret = -1;
break;
case F_GETOWN: /* for sockets. */
errno = ENOTSUP;
43848: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
4384e: 76ff moveq #-1,%d3 <== NOT EXECUTED
errno = ENOTSUP;
ret = -1;
break;
case F_GETOWN: /* for sockets. */
errno = ENOTSUP;
43850: 2040 moveal %d0,%a0 <== NOT EXECUTED 43852: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED 43858: 60c4 bras 4381e <fcntl+0x52> <== NOT EXECUTED
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 ) );
4385a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
rtems_libio_t *iop; rtems_libio_t *diop; int fd2; int flags; int mask; int ret = 0;
4385c: 4283 clrl %d3 <== NOT EXECUTED
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 ) );
4385e: 4eb9 0004 3e78 jsr 43e78 <rtems_libio_fcntl_flags> <== NOT EXECUTED
/*
* XXX If we are turning on append, should we seek to the end?
*/
iop->flags = (iop->flags & ~mask) | (flags & mask);
43864: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED 43868: 588f addql #4,%sp <== NOT EXECUTED 4386a: 0280 0000 0201 andil #513,%d0 <== NOT EXECUTED 43870: 0281 ffff fdfe andil #-514,%d1 <== NOT EXECUTED 43876: 8081 orl %d1,%d0 <== NOT EXECUTED 43878: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED
* 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)( cmd, iop );
4387c: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED 43880: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43882: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43884: 2068 0030 moveal %a0@(48),%a0 <== NOT EXECUTED 43888: 4e90 jsr %a0@ <== NOT EXECUTED
if (err) {
4388a: 508f addql #8,%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) {
int err = (*iop->pathinfo.handlers->fcntl_h)( cmd, iop );
4388c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (err) {
4388e: 678e beqs 4381e <fcntl+0x52> <== NOT EXECUTED
errno = err;
43890: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED
ret = -1;
43896: 76ff moveq #-1,%d3 <== NOT EXECUTED
*/
if (ret >= 0) {
int err = (*iop->pathinfo.handlers->fcntl_h)( cmd, iop );
if (err) {
errno = err;
43898: 2040 moveal %d0,%a0 <== NOT EXECUTED
va_list ap; va_start( ap, cmd ); ret = vfcntl(fd,cmd,ap); va_end(ap); return ret; }
4389a: 2003 movel %d3,%d0 <== NOT EXECUTED
*/
if (ret >= 0) {
int err = (*iop->pathinfo.handlers->fcntl_h)( cmd, iop );
if (err) {
errno = err;
4389c: 2082 movel %d2,%a0@ <== NOT EXECUTED
va_list ap; va_start( ap, cmd ); ret = vfcntl(fd,cmd,ap); va_end(ap); return ret; }
4389e: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 438a4: 4e5e unlk %fp <== NOT EXECUTED 438a6: 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 );
438a8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 438aa: 4eb9 0004 3eb8 jsr 43eb8 <rtems_libio_to_fcntl_flags> <== NOT EXECUTED 438b0: 588f addql #4,%sp <== NOT EXECUTED 438b2: 2600 movel %d0,%d3 <== NOT EXECUTED
/*
* If we got this far successfully, then we give the optional
* filesystem specific handler a chance to process this.
*/
if (ret >= 0) {
438b4: 6cc6 bges 4387c <fcntl+0xb0> <== NOT EXECUTED
va_list ap; va_start( ap, cmd ); ret = vfcntl(fd,cmd,ap); va_end(ap); return ret; }
438b6: 2003 movel %d3,%d0 <== NOT EXECUTED 438b8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 438be: 4e5e unlk %fp <== NOT EXECUTED 438c0: 4e75 rts <== NOT EXECUTED
* 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 ) )
438c2: 4a90 tstl %a0@ <== NOT EXECUTED 438c4: 6768 beqs 4392e <fcntl+0x162> <== NOT EXECUTED
rtems_libio_t *iop; rtems_libio_t *diop; int fd2; int flags; int mask; int ret = 0;
438c6: 4283 clrl %d3 <== NOT EXECUTED
* processes, then we can ignore this one except to make
* F_GETFD work.
*/
if ( va_arg( ap, int ) )
iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;
438c8: 08c4 000b bset #11,%d4 <== NOT EXECUTED 438cc: 2544 0014 movel %d4,%a2@(20) <== NOT EXECUTED 438d0: 60aa bras 4387c <fcntl+0xb0> <== NOT EXECUTED
diop->pathinfo = iop->pathinfo;
ret = (int) (diop - rtems_libio_iops);
break;
case F_GETFD: /* get f_flags */
ret = ((iop->flags & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0);
438d2: 0804 000b btst #11,%d4 <== NOT EXECUTED 438d6: 56c3 sne %d3 <== NOT EXECUTED 438d8: 49c3 extbl %d3 <== NOT EXECUTED 438da: 4483 negl %d3 <== NOT EXECUTED 438dc: 609e bras 4387c <fcntl+0xb0> <== NOT EXECUTED
* This switch should contain all the cases from POSIX.
*/
switch ( cmd ) {
case F_DUPFD: /* dup */
fd2 = va_arg( ap, int );
438de: 2010 movel %a0@,%d0 <== NOT EXECUTED
if ( fd2 )
438e0: 6700 00aa beqw 4398c <fcntl+0x1c0> <== NOT EXECUTED
diop = rtems_libio_iop( fd2 );
438e4: b081 cmpl %d1,%d0 <== NOT EXECUTED 438e6: 6454 bccs 4393c <fcntl+0x170> <== NOT EXECUTED 438e8: 2200 movel %d0,%d1 <== NOT EXECUTED 438ea: ed88 lsll #6,%d0 <== NOT EXECUTED 438ec: e789 lsll #3,%d1 <== NOT EXECUTED 438ee: 9081 subl %d1,%d0 <== NOT EXECUTED 438f0: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED 438f4: 2608 movel %a0,%d3 <== NOT EXECUTED
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
ret = (int) (diop - rtems_libio_iops);
438f6: 9689 subl %a1,%d3 <== NOT EXECUTED 438f8: e683 asrl #3,%d3 <== NOT EXECUTED 438fa: 203c b6db 6db7 movel #-1227133513,%d0 <== NOT EXECUTED 43900: 4c00 3800 mulsl %d0,%d3 <== NOT EXECUTED
break;
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
43904: 216a 0018 0018 movel %a2@(24),%a0@(24) <== NOT EXECUTED 4390a: 216a 001c 001c movel %a2@(28),%a0@(28) <== NOT EXECUTED 43910: 216a 0020 0020 movel %a2@(32),%a0@(32) <== NOT EXECUTED 43916: 216a 0024 0024 movel %a2@(36),%a0@(36) <== NOT EXECUTED 4391c: 216a 0028 0028 movel %a2@(40),%a0@(40) <== NOT EXECUTED
ret = -1;
break;
}
}
diop->flags = iop->flags;
43922: 2144 0014 movel %d4,%a0@(20) <== NOT EXECUTED
/*
* If we got this far successfully, then we give the optional
* filesystem specific handler a chance to process this.
*/
if (ret >= 0) {
43926: 4a83 tstl %d3 <== NOT EXECUTED 43928: 6c00 ff52 bgew 4387c <fcntl+0xb0> <== NOT EXECUTED 4392c: 6088 bras 438b6 <fcntl+0xea> <== NOT EXECUTED
rtems_libio_t *iop; rtems_libio_t *diop; int fd2; int flags; int mask; int ret = 0;
4392e: 4283 clrl %d3 <== NOT EXECUTED
*/
if ( va_arg( ap, int ) )
iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;
else
iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;
43930: 0884 000b bclr #11,%d4 <== NOT EXECUTED 43934: 2544 0014 movel %d4,%a2@(20) <== NOT EXECUTED 43938: 6000 ff42 braw 4387c <fcntl+0xb0> <== NOT EXECUTED
switch ( cmd ) {
case F_DUPFD: /* dup */
fd2 = va_arg( ap, int );
if ( fd2 )
diop = rtems_libio_iop( fd2 );
4393c: 91c8 subal %a0,%a0 <== NOT EXECUTED 4393e: 4283 clrl %d3 <== NOT EXECUTED
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
ret = (int) (diop - rtems_libio_iops);
43940: 9689 subl %a1,%d3 <== NOT EXECUTED 43942: e683 asrl #3,%d3 <== NOT EXECUTED 43944: 203c b6db 6db7 movel #-1227133513,%d0 <== NOT EXECUTED 4394a: 4c00 3800 mulsl %d0,%d3 <== NOT EXECUTED
break;
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
4394e: 216a 0018 0018 movel %a2@(24),%a0@(24) <== NOT EXECUTED 43954: 216a 001c 001c movel %a2@(28),%a0@(28) <== NOT EXECUTED 4395a: 216a 0020 0020 movel %a2@(32),%a0@(32) <== NOT EXECUTED 43960: 216a 0024 0024 movel %a2@(36),%a0@(36) <== NOT EXECUTED 43966: 216a 0028 0028 movel %a2@(40),%a0@(40) <== NOT EXECUTED
ret = -1;
break;
}
}
diop->flags = iop->flags;
4396c: 2144 0014 movel %d4,%a0@(20) <== NOT EXECUTED 43970: 60b4 bras 43926 <fcntl+0x15a> <== NOT EXECUTED
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43972: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED 43978: 76ff moveq #-1,%d3 <== NOT EXECUTED 4397a: 7209 moveq #9,%d1 <== NOT EXECUTED 4397c: 2040 moveal %d0,%a0 <== NOT EXECUTED
va_list ap; va_start( ap, cmd ); ret = vfcntl(fd,cmd,ap); va_end(ap); return ret; }
4397e: 2003 movel %d3,%d0 <== NOT EXECUTED 43980: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43986: 2081 movel %d1,%a0@ <== NOT EXECUTED
va_list ap; va_start( ap, cmd ); ret = vfcntl(fd,cmd,ap); va_end(ap); return ret; }
43988: 4e5e unlk %fp <== NOT EXECUTED 4398a: 4e75 rts <== NOT EXECUTED
fd2 = va_arg( ap, int );
if ( fd2 )
diop = rtems_libio_iop( fd2 );
else {
/* allocate a file control block */
diop = rtems_libio_allocate();
4398c: 4eb9 0004 3f06 jsr 43f06 <rtems_libio_allocate> <== NOT EXECUTED 43992: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( diop == 0 ) {
43994: 4a80 tstl %d0 <== NOT EXECUTED 43996: 6700 fe84 beqw 4381c <fcntl+0x50> <== NOT EXECUTED 4399a: 282a 0014 movel %a2@(20),%d4 <== NOT EXECUTED 4399e: 2600 movel %d0,%d3 <== NOT EXECUTED
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
ret = (int) (diop - rtems_libio_iops);
439a0: 203c b6db 6db7 movel #-1227133513,%d0 <== NOT EXECUTED
break;
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
439a6: 216a 0018 0018 movel %a2@(24),%a0@(24) <== NOT EXECUTED 439ac: 216a 001c 001c movel %a2@(28),%a0@(28) <== NOT EXECUTED 439b2: 216a 0020 0020 movel %a2@(32),%a0@(32) <== NOT EXECUTED 439b8: 216a 0024 0024 movel %a2@(36),%a0@(36) <== NOT EXECUTED
if ( fd2 )
diop = rtems_libio_iop( fd2 );
else {
/* allocate a file control block */
diop = rtems_libio_allocate();
if ( diop == 0 ) {
439be: 2279 0006 1874 moveal 61874 <rtems_libio_iops>,%a1 <== NOT EXECUTED
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
ret = (int) (diop - rtems_libio_iops);
439c4: 9689 subl %a1,%d3 <== NOT EXECUTED 439c6: e683 asrl #3,%d3 <== NOT EXECUTED 439c8: 4c00 3800 mulsl %d0,%d3 <== NOT EXECUTED
break;
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
439cc: 216a 0028 0028 movel %a2@(40),%a0@(40) <== NOT EXECUTED
ret = -1;
break;
}
}
diop->flags = iop->flags;
439d2: 2144 0014 movel %d4,%a0@(20) <== NOT EXECUTED 439d6: 6000 ff4e braw 43926 <fcntl+0x15a> <== NOT EXECUTED
000439fc <fdatasync>:
#include <rtems/seterr.h>
int fdatasync(
int fd
)
{
439fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43a00: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
43a04: b0b9 0006 0074 cmpl 60074 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 43a0a: 642e bccs 43a3a <fdatasync+0x3e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
43a0c: 2200 movel %d0,%d1 <== NOT EXECUTED 43a0e: ed88 lsll #6,%d0 <== NOT EXECUTED 43a10: e789 lsll #3,%d1 <== NOT EXECUTED 43a12: 2079 0006 1874 moveal 61874 <rtems_libio_iops>,%a0 <== NOT EXECUTED 43a18: 9081 subl %d1,%d0 <== NOT EXECUTED 43a1a: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43a1c: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED 43a20: 0800 0008 btst #8,%d0 <== NOT EXECUTED 43a24: 6714 beqs 43a3a <fdatasync+0x3e> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43a26: 44c0 movew %d0,%ccr <== NOT EXECUTED 43a28: 6622 bnes 43a4c <fdatasync+0x50> <== NOT EXECUTED
/*
* Now process the fdatasync().
*/
return (*iop->pathinfo.handlers->fdatasync_h)( iop );
43a2a: 2268 0020 moveal %a0@(32),%a1 <== NOT EXECUTED 43a2e: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
43a32: 4e5e unlk %fp <== NOT EXECUTED
/*
* Now process the fdatasync().
*/
return (*iop->pathinfo.handlers->fdatasync_h)( iop );
43a34: 2269 002c moveal %a1@(44),%a1 <== NOT EXECUTED 43a38: 4ed1 jmp %a1@ <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43a3a: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED 43a40: 7209 moveq #9,%d1 <== NOT EXECUTED 43a42: 2040 moveal %d0,%a0 <== NOT EXECUTED
/*
* Now process the fdatasync().
*/
return (*iop->pathinfo.handlers->fdatasync_h)( iop );
}
43a44: 70ff moveq #-1,%d0 <== NOT EXECUTED 43a46: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43a48: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* Now process the fdatasync().
*/
return (*iop->pathinfo.handlers->fdatasync_h)( iop );
}
43a4a: 4e75 rts <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43a4c: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED
/*
* Now process the fdatasync().
*/
return (*iop->pathinfo.handlers->fdatasync_h)( iop );
}
43a52: 4e5e unlk %fp <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43a54: 2040 moveal %d0,%a0 <== NOT EXECUTED 43a56: 7016 moveq #22,%d0 <== NOT EXECUTED 43a58: 2080 movel %d0,%a0@ <== NOT EXECUTED
/*
* Now process the fdatasync().
*/
return (*iop->pathinfo.handlers->fdatasync_h)( iop );
}
43a5a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
0004cfc8 <fifo_open>:
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cfc8: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
static rtems_status_code pipe_lock(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (pipe_semaphore == RTEMS_ID_NONE) {
4cfcc: 2039 0006 1e08 movel 61e08 <pipe_semaphore>,%d0 <== NOT EXECUTED
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cfd2: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 4cfd6: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 4cfda: 47f9 0004 8804 lea 48804 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED 4cfe0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
static rtems_status_code pipe_lock(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (pipe_semaphore == RTEMS_ID_NONE) {
4cfe4: 4a80 tstl %d0 <== NOT EXECUTED 4cfe6: 677e beqs 4d066 <fifo_open+0x9e> <== NOT EXECUTED
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4cfe8: 42a7 clrl %sp@- <== NOT EXECUTED 4cfea: 42a7 clrl %sp@- <== NOT EXECUTED 4cfec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cfee: 4e93 jsr %a3@ <== NOT EXECUTED
}
if (sc == RTEMS_SUCCESSFUL) {
4cff0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cff4: 4a80 tstl %d0 <== NOT EXECUTED 4cff6: 6600 0378 bnew 4d370 <fifo_open+0x3a8> <== NOT EXECUTED
err = pipe_lock();
if (err)
return err;
pipe = *pipep;
4cffa: 2a54 moveal %a4@,%a5 <== NOT EXECUTED
if (pipe == NULL) {
4cffc: 4a8d tstl %a5 <== NOT EXECUTED 4cffe: 6700 0118 beqw 4d118 <fifo_open+0x150> <== NOT EXECUTED
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4d002: 42a7 clrl %sp@- <== NOT EXECUTED 4d004: 42a7 clrl %sp@- <== NOT EXECUTED 4d006: 2f2d 0028 movel %a5@(40),%sp@- <== NOT EXECUTED 4d00a: 4e93 jsr %a3@ <== NOT EXECUTED 4d00c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d010: 4a80 tstl %d0 <== NOT EXECUTED 4d012: 6600 0084 bnew 4d098 <fifo_open+0xd0> <== NOT EXECUTED 4d016: 95ca subal %a2,%a2 <== NOT EXECUTED
err = -EINTR;
if (*pipep == NULL) {
4d018: 4a94 tstl %a4@ <== NOT EXECUTED 4d01a: 6700 0310 beqw 4d32c <fifo_open+0x364> <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d01e: 4eba fec4 jsr %pc@(4cee4 <pipe_unlock>) <== NOT EXECUTED
pipe_control_t *pipe;
unsigned int prevCounter;
int err;
err = pipe_new(pipep);
if (err)
4d022: 4a8a tstl %a2 <== NOT EXECUTED 4d024: 6634 bnes 4d05a <fifo_open+0x92> <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
4d026: 7006 moveq #6,%d0 <== NOT EXECUTED 4d028: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d02a: 7204 moveq #4,%d1 <== NOT EXECUTED 4d02c: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
int err;
err = pipe_new(pipep);
if (err)
return err;
pipe = *pipep;
4d030: 2454 moveal %a4@,%a2 <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
4d032: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d034: 6700 027a beqw 4d2b0 <fifo_open+0x2e8> <== NOT EXECUTED 4d038: 123c 0006 moveb #6,%d1 <== NOT EXECUTED 4d03c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d03e: 6700 0220 beqw 4d260 <fifo_open+0x298> <== NOT EXECUTED 4d042: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4d046: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d048: 6756 beqs 4d0a0 <fifo_open+0xd8> <== NOT EXECUTED 4d04a: 4bf9 0004 8944 lea 48944 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d050: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d054: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d056: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d058: 588f addql #4,%sp <== NOT EXECUTED
out_error:
pipe_release(pipep, iop);
return err;
}
4d05a: 200a movel %a2,%d0 <== NOT EXECUTED 4d05c: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4d062: 4e5e unlk %fp <== NOT EXECUTED 4d064: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4d066: 42a7 clrl %sp@- <== NOT EXECUTED 4d068: 42a7 clrl %sp@- <== NOT EXECUTED 4d06a: 2f39 0006 2500 movel 62500 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4d070: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (pipe_semaphore == RTEMS_ID_NONE) {
rtems_libio_lock();
if (pipe_semaphore == RTEMS_ID_NONE) {
4d072: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d076: 4ab9 0006 1e08 tstl 61e08 <pipe_semaphore> <== NOT EXECUTED 4d07c: 6700 02be beqw 4d33c <fifo_open+0x374> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4d080: 2f39 0006 2500 movel 62500 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4d086: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED 4d08c: 2039 0006 1e08 movel 61e08 <pipe_semaphore>,%d0 <== NOT EXECUTED 4d092: 588f addql #4,%sp <== NOT EXECUTED 4d094: 6000 ff52 braw 4cfe8 <fifo_open+0x20> <== NOT EXECUTED
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
err = -EINTR;
4d098: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED 4d09c: 6000 ff7a braw 4d018 <fifo_open+0x50> <== NOT EXECUTED
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4d0a0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4d0a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d0a6: 5288 addql #1,%a0 <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
4d0a8: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4d0ac: 2548 0010 movel %a0,%a2@(16) <== NOT EXECUTED 4d0b0: 4a80 tstl %d0 <== NOT EXECUTED 4d0b2: 6700 02f4 beqw 4d3a8 <fifo_open+0x3e0> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
if (pipe->Writers == 0) {
4d0b6: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4d0ba: 668e bnes 4d04a <fifo_open+0x82> <== NOT EXECUTED
/* Not an error */
if (LIBIO_NODELAY(iop))
4d0bc: 7001 moveq #1,%d0 <== NOT EXECUTED 4d0be: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d0c0: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED 4d0c4: 6684 bnes 4d04a <fifo_open+0x82> <== NOT EXECUTED
break;
prevCounter = pipe->writerCounter;
4d0c6: 282a 0024 movel %a2@(36),%d4 <== NOT EXECUTED 4d0ca: 4bf9 0004 8944 lea 48944 <rtems_semaphore_release>,%a5 <== NOT EXECUTED 4d0d0: 263c 0004 f014 movel #323604,%d3 <== NOT EXECUTED
err = -EINTR;
/* Wait until a writer opens the pipe */
do {
PIPE_UNLOCK(pipe);
4d0d6: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d0da: 4e95 jsr %a5@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4d0dc: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d0de: 42a7 clrl %sp@- <== NOT EXECUTED 4d0e0: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d0e4: 4e90 jsr %a0@ <== NOT EXECUTED 4d0e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0ea: 4a80 tstl %d0 <== NOT EXECUTED 4d0ec: 6600 02ce bnew 4d3bc <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4d0f0: 42a7 clrl %sp@- <== NOT EXECUTED 4d0f2: 42a7 clrl %sp@- <== NOT EXECUTED 4d0f4: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d0f8: 4e93 jsr %a3@ <== NOT EXECUTED 4d0fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0fe: 4a80 tstl %d0 <== NOT EXECUTED 4d100: 6600 02ba bnew 4d3bc <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->writerCounter);
4d104: b8aa 0024 cmpl %a2@(36),%d4 <== NOT EXECUTED 4d108: 67cc beqs 4d0d6 <fifo_open+0x10e> <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d10a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d10e: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d110: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d112: 588f addql #4,%sp <== NOT EXECUTED 4d114: 6000 ff44 braw 4d05a <fifo_open+0x92> <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4d118: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED 4d11c: 45f9 0004 52a8 lea 452a8 <malloc>,%a2 <== NOT EXECUTED 4d122: 4e92 jsr %a2@ <== NOT EXECUTED
if (pipe == NULL)
4d124: 588f addql #4,%sp <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4d126: 2a40 moveal %d0,%a5 <== NOT EXECUTED 4d128: 2600 movel %d0,%d3 <== NOT EXECUTED
if (pipe == NULL)
4d12a: 6700 0330 beqw 4d45c <fifo_open+0x494> <== NOT EXECUTED
return err;
memset(pipe, 0, sizeof(pipe_control_t));
4d12e: 2040 moveal %d0,%a0 <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4d130: 203c 0000 0200 movel #512,%d0 <== NOT EXECUTED
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
if (pipe == NULL)
return err;
memset(pipe, 0, sizeof(pipe_control_t));
4d136: 4298 clrl %a0@+ <== NOT EXECUTED 4d138: 5888 addql #4,%a0 <== NOT EXECUTED 4d13a: 4298 clrl %a0@+ <== NOT EXECUTED 4d13c: 4298 clrl %a0@+ <== NOT EXECUTED 4d13e: 4298 clrl %a0@+ <== NOT EXECUTED 4d140: 4298 clrl %a0@+ <== NOT EXECUTED 4d142: 4298 clrl %a0@+ <== NOT EXECUTED 4d144: 4298 clrl %a0@+ <== NOT EXECUTED 4d146: 4298 clrl %a0@+ <== NOT EXECUTED 4d148: 4298 clrl %a0@+ <== NOT EXECUTED 4d14a: 4298 clrl %a0@+ <== NOT EXECUTED 4d14c: 4298 clrl %a0@+ <== NOT EXECUTED 4d14e: 4290 clrl %a0@ <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4d150: 2b40 0004 movel %d0,%a5@(4) <== NOT EXECUTED
pipe->Buffer = malloc(pipe->Size);
4d154: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb> <== NOT EXECUTED 4d158: 4e92 jsr %a2@ <== NOT EXECUTED
if (! pipe->Buffer)
4d15a: 588f addql #4,%sp <== NOT EXECUTED 4d15c: 45f9 0004 4a90 lea 44a90 <free>,%a2 <== NOT EXECUTED
if (pipe == NULL)
return err;
memset(pipe, 0, sizeof(pipe_control_t));
pipe->Size = PIPE_BUF;
pipe->Buffer = malloc(pipe->Size);
4d162: 2a80 movel %d0,%a5@ <== NOT EXECUTED
if (! pipe->Buffer)
4d164: 6700 02f0 beqw 4d456 <fifo_open+0x48e> <== NOT EXECUTED
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d168: 486d 002c pea %a5@(44) <== NOT EXECUTED 4d16c: 45f9 0004 ee04 lea 4ee04 <rtems_barrier_create>,%a2 <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4d172: 1039 0006 0ef0 moveb 60ef0 <c.6386>,%d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d178: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4d17a: 49c0 extbl %d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d17c: 42a7 clrl %sp@- <== NOT EXECUTED 4d17e: 0080 5049 7200 oril #1346990592,%d0 <== NOT EXECUTED 4d184: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d186: 4e92 jsr %a2@ <== NOT EXECUTED 4d188: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d18c: 4a80 tstl %d0 <== NOT EXECUTED 4d18e: 6600 02b8 bnew 4d448 <fifo_open+0x480> <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->readBarrier) != RTEMS_SUCCESSFUL)
goto err_rbar;
if (rtems_barrier_create(
4d192: 486d 0030 pea %a5@(48) <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4d196: 1039 0006 0ef0 moveb 60ef0 <c.6386>,%d0 <== NOT EXECUTED
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(
4d19c: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4d19e: 49c0 extbl %d0 <== NOT EXECUTED
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(
4d1a0: 42a7 clrl %sp@- <== NOT EXECUTED 4d1a2: 0080 5049 7700 oril #1346991872,%d0 <== NOT EXECUTED 4d1a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d1aa: 4e92 jsr %a2@ <== NOT EXECUTED 4d1ac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d1b0: 45f9 0004 eefc lea 4eefc <rtems_barrier_delete>,%a2 <== NOT EXECUTED 4d1b6: 4a80 tstl %d0 <== NOT EXECUTED 4d1b8: 6600 0284 bnew 4d43e <fifo_open+0x476> <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->writeBarrier) != RTEMS_SUCCESSFUL)
goto err_wbar;
if (rtems_semaphore_create(
4d1bc: 486d 0028 pea %a5@(40) <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4d1c0: 1039 0006 0ef0 moveb 60ef0 <c.6386>,%d0 <== NOT EXECUTED
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(
4d1c6: 42a7 clrl %sp@- <== NOT EXECUTED 4d1c8: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4d1cc: 49c0 extbl %d0 <== NOT EXECUTED
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(
4d1ce: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4d1d2: 0080 5049 7300 oril #1346990848,%d0 <== NOT EXECUTED 4d1d8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d1da: 4eb9 0004 8568 jsr 48568 <rtems_semaphore_create> <== NOT EXECUTED 4d1e0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4d1e4: 4a80 tstl %d0 <== NOT EXECUTED 4d1e6: 6600 0248 bnew 4d430 <fifo_open+0x468> <== NOT EXECUTED
/* Set barriers to be interruptible by signals. */
static void pipe_interruptible(pipe_control_t *pipe)
{
Objects_Locations location;
_Barrier_Get(pipe->readBarrier, &location)->Barrier.Wait_queue.state
4d1ea: 280e movel %fp,%d4 <== NOT EXECUTED 4d1ec: 5184 subql #8,%d4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4d1ee: 263c 0004 a114 movel #303380,%d3 <== NOT EXECUTED 4d1f4: 2043 moveal %d3,%a0 <== NOT EXECUTED
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
_Thread_Enable_dispatch();
4d1f6: 45f9 0004 a9d2 lea 4a9d2 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 4d1fc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d1fe: 2f2d 002c movel %a5@(44),%sp@- <== NOT EXECUTED 4d202: 4879 0006 2e8e pea 62e8e <_Barrier_Information> <== NOT EXECUTED 4d208: 4e90 jsr %a0@ <== NOT EXECUTED
static void pipe_interruptible(pipe_control_t *pipe)
{
Objects_Locations location;
_Barrier_Get(pipe->readBarrier, &location)->Barrier.Wait_queue.state
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
4d20a: 223c 1000 0000 movel #268435456,%d1 <== NOT EXECUTED 4d210: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d212: 83a8 004c orl %d1,%a0@(76) <== NOT EXECUTED
_Thread_Enable_dispatch();
4d216: 4e92 jsr %a2@ <== NOT EXECUTED 4d218: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d21a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d21c: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED 4d220: 4879 0006 2e8e pea 62e8e <_Barrier_Information> <== NOT EXECUTED 4d226: 4e90 jsr %a0@ <== NOT EXECUTED
_Barrier_Get(pipe->writeBarrier, &location)->Barrier.Wait_queue.state
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
4d228: 223c 1000 0000 movel #268435456,%d1 <== NOT EXECUTED 4d22e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d230: 83a8 004c orl %d1,%a0@(76) <== NOT EXECUTED
_Thread_Enable_dispatch();
4d234: 4e92 jsr %a2@ <== NOT EXECUTED
#ifdef RTEMS_POSIX_API
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
4d236: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4d23a: 1039 0006 0ef0 moveb 60ef0 <c.6386>,%d0 <== NOT EXECUTED 4d240: 49c0 extbl %d0 <== NOT EXECUTED 4d242: 2200 movel %d0,%d1 <== NOT EXECUTED 4d244: 5281 addql #1,%d1 <== NOT EXECUTED 4d246: 13c1 0006 0ef0 moveb %d1,60ef0 <c.6386> <== NOT EXECUTED 4d24c: 727a moveq #122,%d1 <== NOT EXECUTED 4d24e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d250: 6600 fdb0 bnew 4d002 <fifo_open+0x3a> <== NOT EXECUTED
c = 'a';
4d254: 7061 moveq #97,%d0 <== NOT EXECUTED 4d256: 13c0 0006 0ef0 moveb %d0,60ef0 <c.6386> <== NOT EXECUTED 4d25c: 6000 fda4 braw 4d002 <fifo_open+0x3a> <== NOT EXECUTED
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4d260: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4d264: 2200 movel %d0,%d1 <== NOT EXECUTED 4d266: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->readerCounter);
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
4d268: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4d26c: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED 4d270: 4a80 tstl %d0 <== NOT EXECUTED 4d272: 6700 0120 beqw 4d394 <fifo_open+0x3cc> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4d276: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d27a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d27c: 5288 addql #1,%a0 <== NOT EXECUTED
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
4d27e: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED 4d282: 4bf9 0004 8944 lea 48944 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4d288: 2548 0014 movel %a0,%a2@(20) <== NOT EXECUTED 4d28c: 4a80 tstl %d0 <== NOT EXECUTED 4d28e: 6600 fdc0 bnew 4d050 <fifo_open+0x88> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4d292: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d296: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d29a: 4eb9 0004 ef9c jsr 4ef9c <rtems_barrier_release> <== NOT EXECUTED 4d2a0: 508f addql #8,%sp <== NOT EXECUTED
break;
}
PIPE_UNLOCK(pipe);
4d2a2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d2a6: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d2a8: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d2aa: 588f addql #4,%sp <== NOT EXECUTED 4d2ac: 6000 fdac braw 4d05a <fifo_open+0x92> <== NOT EXECUTED
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4d2b0: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d2b4: 2200 movel %d0,%d1 <== NOT EXECUTED 4d2b6: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->writerCounter);
}
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
4d2b8: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4d2bc: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED 4d2c0: 4a80 tstl %d0 <== NOT EXECUTED 4d2c2: 6700 00bc beqw 4d380 <fifo_open+0x3b8> <== NOT EXECUTED 4d2c6: 4bf9 0004 8944 lea 48944 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
4d2cc: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d2d0: 6600 fd7e bnew 4d050 <fifo_open+0x88> <== NOT EXECUTED 4d2d4: 7001 moveq #1,%d0 <== NOT EXECUTED 4d2d6: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d2d8: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED 4d2dc: 6600 0138 bnew 4d416 <fifo_open+0x44e> <== NOT EXECUTED
err = -ENXIO;
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
4d2e0: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED 4d2e4: 263c 0004 f014 movel #323604,%d3 <== NOT EXECUTED
err = -EINTR;
do {
PIPE_UNLOCK(pipe);
4d2ea: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d2ee: 4e95 jsr %a5@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4d2f0: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d2f2: 42a7 clrl %sp@- <== NOT EXECUTED 4d2f4: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d2f8: 4e90 jsr %a0@ <== NOT EXECUTED 4d2fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d2fe: 4a80 tstl %d0 <== NOT EXECUTED 4d300: 6600 00ba bnew 4d3bc <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4d304: 42a7 clrl %sp@- <== NOT EXECUTED 4d306: 42a7 clrl %sp@- <== NOT EXECUTED 4d308: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d30c: 4e93 jsr %a3@ <== NOT EXECUTED 4d30e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d312: 4a80 tstl %d0 <== NOT EXECUTED 4d314: 6600 00a6 bnew 4d3bc <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->readerCounter);
4d318: b8aa 0020 cmpl %a2@(32),%d4 <== NOT EXECUTED 4d31c: 67cc beqs 4d2ea <fifo_open+0x322> <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d31e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d322: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d324: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d326: 588f addql #4,%sp <== NOT EXECUTED 4d328: 6000 fd30 braw 4d05a <fifo_open+0x92> <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
err = -EINTR;
if (*pipep == NULL) {
if (err)
4d32c: 4a8a tstl %a2 <== NOT EXECUTED 4d32e: 6600 00a8 bnew 4d3d8 <fifo_open+0x410> <== NOT EXECUTED
pipe_free(pipe);
else
*pipep = pipe;
4d332: 288d movel %a5,%a4@ <== NOT EXECUTED
}
out:
pipe_unlock();
4d334: 4eba fbae jsr %pc@(4cee4 <pipe_unlock>) <== NOT EXECUTED 4d338: 6000 fcec braw 4d026 <fifo_open+0x5e> <== NOT EXECUTED
if (pipe_semaphore == RTEMS_ID_NONE) {
rtems_libio_lock();
if (pipe_semaphore == RTEMS_ID_NONE) {
sc = rtems_semaphore_create(
4d33c: 4879 0006 1e08 pea 61e08 <pipe_semaphore> <== NOT EXECUTED 4d342: 42a7 clrl %sp@- <== NOT EXECUTED 4d344: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f> <== NOT EXECUTED 4d348: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4d34c: 2f3c 5049 5045 movel #1346981957,%sp@- <== NOT EXECUTED 4d352: 4eb9 0004 8568 jsr 48568 <rtems_semaphore_create> <== NOT EXECUTED 4d358: 2f39 0006 2500 movel 62500 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4d35e: 2600 movel %d0,%d3 <== NOT EXECUTED 4d360: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d366: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4d36a: 4a83 tstl %d3 <== NOT EXECUTED 4d36c: 6700 00f8 beqw 4d466 <fifo_open+0x49e> <== NOT EXECUTED
)
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
4d370: 347c fff4 moveaw #-12,%a2 <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d374: 200a movel %a2,%d0 <== NOT EXECUTED 4d376: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4d37c: 4e5e unlk %fp <== NOT EXECUTED 4d37e: 4e75 rts <== NOT EXECUTED
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
4d380: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d384: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d388: 4eb9 0004 ef9c jsr 4ef9c <rtems_barrier_release> <== NOT EXECUTED 4d38e: 508f addql #8,%sp <== NOT EXECUTED 4d390: 6000 ff34 braw 4d2c6 <fifo_open+0x2fe> <== NOT EXECUTED
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4d394: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d398: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d39c: 4eb9 0004 ef9c jsr 4ef9c <rtems_barrier_release> <== NOT EXECUTED 4d3a2: 508f addql #8,%sp <== NOT EXECUTED 4d3a4: 6000 fed0 braw 4d276 <fifo_open+0x2ae> <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4d3a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d3ac: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d3b0: 4eb9 0004 ef9c jsr 4ef9c <rtems_barrier_release> <== NOT EXECUTED 4d3b6: 508f addql #8,%sp <== NOT EXECUTED 4d3b8: 6000 fcfc braw 4d0b6 <fifo_open+0xee> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d3bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
err = -EINTR;
4d3be: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d3c2: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d3c4: 4eb9 0004 cefa jsr 4cefa <pipe_release> <== NOT EXECUTED
return err;
4d3ca: 508f addql #8,%sp <== NOT EXECUTED
}
4d3cc: 200a movel %a2,%d0 <== NOT EXECUTED 4d3ce: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4d3d4: 4e5e unlk %fp <== NOT EXECUTED 4d3d6: 4e75 rts <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d3d8: 2f2d 002c movel %a5@(44),%sp@- <== NOT EXECUTED 4d3dc: 49f9 0004 eefc lea 4eefc <rtems_barrier_delete>,%a4 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier); rtems_semaphore_delete(pipe->Semaphore); free(pipe->Buffer);
4d3e2: 47f9 0004 4a90 lea 44a90 <free>,%a3 <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d3e8: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4d3ea: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED 4d3ee: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4d3f0: 2f2d 0028 movel %a5@(40),%sp@- <== NOT EXECUTED 4d3f4: 4eb9 0004 872c jsr 4872c <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4d3fa: 2f15 movel %a5@,%sp@- <== NOT EXECUTED 4d3fc: 4e93 jsr %a3@ <== NOT EXECUTED
free(pipe);
4d3fe: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4d400: 4e93 jsr %a3@ <== NOT EXECUTED 4d402: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d406: 4eba fadc jsr %pc@(4cee4 <pipe_unlock>) <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d40a: 200a movel %a2,%d0 <== NOT EXECUTED 4d40c: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4d412: 4e5e unlk %fp <== NOT EXECUTED 4d414: 4e75 rts <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4d416: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
err = -ENXIO;
4d41a: 347c fffa moveaw #-6,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4d41e: 4e95 jsr %a5@ <== NOT EXECUTED
err = -ENXIO;
goto out_error;
4d420: 588f addql #4,%sp <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d422: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d424: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d426: 4eb9 0004 cefa jsr 4cefa <pipe_release> <== NOT EXECUTED
return err;
4d42c: 508f addql #8,%sp <== NOT EXECUTED 4d42e: 609c bras 4d3cc <fifo_open+0x404> <== NOT EXECUTED
if (c ++ == 'z')
c = 'a';
return 0;
err_sem:
rtems_barrier_delete(pipe->writeBarrier);
4d430: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED 4d434: 45f9 0004 eefc lea 4eefc <rtems_barrier_delete>,%a2 <== NOT EXECUTED 4d43a: 4e92 jsr %a2@ <== NOT EXECUTED 4d43c: 588f addql #4,%sp <== NOT EXECUTED
err_wbar: rtems_barrier_delete(pipe->readBarrier);
4d43e: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d440: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED 4d444: 4e92 jsr %a2@ <== NOT EXECUTED 4d446: 588f addql #4,%sp <== NOT EXECUTED
err_rbar: free(pipe->Buffer);
4d448: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d44a: 45f9 0004 4a90 lea 44a90 <free>,%a2 <== NOT EXECUTED 4d450: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d452: 4e92 jsr %a2@ <== NOT EXECUTED 4d454: 588f addql #4,%sp <== NOT EXECUTED
err_buf: free(pipe);
4d456: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d458: 4e92 jsr %a2@ <== NOT EXECUTED 4d45a: 588f addql #4,%sp <== NOT EXECUTED
)
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
4d45c: 347c fff4 moveaw #-12,%a2 <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d460: 4eba fa82 jsr %pc@(4cee4 <pipe_unlock>) <== NOT EXECUTED 4d464: 60a4 bras 4d40a <fifo_open+0x442> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d466: 2039 0006 1e08 movel 61e08 <pipe_semaphore>,%d0 <== NOT EXECUTED 4d46c: 6000 fb7a braw 4cfe8 <fifo_open+0x20> <== NOT EXECUTED
0004b35c <find_handler>:
const char *type;
rtems_filesystem_fsmount_me_t mount_h;
} find_arg;
static bool find_handler(const rtems_filesystem_table_t *entry, void *arg)
{
4b35c: 4e56 0000 linkw %fp,#0 4b360: 2f0b movel %a3,%sp@- 4b362: 266e 0008 moveal %fp@(8),%a3 4b366: 2f0a movel %a2,%sp@- 4b368: 246e 000c moveal %fp@(12),%a2
find_arg *fa = arg;
if ( strcmp( entry->type, fa->type ) != 0 ) {
4b36c: 2f12 movel %a2@,%sp@- 4b36e: 2f13 movel %a3@,%sp@- 4b370: 4eb9 0004 f80c jsr 4f80c <strcmp> 4b376: 508f addql #8,%sp 4b378: 4a80 tstl %d0
4b37a: 6614 bnes 4b390 <find_handler+0x34> <== NEVER TAKEN
return false;
} else {
fa->mount_h = entry->mount_h;
4b37c: 256b 0004 0004 movel %a3@(4),%a2@(4)
return true;
}
}
4b382: 246e fff8 moveal %fp@(-8),%a2 4b386: 266e fffc moveal %fp@(-4),%a3 4b38a: 4e5e unlk %fp
if ( strcmp( entry->type, fa->type ) != 0 ) {
return false;
} else {
fa->mount_h = entry->mount_h;
return true;
4b38c: 7001 moveq #1,%d0
} }
4b38e: 4e75 rts
4b390: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4b394: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4b398: 4e5e unlk %fp <== NOT EXECUTED
static bool find_handler(const rtems_filesystem_table_t *entry, void *arg)
{
find_arg *fa = arg;
if ( strcmp( entry->type, fa->type ) != 0 ) {
return false;
4b39a: 4200 clrb %d0 <== NOT EXECUTED
} else {
fa->mount_h = entry->mount_h;
return true;
}
}
00042dc8 <flockfile>:
#include <stdio.h>
/* This is a non-functional stub */
void flockfile(FILE* file)
{
42dc8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
}
42dcc: 4e5e unlk %fp <== NOT EXECUTED
000461f4 <fork>:
#include <sys/types.h>
#include <errno.h>
#include <rtems/seterr.h>
int fork( void )
{
461f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
461f8: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 461fe: 7258 moveq #88,%d1 <== NOT EXECUTED 46200: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46202: 70ff moveq #-1,%d0 <== NOT EXECUTED 46204: 4e5e unlk %fp <== NOT EXECUTED
#include <errno.h>
#include <rtems/seterr.h>
int fork( void )
{
rtems_set_errno_and_return_minus_one( ENOSYS );
46206: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00043a60 <fpathconf>:
long fpathconf(
int fd,
int name
)
{
43a60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43a64: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 43a68: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 43a6c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
long return_value;
rtems_libio_t *iop;
rtems_filesystem_limits_and_options_t *the_limits;
rtems_libio_check_fd(fd);
43a6e: b0b9 0006 0074 cmpl 60074 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 43a74: 6400 00f6 bccw 43b6c <fpathconf+0x10c> <== NOT EXECUTED
iop = rtems_libio_iop(fd);
43a78: 2400 movel %d0,%d2 <== NOT EXECUTED 43a7a: ed88 lsll #6,%d0 <== NOT EXECUTED 43a7c: e78a lsll #3,%d2 <== NOT EXECUTED 43a7e: 2079 0006 1874 moveal 61874 <rtems_libio_iops>,%a0 <== NOT EXECUTED 43a84: 9082 subl %d2,%d0 <== NOT EXECUTED 43a86: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43a88: 2428 0014 movel %a0@(20),%d2 <== NOT EXECUTED 43a8c: 0802 0008 btst #8,%d2 <== NOT EXECUTED 43a90: 6700 00da beqw 43b6c <fpathconf+0x10c> <== NOT EXECUTED
rtems_libio_check_permissions(iop, LIBIO_FLAGS_READ);
43a94: 0802 0001 btst #1,%d2 <== NOT EXECUTED 43a98: 670a beqs 43aa4 <fpathconf+0x44> <== NOT EXECUTED
/*
* Now process the information request.
*/
the_limits = &iop->pathinfo.mt_entry->pathconf_limits_and_options;
43a9a: 2068 0028 moveal %a0@(40),%a0 <== NOT EXECUTED
switch ( name ) {
43a9e: 700b moveq #11,%d0 <== NOT EXECUTED 43aa0: b081 cmpl %d1,%d0 <== NOT EXECUTED 43aa2: 6416 bccs 43aba <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 );
43aa4: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED
break;
}
return return_value;
}
43aaa: 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 );
43aae: 2040 moveal %d0,%a0 <== NOT EXECUTED 43ab0: 7216 moveq #22,%d1 <== NOT EXECUTED 43ab2: 70ff moveq #-1,%d0 <== NOT EXECUTED
break;
}
return return_value;
}
43ab4: 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 );
43ab6: 2081 movel %d1,%a0@ <== NOT EXECUTED
break;
}
return return_value;
}
43ab8: 4e75 rts <== NOT EXECUTED
* Now process the information request.
*/
the_limits = &iop->pathinfo.mt_entry->pathconf_limits_and_options;
switch ( name ) {
43aba: 303b 1a08 movew %pc@(43ac4 <fpathconf+0x64>,%d1:l:2),%d0<== NOT EXECUTED 43abe: 48c0 extl %d0 <== NOT EXECUTED 43ac0: 4efb 0802 jmp %pc@(43ac4 <fpathconf+0x64>,%d0:l) <== NOT EXECUTED 43ac4: 0090 0084 0078 oril #8650872,%d0 <== NOT EXECUTED 43aca: 006c 0154 <== NOT EXECUTED 43acc: 0060 0140 <== NOT EXECUTED 43ace: 0054 0124 <== NOT EXECUTED 43ad0: 0048 0110 <== NOT EXECUTED 43ad2: 003c 074 <== NOT EXECUTED 43ad4: 0030 060 <== NOT EXECUTED 43ad6: 0024 044 <== NOT EXECUTED 43ad8: 0018 030 <== NOT EXECUTED 43ada: 009c 242e fffc oril #607059964,%d4 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43ae0: 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;
43ae2: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43ae6: 4e75 rts <== NOT EXECUTED 43ae8: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43aec: 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;
43aee: 2028 0050 movel %a0@(80),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43af2: 4e75 rts <== NOT EXECUTED 43af4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43af8: 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;
43afa: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43afe: 4e75 rts <== NOT EXECUTED 43b00: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b04: 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;
43b06: 2028 0058 movel %a0@(88),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b0a: 4e75 rts <== NOT EXECUTED 43b0c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b10: 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;
43b12: 2028 0054 movel %a0@(84),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b16: 4e75 rts <== NOT EXECUTED 43b18: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b1c: 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;
43b1e: 2028 004c movel %a0@(76),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b22: 4e75 rts <== NOT EXECUTED 43b24: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b28: 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;
43b2a: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b2e: 4e75 rts <== NOT EXECUTED 43b30: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b34: 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;
43b36: 2028 0044 movel %a0@(68),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b3a: 4e75 rts <== NOT EXECUTED 43b3c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b40: 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;
43b42: 2028 0040 movel %a0@(64),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b46: 4e75 rts <== NOT EXECUTED 43b48: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b4c: 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;
43b4e: 2028 003c movel %a0@(60),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b52: 4e75 rts <== NOT EXECUTED 43b54: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b58: 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;
43b5a: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b5e: 4e75 rts <== NOT EXECUTED 43b60: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b64: 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;
43b66: 2028 0060 movel %a0@(96),%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b6a: 4e75 rts <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_limits_and_options_t *the_limits;
rtems_libio_check_fd(fd);
iop = rtems_libio_iop(fd);
rtems_libio_check_is_open(iop);
43b6c: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED 43b72: 7409 moveq #9,%d2 <== NOT EXECUTED 43b74: 2040 moveal %d0,%a0 <== NOT EXECUTED 43b76: 70ff moveq #-1,%d0 <== NOT EXECUTED 43b78: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return return_value;
}
43b7a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43b7e: 4e5e unlk %fp <== NOT EXECUTED
...
00042cfc <free>:
#include <stdlib.h>
void free(
void *ptr
)
{
42cfc: 4e56 0000 linkw %fp,#0
MSBUMP(free_calls, 1);
42d00: 52b9 0005 fb58 addql #1,5fb58 <rtems_malloc_statistics+0xc>
#include <stdlib.h>
void free(
void *ptr
)
{
42d06: 2f02 movel %d2,%sp@- 42d08: 242e 0008 movel %fp@(8),%d2
MSBUMP(free_calls, 1);
if ( !ptr )
42d0c: 6732 beqs 42d40 <free+0x44> <== NEVER TAKEN
return;
/*
* Do not attempt to free memory if in a critical section or ISR.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
42d0e: 7003 moveq #3,%d0 42d10: b0b9 0005 fdfa cmpl 5fdfa <_System_state_Current>,%d0
42d16: 6758 beqs 42d70 <free+0x74> <== ALWAYS TAKEN
}
/*
* If configured, update the statistics
*/
if ( rtems_malloc_statistics_helpers )
42d18: 2079 0005 eac6 moveal 5eac6 <rtems_malloc_statistics_helpers>,%a0 42d1e: 4a88 tstl %a0
42d20: 670a beqs 42d2c <free+0x30> <== ALWAYS TAKEN
(*rtems_malloc_statistics_helpers->at_free)(ptr);
42d22: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42d24: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED 42d28: 4e90 jsr %a0@ <== NOT EXECUTED 42d2a: 588f addql #4,%sp <== NOT EXECUTED
if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {
42d2c: 2f02 movel %d2,%sp@- 42d2e: 2f39 0005 e340 movel 5e340 <RTEMS_Malloc_Heap>,%sp@- 42d34: 4eb9 0004 8104 jsr 48104 <_Protected_heap_Free> 42d3a: 508f addql #8,%sp 42d3c: 4a00 tstb %d0
42d3e: 6708 beqs 42d48 <free+0x4c> <== NEVER TAKEN
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
42d40: 242e fffc movel %fp@(-4),%d2 42d44: 4e5e unlk %fp 42d46: 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
42d48: 2079 0005 e340 moveal 5e340 <RTEMS_Malloc_Heap>,%a0 <== NOT EXECUTED
*/
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",
42d4e: 2f28 001c movel %a0@(28),%sp@- <== NOT EXECUTED 42d52: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED 42d56: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42d58: 4879 0005 d37c pea 5d37c <rtems_status_assoc+0x168> <== NOT EXECUTED 42d5e: 4eb9 0004 3b9c jsr 43b9c <printk> <== NOT EXECUTED
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
42d64: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
*/
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",
42d68: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
42d6c: 4e5e unlk %fp <== NOT EXECUTED 42d6e: 4e75 rts <== NOT EXECUTED
/*
* 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() ) {
42d70: 4eb9 0004 2ec0 jsr 42ec0 <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()) &&
42d76: 4a00 tstb %d0
42d78: 669e bnes 42d18 <free+0x1c> <== ALWAYS TAKEN
!malloc_is_system_state_OK() ) {
malloc_deferred_free(ptr);
42d7a: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
42d7e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 42d82: 4e5e unlk %fp <== NOT EXECUTED
/*
* 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);
42d84: 4ef9 0004 2f42 jmp 42f42 <malloc_deferred_free> <== NOT EXECUTED
...
000443f8 <free_user_env>:
* NOTE: this must be called with
* thread dispatching disabled!
*/
static void
free_user_env(void *venv)
{
443f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 443fc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 443fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44400: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_user_env_t *env = (rtems_user_env_t*) venv ;
if (env != &rtems_global_user_env
44404: b5fc 0006 0554 cmpal #394580,%a2 <== NOT EXECUTED 4440a: 6728 beqs 44434 <free_user_env+0x3c> <== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
&& --env->refcnt <= 0
#endif
) {
rtems_filesystem_freenode( &env->current_directory);
4440c: 486a 0004 pea %a2@(4) <== NOT EXECUTED 44410: 47f9 0004 3234 lea 43234 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED 44416: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_filesystem_freenode( &env->root_directory);
44418: 486a 0018 pea %a2@(24) <== NOT EXECUTED 4441c: 4e93 jsr %a3@ <== NOT EXECUTED
free(env);
}
}
4441e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
&& --env->refcnt <= 0
#endif
) {
rtems_filesystem_freenode( &env->current_directory);
rtems_filesystem_freenode( &env->root_directory);
free(env);
44422: 508f addql #8,%sp <== NOT EXECUTED 44424: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
44428: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4442c: 4e5e unlk %fp <== NOT EXECUTED
&& --env->refcnt <= 0
#endif
) {
rtems_filesystem_freenode( &env->current_directory);
rtems_filesystem_freenode( &env->root_directory);
free(env);
4442e: 4ef9 0004 3248 jmp 43248 <free> <== NOT EXECUTED
} }
44434: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 44438: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4443c: 4e5e unlk %fp <== NOT EXECUTED
0005bbbc <fstat>:
int fstat(
int fd,
struct stat *sbuf
)
{
5bbbc: 4e56 0000 linkw %fp,#0 5bbc0: 202e 0008 movel %fp@(8),%d0 5bbc4: 2f0a movel %a2,%sp@- 5bbc6: 2f02 movel %d2,%sp@- 5bbc8: 242e 000c movel %fp@(12),%d2
rtems_libio_t *iop;
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
5bbcc: 6770 beqs 5bc3e <fstat+0x82> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EFAULT );
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
5bbce: b0b9 0005 e334 cmpl 5e334 <rtems_libio_number_iops>,%d0
5bbd4: 644e bccs 5bc24 <fstat+0x68> <== NEVER TAKEN
5bbd6: 2200 movel %d0,%d1 5bbd8: ed88 lsll #6,%d0 5bbda: e789 lsll #3,%d1 5bbdc: 2479 0005 fb34 moveal 5fb34 <rtems_libio_iops>,%a2 5bbe2: 9081 subl %d1,%d0 5bbe4: d5c0 addal %d0,%a2
rtems_libio_check_fd( fd ); rtems_libio_check_is_open(iop);
5bbe6: 202a 0014 movel %a2@(20),%d0 5bbea: 0280 0000 0100 andil #256,%d0
5bbf0: 6732 beqs 5bc24 <fstat+0x68> <== NEVER TAKEN
/*
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
5bbf2: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> 5bbf6: 42a7 clrl %sp@- 5bbf8: 2f02 movel %d2,%sp@- 5bbfa: 4eb9 0004 f228 jsr 4f228 <memset>
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
5bc00: 206a 0020 moveal %a2@(32),%a0 5bc04: 45ea 0018 lea %a2@(24),%a2 5bc08: 4fef 000c lea %sp@(12),%sp 5bc0c: 2d42 000c movel %d2,%fp@(12)
}
5bc10: 242e fff8 movel %fp@(-8),%d2
* 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 );
5bc14: 2d4a 0008 movel %a2,%fp@(8)
}
5bc18: 246e fffc moveal %fp@(-4),%a2 5bc1c: 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 );
5bc1e: 2268 0018 moveal %a0@(24),%a1 5bc22: 4ed1 jmp %a1@
/* * Now process the stat() request. */ iop = rtems_libio_iop( fd ); rtems_libio_check_fd( fd ); rtems_libio_check_is_open(iop);
5bc24: 4eb9 0004 e90c jsr 4e90c <__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 );
}
5bc2a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/* * Now process the stat() request. */ iop = rtems_libio_iop( fd ); rtems_libio_check_fd( fd ); rtems_libio_check_is_open(iop);
5bc2e: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bc30: 7009 moveq #9,%d0 <== NOT EXECUTED
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
}
5bc32: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5bc36: 4e5e unlk %fp <== NOT EXECUTED
/* * Now process the stat() request. */ iop = rtems_libio_iop( fd ); rtems_libio_check_fd( fd ); rtems_libio_check_is_open(iop);
5bc38: 2080 movel %d0,%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 );
}
5bc3a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bc3c: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
rtems_set_errno_and_return_minus_one( EFAULT );
5bc3e: 4eb9 0004 e90c jsr 4e90c <__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 );
}
5bc44: 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 );
5bc48: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bc4a: 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 );
}
5bc4c: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bc4e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5bc52: 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 );
5bc54: 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 );
}
00043ce0 <fsync>:
#include <rtems/seterr.h>
int fsync(
int fd
)
{
43ce0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43ce4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
43ce8: b0b9 0006 0074 cmpl 60074 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 43cee: 642e bccs 43d1e <fsync+0x3e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
43cf0: 2200 movel %d0,%d1 <== NOT EXECUTED 43cf2: ed88 lsll #6,%d0 <== NOT EXECUTED 43cf4: e789 lsll #3,%d1 <== NOT EXECUTED 43cf6: 2079 0006 1874 moveal 61874 <rtems_libio_iops>,%a0 <== NOT EXECUTED 43cfc: 9081 subl %d1,%d0 <== NOT EXECUTED 43cfe: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43d00: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED 43d04: 0800 0008 btst #8,%d0 <== NOT EXECUTED 43d08: 6714 beqs 43d1e <fsync+0x3e> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43d0a: 44c0 movew %d0,%ccr <== NOT EXECUTED 43d0c: 6622 bnes 43d30 <fsync+0x50> <== NOT EXECUTED
/*
* Now process the fsync().
*/
return (*iop->pathinfo.handlers->fsync_h)( iop );
43d0e: 2268 0020 moveal %a0@(32),%a1 <== NOT EXECUTED 43d12: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
43d16: 4e5e unlk %fp <== NOT EXECUTED
/*
* Now process the fsync().
*/
return (*iop->pathinfo.handlers->fsync_h)( iop );
43d18: 2269 0028 moveal %a1@(40),%a1 <== NOT EXECUTED 43d1c: 4ed1 jmp %a1@ <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43d1e: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED 43d24: 7209 moveq #9,%d1 <== NOT EXECUTED 43d26: 2040 moveal %d0,%a0 <== NOT EXECUTED
/*
* Now process the fsync().
*/
return (*iop->pathinfo.handlers->fsync_h)( iop );
}
43d28: 70ff moveq #-1,%d0 <== NOT EXECUTED 43d2a: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43d2c: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* Now process the fsync().
*/
return (*iop->pathinfo.handlers->fsync_h)( iop );
}
43d2e: 4e75 rts <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43d30: 4eb9 0004 fbf0 jsr 4fbf0 <__errno> <== NOT EXECUTED
/*
* Now process the fsync().
*/
return (*iop->pathinfo.handlers->fsync_h)( iop );
}
43d36: 4e5e unlk %fp <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43d38: 2040 moveal %d0,%a0 <== NOT EXECUTED 43d3a: 7016 moveq #22,%d0 <== NOT EXECUTED 43d3c: 2080 movel %d0,%a0@ <== NOT EXECUTED
/*
* Now process the fsync().
*/
return (*iop->pathinfo.handlers->fsync_h)( iop );
}
43d3e: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
0004af8c <ftruncate>:
int ftruncate(
int fd,
off_t length
)
{
4af8c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4af90: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4af94: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc;
rtems_libio_check_fd( fd );
4af96: b0b9 0005 e334 cmpl 5e334 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 4af9c: 6478 bccs 4b016 <ftruncate+0x8a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
4af9e: 2200 movel %d0,%d1 <== NOT EXECUTED 4afa0: ed88 lsll #6,%d0 <== NOT EXECUTED 4afa2: e789 lsll #3,%d1 <== NOT EXECUTED 4afa4: 2479 0005 fb34 moveal 5fb34 <rtems_libio_iops>,%a2 <== NOT EXECUTED 4afaa: 9081 subl %d1,%d0 <== NOT EXECUTED 4afac: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4afae: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4afb2: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED 4afb8: 675c beqs 4b016 <ftruncate+0x8a> <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
4afba: 2d6a 0018 ffec movel %a2@(24),%fp@(-20) <== NOT EXECUTED 4afc0: 2d6a 001c fff0 movel %a2@(28),%fp@(-16) <== NOT EXECUTED 4afc6: 2d6a 0020 fff4 movel %a2@(32),%fp@(-12) <== NOT EXECUTED 4afcc: 2d6a 0024 fff8 movel %a2@(36),%fp@(-8) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
4afd2: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
4afd6: 2d6a 0028 fffc movel %a2@(40),%fp@(-4) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
4afdc: 486e ffec pea %fp@(-20) <== NOT EXECUTED 4afe0: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4afe4: 4e90 jsr %a0@ <== NOT EXECUTED 4afe6: 588f addql #4,%sp <== NOT EXECUTED 4afe8: 7201 moveq #1,%d1 <== NOT EXECUTED 4afea: b280 cmpl %d0,%d1 <== NOT EXECUTED 4afec: 6754 beqs 4b042 <ftruncate+0xb6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
4afee: 7004 moveq #4,%d0 <== NOT EXECUTED 4aff0: c0aa 0014 andl %a2@(20),%d0 <== NOT EXECUTED 4aff4: 6736 beqs 4b02c <ftruncate+0xa0> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
4aff6: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED 4affa: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4affe: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b002: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b004: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED 4b008: 4e90 jsr %a0@ <== NOT EXECUTED
}
4b00a: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
4b00e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
4b012: 4e5e unlk %fp <== NOT EXECUTED 4b014: 4e75 rts <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
4b016: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b01c: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
4b020: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b022: 7209 moveq #9,%d1 <== NOT EXECUTED 4b024: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b026: 4e5e unlk %fp <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
4b028: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b02a: 4e75 rts <== NOT EXECUTED
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
4b02c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b032: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
4b036: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b038: 7216 moveq #22,%d1 <== NOT EXECUTED 4b03a: 70ff moveq #-1,%d0 <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b03c: 4e5e unlk %fp <== NOT EXECUTED
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
4b03e: 2081 movel %d1,%a0@ <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b040: 4e75 rts <== NOT EXECUTED
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( EISDIR );
4b042: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b048: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( EISDIR );
4b04c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b04e: 7215 moveq #21,%d1 <== NOT EXECUTED 4b050: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b052: 4e5e unlk %fp <== NOT EXECUTED
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( EISDIR );
4b054: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
00042e74 <ftrylockfile>:
#include <rtems/seterr.h>
#include <errno.h>
/* This is a non-functional stub */
int ftrylockfile(FILE* file)
{
42e74: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTSUP );
42e78: 4eb9 0004 e944 jsr 4e944 <__errno> <== NOT EXECUTED
}
42e7e: 4e5e unlk %fp <== NOT EXECUTED
#include <errno.h>
/* This is a non-functional stub */
int ftrylockfile(FILE* file)
{
rtems_set_errno_and_return_minus_one( ENOTSUP );
42e80: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
42e82: 70ff moveq #-1,%d0 <== NOT EXECUTED
#include <errno.h>
/* This is a non-functional stub */
int ftrylockfile(FILE* file)
{
rtems_set_errno_and_return_minus_one( ENOTSUP );
42e84: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
}
00042e8c <funlockfile>:
#include <stdio.h>
/* This is a non-functional stub */
void funlockfile(FILE* file)
{
42e8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
}
42e90: 4e5e unlk %fp <== NOT EXECUTED
00042f50 <getchark>:
#include <rtems.h>
#include <rtems/bspIo.h>
int getchark(void)
{
42f50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( BSP_poll_char )
42f54: 2279 0005 f628 moveal 5f628 <BSP_poll_char>,%a1 <== NOT EXECUTED 42f5a: 4a89 tstl %a1 <== NOT EXECUTED 42f5c: 6704 beqs 42f62 <getchark+0x12> <== NOT EXECUTED
return (*BSP_poll_char)();
return -1;
}
42f5e: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/bspIo.h>
int getchark(void)
{
if ( BSP_poll_char )
return (*BSP_poll_char)();
42f60: 4ed1 jmp %a1@ <== NOT EXECUTED
return -1;
}
42f62: 70ff moveq #-1,%d0 <== NOT EXECUTED 42f64: 4e5e unlk %fp <== NOT EXECUTED
0005d814 <getdents>:
int getdents(
int dd_fd,
char *dd_buf,
int dd_len
)
{
5d814: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 5d818: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5d81c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
/*
* Get the file control block structure associated with the file descriptor
*/
iop = rtems_libio_iop( dd_fd );
5d81e: b0b9 0006 0814 cmpl 60814 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 5d824: 6464 bccs 5d88a <getdents+0x76> <== NOT EXECUTED 5d826: 2200 movel %d0,%d1 <== NOT EXECUTED 5d828: ed88 lsll #6,%d0 <== NOT EXECUTED 5d82a: e789 lsll #3,%d1 <== NOT EXECUTED 5d82c: 2479 0006 2134 moveal 62134 <rtems_libio_iops>,%a2 <== NOT EXECUTED 5d832: 9081 subl %d1,%d0 <== NOT EXECUTED 5d834: d5c0 addal %d0,%a2 <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
5d836: 2d6a 0018 ffec movel %a2@(24),%fp@(-20) <== NOT EXECUTED 5d83c: 2d6a 001c fff0 movel %a2@(28),%fp@(-16) <== NOT EXECUTED 5d842: 2d6a 0020 fff4 movel %a2@(32),%fp@(-12) <== NOT EXECUTED 5d848: 2d6a 0024 fff8 movel %a2@(36),%fp@(-8) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5d84e: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
iop = rtems_libio_iop( dd_fd );
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
5d852: 2d6a 0028 fffc movel %a2@(40),%fp@(-4) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5d858: 486e ffec pea %fp@(-20) <== NOT EXECUTED 5d85c: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 5d860: 4e90 jsr %a0@ <== NOT EXECUTED 5d862: 588f addql #4,%sp <== NOT EXECUTED 5d864: 7201 moveq #1,%d1 <== NOT EXECUTED 5d866: b280 cmpl %d0,%d1 <== NOT EXECUTED 5d868: 6624 bnes 5d88e <getdents+0x7a> <== NOT EXECUTED
/*
* 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 );
5d86a: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED 5d86e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5d872: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5d876: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5d878: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED 5d87c: 4e90 jsr %a0@ <== NOT EXECUTED
}
5d87e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
/*
* 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 );
5d882: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
5d886: 4e5e unlk %fp <== NOT EXECUTED 5d888: 4e75 rts <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
/*
* Get the file control block structure associated with the file descriptor
*/
iop = rtems_libio_iop( dd_fd );
5d88a: 95ca subal %a2,%a2 <== NOT EXECUTED 5d88c: 60a8 bras 5d836 <getdents+0x22> <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
5d88e: 4eb9 0004 fcb8 jsr 4fcb8 <__errno> <== NOT EXECUTED
/* * 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 ); }
5d894: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
5d898: 2040 moveal %d0,%a0 <== NOT EXECUTED 5d89a: 7214 moveq #20,%d1 <== NOT EXECUTED 5d89c: 70ff moveq #-1,%d0 <== NOT EXECUTED
/* * 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 ); }
5d89e: 4e5e unlk %fp <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
5d8a0: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* 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 );
}
00043348 <getgid>:
/*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
gid_t getgid( void )
{
43348: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Gid;
4334c: 2079 0005 fffc moveal 5fffc <rtems_current_user_env>,%a0 <== NOT EXECUTED
}
43352: 4e5e unlk %fp <== NOT EXECUTED 43354: 3028 0034 movew %a0@(52),%d0 <== NOT EXECUTED
...
000438b4 <getgr_r>:
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
438b4: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 438b8: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ <== NOT EXECUTED 438bc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 438c0: 47fa fce0 lea %pc@(435a2 <scangr>),%a3 <== NOT EXECUTED
for(;;) {
if (!scangr(fp, grp, buffer, bufsize))
goto error_einval;
if (name) {
match = (strcmp(grp->gr_name, name) == 0);
438c4: 49f9 0005 11c8 lea 511c8 <strcmp>,%a4 <== NOT EXECUTED
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
438ca: 2c2e 000c movel %fp@(12),%d6 <== NOT EXECUTED 438ce: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 438d2: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED 438d6: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED
FILE *fp;
int match;
init_etc_passwd_group();
438da: 4eb9 0004 37aa jsr 437aa <init_etc_passwd_group> <== NOT EXECUTED
if ((fp = fopen("/etc/group", "r")) == NULL)
438e0: 4879 0005 f69f pea 5f69f <_global_impure_ptr+0xbf> <== NOT EXECUTED 438e6: 4879 0005 ee30 pea 5ee30 <rtems_status_assoc+0x21a> <== NOT EXECUTED 438ec: 4eb9 0005 0048 jsr 50048 <fopen> <== NOT EXECUTED 438f2: 508f addql #8,%sp <== NOT EXECUTED 438f4: 2600 movel %d0,%d3 <== NOT EXECUTED 438f6: 6778 beqs 43970 <getgr_r+0xbc> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
for(;;) {
if (!scangr(fp, grp, buffer, bufsize))
438f8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 438fa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 438fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 438fe: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43900: 4e93 jsr %a3@ <== NOT EXECUTED 43902: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 43906: 4a80 tstl %d0 <== NOT EXECUTED 43908: 6744 beqs 4394e <getgr_r+0x9a> <== NOT EXECUTED
goto error_einval;
if (name) {
4390a: 4a82 tstl %d2 <== NOT EXECUTED 4390c: 672e beqs 4393c <getgr_r+0x88> <== NOT EXECUTED
match = (strcmp(grp->gr_name, name) == 0);
4390e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43910: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 43912: 4e94 jsr %a4@ <== NOT EXECUTED 43914: 508f addql #8,%sp <== NOT EXECUTED 43916: 4a80 tstl %d0 <== NOT EXECUTED 43918: 57c0 seq %d0 <== NOT EXECUTED 4391a: 49c0 extbl %d0 <== NOT EXECUTED 4391c: 4480 negl %d0 <== NOT EXECUTED
} else {
match = (grp->gr_gid == gid);
}
if (match) {
4391e: 67d8 beqs 438f8 <getgr_r+0x44> <== NOT EXECUTED
fclose(fp);
43920: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43922: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED
*result = grp;
43928: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
return 0;
4392c: 588f addql #4,%sp <== NOT EXECUTED 4392e: 4280 clrl %d0 <== NOT EXECUTED
match = (grp->gr_gid == gid);
}
if (match) {
fclose(fp);
*result = grp;
43930: 208a movel %a2,%a0@ <== NOT EXECUTED
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
}
43932: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 43938: 4e5e unlk %fp <== NOT EXECUTED 4393a: 4e75 rts <== NOT EXECUTED
goto error_einval;
if (name) {
match = (strcmp(grp->gr_name, name) == 0);
} else {
match = (grp->gr_gid == gid);
4393c: 4280 clrl %d0 <== NOT EXECUTED 4393e: 302a 0008 movew %a2@(8),%d0 <== NOT EXECUTED 43942: bc80 cmpl %d0,%d6 <== NOT EXECUTED 43944: 57c0 seq %d0 <== NOT EXECUTED 43946: 49c0 extbl %d0 <== NOT EXECUTED 43948: 4480 negl %d0 <== NOT EXECUTED
}
if (match) {
4394a: 67ac beqs 438f8 <getgr_r+0x44> <== NOT EXECUTED 4394c: 60d2 bras 43920 <getgr_r+0x6c> <== NOT EXECUTED
*result = grp;
return 0;
}
}
error_einval:
fclose(fp);
4394e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43950: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43956: 4eb9 0004 f7fc jsr 4f7fc <__errno> <== NOT EXECUTED 4395c: 588f addql #4,%sp <== NOT EXECUTED 4395e: 7216 moveq #22,%d1 <== NOT EXECUTED 43960: 2040 moveal %d0,%a0 <== NOT EXECUTED 43962: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
43964: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
return 0;
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
4396a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4396c: 4e5e unlk %fp <== NOT EXECUTED 4396e: 4e75 rts <== NOT EXECUTED
int match;
init_etc_passwd_group();
if ((fp = fopen("/etc/group", "r")) == NULL)
rtems_set_errno_and_return_minus_one( EINVAL );
43970: 4eb9 0004 f7fc jsr 4f7fc <__errno> <== NOT EXECUTED 43976: 7416 moveq #22,%d2 <== NOT EXECUTED 43978: 2040 moveal %d0,%a0 <== NOT EXECUTED 4397a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4397c: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
}
4397e: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 43984: 4e5e unlk %fp <== NOT EXECUTED
00043c64 <getgrent>:
struct group *getgrent(void)
{
43c64: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (group_fp == NULL)
43c68: 2039 0006 0df0 movel 60df0 <group_fp>,%d0 <== NOT EXECUTED 43c6e: 6606 bnes 43c76 <getgrent+0x12> <== NOT EXECUTED
return NULL;
43c70: 4280 clrl %d0 <== NOT EXECUTED
if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))
return NULL;
return &grent;
}
43c72: 4e5e unlk %fp <== NOT EXECUTED 43c74: 4e75 rts <== NOT EXECUTED
struct group *getgrent(void)
{
if (group_fp == NULL)
return NULL;
if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))
43c76: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED 43c7a: 4879 0006 0e02 pea 60e02 <grbuf> <== NOT EXECUTED 43c80: 4879 0006 0df4 pea 60df4 <grent> <== NOT EXECUTED 43c86: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43c88: 4eba f918 jsr %pc@(435a2 <scangr>) <== NOT EXECUTED 43c8c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return NULL;
return &grent;
}
43c90: 4e5e unlk %fp <== NOT EXECUTED
struct group *getgrent(void)
{
if (group_fp == NULL)
return NULL;
if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))
return NULL;
43c92: 4a80 tstl %d0 <== NOT EXECUTED 43c94: 56c0 sne %d0 <== NOT EXECUTED 43c96: 49c0 extbl %d0 <== NOT EXECUTED 43c98: 0280 0006 0df4 andil #396788,%d0 <== NOT EXECUTED
return &grent;
}
00043c28 <getgrgid>:
gid_t gid
)
{
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
43c28: 4280 clrl %d0 <== NOT EXECUTED
}
struct group *getgrgid(
gid_t gid
)
{
43c2a: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
43c2e: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED 43c32: 486e fffc pea %fp@(-4) <== NOT EXECUTED 43c36: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED 43c3a: 4879 0006 0e02 pea 60e02 <grbuf> <== NOT EXECUTED 43c40: 4879 0006 0df4 pea 60df4 <grent> <== NOT EXECUTED 43c46: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43c48: 4eb9 0004 3c02 jsr 43c02 <getgrgid_r> <== NOT EXECUTED 43c4e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43c52: 4a80 tstl %d0 <== NOT EXECUTED 43c54: 6608 bnes 43c5e <getgrgid+0x36> <== NOT EXECUTED
return NULL;
return p;
43c56: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
43c5a: 4e5e unlk %fp <== NOT EXECUTED 43c5c: 4e75 rts <== NOT EXECUTED
)
{
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
return NULL;
43c5e: 4280 clrl %d0 <== NOT EXECUTED
return p; }
43c60: 4e5e unlk %fp <== NOT EXECUTED
00043c02 <getgrgid_r>:
char *buffer,
size_t bufsize,
struct group **result
)
{
return getgr_r(NULL, gid, grp, buffer, bufsize, result);
43c02: 4280 clrl %d0 <== NOT EXECUTED
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
43c04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getgr_r(NULL, gid, grp, buffer, bufsize, result);
43c08: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 43c0c: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 43c10: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 43c14: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43c18: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED 43c1c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43c1e: 42a7 clrl %sp@- <== NOT EXECUTED 43c20: 4eba fc92 jsr %pc@(438b4 <getgr_r>) <== NOT EXECUTED
}
43c24: 4e5e unlk %fp <== NOT EXECUTED
00043bca <getgrnam>:
struct group *getgrnam(
const char *name
)
{
43bca: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct group *p;
if(getgrnam_r(name, &grent, grbuf, sizeof grbuf, &p))
43bce: 486e fffc pea %fp@(-4) <== NOT EXECUTED 43bd2: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED 43bd6: 4879 0006 0e02 pea 60e02 <grbuf> <== NOT EXECUTED 43bdc: 4879 0006 0df4 pea 60df4 <grent> <== NOT EXECUTED 43be2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43be6: 4eb9 0004 3ba8 jsr 43ba8 <getgrnam_r> <== NOT EXECUTED 43bec: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43bf0: 4a80 tstl %d0 <== NOT EXECUTED 43bf2: 6608 bnes 43bfc <getgrnam+0x32> <== NOT EXECUTED
return NULL;
return p;
43bf4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
43bf8: 4e5e unlk %fp <== NOT EXECUTED 43bfa: 4e75 rts <== NOT EXECUTED
)
{
struct group *p;
if(getgrnam_r(name, &grent, grbuf, sizeof grbuf, &p))
return NULL;
43bfc: 4280 clrl %d0 <== NOT EXECUTED
return p; }
43bfe: 4e5e unlk %fp <== NOT EXECUTED
00043ba8 <getgrnam_r>:
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
43ba8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getgr_r(name, 0, grp, buffer, bufsize, result);
43bac: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 43bb0: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 43bb4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 43bb8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43bbc: 42a7 clrl %sp@- <== NOT EXECUTED 43bbe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43bc2: 4eba fcf0 jsr %pc@(438b4 <getgr_r>) <== NOT EXECUTED
}
43bc6: 4e5e unlk %fp <== NOT EXECUTED
0004335c <getgroups>:
int gidsetsize __attribute__((unused)),
gid_t grouplist[] __attribute__((unused))
)
{
return 0; /* no supplemental group ids */
}
4335c: 4280 clrl %d0 <== NOT EXECUTED
int getgroups(
int gidsetsize __attribute__((unused)),
gid_t grouplist[] __attribute__((unused))
)
{
4335e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; /* no supplemental group ids */ }
43362: 4e5e unlk %fp <== NOT EXECUTED
...
00046110 <getitimer>:
int getitimer(
int which,
struct itimerval *value
)
{
46110: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( !value )
46114: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 46118: 672c beqs 46146 <getitimer+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
switch ( which ) {
4611a: 7002 moveq #2,%d0 <== NOT EXECUTED 4611c: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 46120: 6412 bccs 46134 <getitimer+0x24> <== NOT EXECUTED
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46122: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
}
46128: 4e5e unlk %fp <== NOT EXECUTED
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4612a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4612c: 7016 moveq #22,%d0 <== NOT EXECUTED 4612e: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
46130: 70ff moveq #-1,%d0 <== NOT EXECUTED 46132: 4e75 rts <== NOT EXECUTED
switch ( which ) {
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
46134: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED 4613a: 7258 moveq #88,%d1 <== NOT EXECUTED 4613c: 2040 moveal %d0,%a0 <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4613e: 70ff moveq #-1,%d0 <== NOT EXECUTED 46140: 4e5e unlk %fp <== NOT EXECUTED
switch ( which ) {
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
46142: 2081 movel %d1,%a0@ <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46144: 4e75 rts <== NOT EXECUTED
int which,
struct itimerval *value
)
{
if ( !value )
rtems_set_errno_and_return_minus_one( EFAULT );
46146: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4614c: 4e5e unlk %fp <== NOT EXECUTED
int which,
struct itimerval *value
)
{
if ( !value )
rtems_set_errno_and_return_minus_one( EFAULT );
4614e: 2040 moveal %d0,%a0 <== NOT EXECUTED 46150: 700e moveq #14,%d0 <== NOT EXECUTED 46152: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46154: 70ff moveq #-1,%d0 <== NOT EXECUTED
000433cc <getlogin>:
* 4.2.4 Get User Name, P1003.1b-1993, p. 87
*
* NOTE: P1003.1c/D10, p. 49 adds getlogin_r().
*/
char *getlogin( void )
{
433cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
(void) getlogin_r( _POSIX_types_Getlogin_buffer, LOGIN_NAME_MAX );
433d0: 2079 0005 fffc moveal 5fffc <rtems_current_user_env>,%a0 <== NOT EXECUTED 433d6: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED 433da: 41e8 003a lea %a0@(58),%a0 <== NOT EXECUTED 433de: 2f08 movel %a0,%sp@- <== NOT EXECUTED 433e0: 4eb9 0004 3368 jsr 43368 <getlogin_r> <== NOT EXECUTED
return _POSIX_types_Getlogin_buffer; }
433e6: 2039 0005 fffc movel 5fffc <rtems_current_user_env>,%d0 <== NOT EXECUTED 433ec: 4e5e unlk %fp <== NOT EXECUTED 433ee: 0680 0000 003a addil #58,%d0 <== NOT EXECUTED
...
00043368 <getlogin_r>:
*/
int getlogin_r(
char *name,
size_t namesize
)
{
43368: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4336c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4336e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
struct passwd *pw;
char *pname;
if ( !name )
43372: 674e beqs 433c2 <getlogin_r+0x5a> <== NOT EXECUTED
return EFAULT;
if ( namesize < LOGIN_NAME_MAX )
43374: 7008 moveq #8,%d0 <== NOT EXECUTED 43376: b0ae 000c cmpl %fp@(12),%d0 <== NOT EXECUTED 4337a: 650a bcss 43386 <getlogin_r+0x1e> <== NOT EXECUTED
if ( pw )
pname = pw->pw_name;
strncpy( name, pname, LOGIN_NAME_MAX );
return 0;
}
4337c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
if ( !name )
return EFAULT;
if ( namesize < LOGIN_NAME_MAX )
return ERANGE;
43380: 7022 moveq #34,%d0 <== NOT EXECUTED
if ( pw )
pname = pw->pw_name;
strncpy( name, pname, LOGIN_NAME_MAX );
return 0;
}
43382: 4e5e unlk %fp <== NOT EXECUTED 43384: 4e75 rts <== NOT EXECUTED
return ERANGE;
/* Set the pointer to a default name */
pname = "";
pw = getpwuid(getuid());
43386: 4eb9 0004 3d80 jsr 43d80 <getuid> <== NOT EXECUTED 4338c: 3f00 movew %d0,%sp@- <== NOT EXECUTED 4338e: 4267 clrw %sp@- <== NOT EXECUTED 43390: 4eb9 0004 3adc jsr 43adc <getpwuid> <== NOT EXECUTED
if ( pw )
43396: 588f addql #4,%sp <== NOT EXECUTED
if ( namesize < LOGIN_NAME_MAX )
return ERANGE;
/* Set the pointer to a default name */
pname = "";
43398: 223c 0005 ef1a movel #388890,%d1 <== NOT EXECUTED
pw = getpwuid(getuid());
if ( pw )
4339e: 4a80 tstl %d0 <== NOT EXECUTED 433a0: 6704 beqs 433a6 <getlogin_r+0x3e> <== NOT EXECUTED
pname = pw->pw_name;
433a2: 2040 moveal %d0,%a0 <== NOT EXECUTED 433a4: 2210 movel %a0@,%d1 <== NOT EXECUTED
strncpy( name, pname, LOGIN_NAME_MAX );
433a6: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED 433aa: 2f01 movel %d1,%sp@- <== NOT EXECUTED 433ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED 433ae: 4eb9 0005 1738 jsr 51738 <strncpy> <== NOT EXECUTED
return 0; }
433b4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
pw = getpwuid(getuid());
if ( pw )
pname = pw->pw_name;
strncpy( name, pname, LOGIN_NAME_MAX );
return 0;
433b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 433bc: 4280 clrl %d0 <== NOT EXECUTED
}
433be: 4e5e unlk %fp <== NOT EXECUTED 433c0: 4e75 rts <== NOT EXECUTED 433c2: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
{
struct passwd *pw;
char *pname;
if ( !name )
return EFAULT;
433c6: 700e moveq #14,%d0 <== NOT EXECUTED
if ( pw )
pname = pw->pw_name;
strncpy( name, pname, LOGIN_NAME_MAX );
return 0;
}
433c8: 4e5e unlk %fp <== NOT EXECUTED
00042f20 <getpagesize>:
* return a reasonable value.
*/
int getpagesize(void)
{
return PAGE_SIZE;
}
42f20: 203c 0000 1000 movel #4096,%d0 <== NOT EXECUTED
* This is not a functional version but the SPARC backend for at least
* gcc 2.8.1 plus gnat 3.13p and gcc 3.0.1 require it to be there and
* return a reasonable value.
*/
int getpagesize(void)
{
42f26: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return PAGE_SIZE; }
42f2a: 4e5e unlk %fp <== NOT EXECUTED
...
000433f8 <getpgrp>:
* This always succeeds and returns the process group id. For rtems,
* this will always be the local node;
*/
return _Objects_Local_node;
}
433f8: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* 4.3.1 Get Process Group IDs, P1003.1b-1993, p. 89
*/
pid_t getpgrp( void )
{
433fa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* This always succeeds and returns the process group id. For rtems,
* this will always be the local node;
*/
return _Objects_Local_node;
}
433fe: 4e5e unlk %fp <== NOT EXECUTED
...
0005bc74 <getpid>:
*/
pid_t getpid( void )
{
return _Objects_Local_node;
}
5bc74: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getpid( void )
{
5bc76: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Local_node; }
5bc7a: 4e5e unlk %fp <== NOT EXECUTED
00043424 <getppid>:
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getppid( void )
{
43424: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Ppid; }
43428: 2039 0006 0dec movel 60dec <_POSIX_types_Ppid>,%d0 <== NOT EXECUTED 4342e: 4e5e unlk %fp <== NOT EXECUTED
...
00043988 <getpw_r>:
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
43988: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4398c: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ <== NOT EXECUTED 43990: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 43994: 47fa fd24 lea %pc@(436ba <scanpw>),%a3 <== NOT EXECUTED
for(;;) {
if (!scanpw(fp, pwd, buffer, bufsize))
goto error_einval;
if (name) {
match = (strcmp(pwd->pw_name, name) == 0);
43998: 49f9 0005 11c8 lea 511c8 <strcmp>,%a4 <== NOT EXECUTED
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
4399e: 2c2e 000c movel %fp@(12),%d6 <== NOT EXECUTED 439a2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 439a6: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED 439aa: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED
FILE *fp;
int match;
init_etc_passwd_group();
439ae: 4eb9 0004 37aa jsr 437aa <init_etc_passwd_group> <== NOT EXECUTED
if ((fp = fopen("/etc/passwd", "r")) == NULL)
439b4: 4879 0005 f69f pea 5f69f <_global_impure_ptr+0xbf> <== NOT EXECUTED 439ba: 4879 0005 edbb pea 5edbb <rtems_status_assoc+0x1a5> <== NOT EXECUTED 439c0: 4eb9 0005 0048 jsr 50048 <fopen> <== NOT EXECUTED 439c6: 508f addql #8,%sp <== NOT EXECUTED 439c8: 2600 movel %d0,%d3 <== NOT EXECUTED 439ca: 6778 beqs 43a44 <getpw_r+0xbc> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
for(;;) {
if (!scanpw(fp, pwd, buffer, bufsize))
439cc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 439ce: 2f05 movel %d5,%sp@- <== NOT EXECUTED 439d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 439d2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 439d4: 4e93 jsr %a3@ <== NOT EXECUTED 439d6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 439da: 4a80 tstl %d0 <== NOT EXECUTED 439dc: 6744 beqs 43a22 <getpw_r+0x9a> <== NOT EXECUTED
goto error_einval;
if (name) {
439de: 4a82 tstl %d2 <== NOT EXECUTED 439e0: 672e beqs 43a10 <getpw_r+0x88> <== NOT EXECUTED
match = (strcmp(pwd->pw_name, name) == 0);
439e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 439e4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 439e6: 4e94 jsr %a4@ <== NOT EXECUTED 439e8: 508f addql #8,%sp <== NOT EXECUTED 439ea: 4a80 tstl %d0 <== NOT EXECUTED 439ec: 57c0 seq %d0 <== NOT EXECUTED 439ee: 49c0 extbl %d0 <== NOT EXECUTED 439f0: 4480 negl %d0 <== NOT EXECUTED
} else {
match = (pwd->pw_uid == uid);
}
if (match) {
439f2: 67d8 beqs 439cc <getpw_r+0x44> <== NOT EXECUTED
fclose(fp);
439f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 439f6: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED
*result = pwd;
439fc: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
return 0;
43a00: 588f addql #4,%sp <== NOT EXECUTED 43a02: 4280 clrl %d0 <== NOT EXECUTED
match = (pwd->pw_uid == uid);
}
if (match) {
fclose(fp);
*result = pwd;
43a04: 208a movel %a2,%a0@ <== NOT EXECUTED
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
}
43a06: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 43a0c: 4e5e unlk %fp <== NOT EXECUTED 43a0e: 4e75 rts <== NOT EXECUTED
goto error_einval;
if (name) {
match = (strcmp(pwd->pw_name, name) == 0);
} else {
match = (pwd->pw_uid == uid);
43a10: 4280 clrl %d0 <== NOT EXECUTED 43a12: 302a 0008 movew %a2@(8),%d0 <== NOT EXECUTED 43a16: bc80 cmpl %d0,%d6 <== NOT EXECUTED 43a18: 57c0 seq %d0 <== NOT EXECUTED 43a1a: 49c0 extbl %d0 <== NOT EXECUTED 43a1c: 4480 negl %d0 <== NOT EXECUTED
}
if (match) {
43a1e: 67ac beqs 439cc <getpw_r+0x44> <== NOT EXECUTED 43a20: 60d2 bras 439f4 <getpw_r+0x6c> <== NOT EXECUTED
*result = pwd;
return 0;
}
}
error_einval:
fclose(fp);
43a22: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43a24: 7616 moveq #22,%d3 <== NOT EXECUTED
*result = pwd;
return 0;
}
}
error_einval:
fclose(fp);
43a26: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43a2c: 4eb9 0004 f7fc jsr 4f7fc <__errno> <== NOT EXECUTED 43a32: 588f addql #4,%sp <== NOT EXECUTED 43a34: 2040 moveal %d0,%a0 <== NOT EXECUTED 43a36: 70ff moveq #-1,%d0 <== NOT EXECUTED 43a38: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
43a3a: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 43a40: 4e5e unlk %fp <== NOT EXECUTED 43a42: 4e75 rts <== NOT EXECUTED
int match;
init_etc_passwd_group();
if ((fp = fopen("/etc/passwd", "r")) == NULL)
rtems_set_errno_and_return_minus_one( EINVAL );
43a44: 4eb9 0004 f7fc jsr 4f7fc <__errno> <== NOT EXECUTED 43a4a: 7816 moveq #22,%d4 <== NOT EXECUTED 43a4c: 2040 moveal %d0,%a0 <== NOT EXECUTED 43a4e: 70ff moveq #-1,%d0 <== NOT EXECUTED 43a50: 2084 movel %d4,%a0@ <== NOT EXECUTED
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
}
43a52: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 43a58: 4e5e unlk %fp <== NOT EXECUTED
00043b18 <getpwent>:
struct passwd *getpwent(void)
{
43b18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (passwd_fp == NULL)
43b1c: 2039 0006 0eca movel 60eca <passwd_fp>,%d0 <== NOT EXECUTED 43b22: 6606 bnes 43b2a <getpwent+0x12> <== NOT EXECUTED
return NULL;
43b24: 4280 clrl %d0 <== NOT EXECUTED
if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))
return NULL;
return &pwent;
}
43b26: 4e5e unlk %fp <== NOT EXECUTED 43b28: 4e75 rts <== NOT EXECUTED
struct passwd *getpwent(void)
{
if (passwd_fp == NULL)
return NULL;
if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))
43b2a: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED 43b2e: 4879 0006 0eea pea 60eea <pwbuf> <== NOT EXECUTED 43b34: 4879 0006 0ece pea 60ece <pwent> <== NOT EXECUTED 43b3a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43b3c: 4eba fb7c jsr %pc@(436ba <scanpw>) <== NOT EXECUTED 43b40: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return NULL;
return &pwent;
}
43b44: 4e5e unlk %fp <== NOT EXECUTED
struct passwd *getpwent(void)
{
if (passwd_fp == NULL)
return NULL;
if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))
return NULL;
43b46: 4a80 tstl %d0 <== NOT EXECUTED 43b48: 56c0 sne %d0 <== NOT EXECUTED 43b4a: 49c0 extbl %d0 <== NOT EXECUTED 43b4c: 0280 0006 0ece andil #397006,%d0 <== NOT EXECUTED
return &pwent;
}
00043a7e <getpwnam>:
struct passwd *getpwnam(
const char *name
)
{
43a7e: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct passwd *p;
if(getpwnam_r(name, &pwent, pwbuf, sizeof pwbuf, &p))
43a82: 486e fffc pea %fp@(-4) <== NOT EXECUTED 43a86: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED 43a8a: 4879 0006 0eea pea 60eea <pwbuf> <== NOT EXECUTED 43a90: 4879 0006 0ece pea 60ece <pwent> <== NOT EXECUTED 43a96: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43a9a: 4eb9 0004 3a5c jsr 43a5c <getpwnam_r> <== NOT EXECUTED 43aa0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43aa4: 4a80 tstl %d0 <== NOT EXECUTED 43aa6: 6608 bnes 43ab0 <getpwnam+0x32> <== NOT EXECUTED
return NULL;
return p;
43aa8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
43aac: 4e5e unlk %fp <== NOT EXECUTED 43aae: 4e75 rts <== NOT EXECUTED
)
{
struct passwd *p;
if(getpwnam_r(name, &pwent, pwbuf, sizeof pwbuf, &p))
return NULL;
43ab0: 4280 clrl %d0 <== NOT EXECUTED
return p; }
43ab2: 4e5e unlk %fp <== NOT EXECUTED
00043a5c <getpwnam_r>:
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
43a5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpw_r(name, 0, pwd, buffer, bufsize, result);
43a60: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 43a64: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 43a68: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 43a6c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43a70: 42a7 clrl %sp@- <== NOT EXECUTED 43a72: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43a76: 4eba ff10 jsr %pc@(43988 <getpw_r>) <== NOT EXECUTED
}
43a7a: 4e5e unlk %fp <== NOT EXECUTED
00043adc <getpwuid>:
uid_t uid
)
{
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
43adc: 4280 clrl %d0 <== NOT EXECUTED
}
struct passwd *getpwuid(
uid_t uid
)
{
43ade: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
43ae2: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED 43ae6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 43aea: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED 43aee: 4879 0006 0eea pea 60eea <pwbuf> <== NOT EXECUTED 43af4: 4879 0006 0ece pea 60ece <pwent> <== NOT EXECUTED 43afa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43afc: 4eb9 0004 3ab6 jsr 43ab6 <getpwuid_r> <== NOT EXECUTED 43b02: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43b06: 4a80 tstl %d0 <== NOT EXECUTED 43b08: 6608 bnes 43b12 <getpwuid+0x36> <== NOT EXECUTED
return NULL;
return p;
43b0a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
43b0e: 4e5e unlk %fp <== NOT EXECUTED 43b10: 4e75 rts <== NOT EXECUTED
)
{
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
return NULL;
43b12: 4280 clrl %d0 <== NOT EXECUTED
return p; }
43b14: 4e5e unlk %fp <== NOT EXECUTED
00043ab6 <getpwuid_r>:
char *buffer,
size_t bufsize,
struct passwd **result
)
{
return getpw_r(NULL, uid, pwd, buffer, bufsize, result);
43ab6: 4280 clrl %d0 <== NOT EXECUTED
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
43ab8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpw_r(NULL, uid, pwd, buffer, bufsize, result);
43abc: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 43ac0: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 43ac4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 43ac8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43acc: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED 43ad0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43ad2: 42a7 clrl %sp@- <== NOT EXECUTED 43ad4: 4eba feb2 jsr %pc@(43988 <getpw_r>) <== NOT EXECUTED
}
43ad8: 4e5e unlk %fp <== NOT EXECUTED
00043048 <getrusage>:
#include <rtems.h>
#include <rtems/seterr.h>
int getrusage(int who, struct rusage *usage)
{
43048: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4304c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 43050: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 43054: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
struct timespec uptime;
struct timeval rtime;
if ( !usage )
43058: 4a8a tstl %a2 <== NOT EXECUTED 4305a: 6772 beqs 430ce <getrusage+0x86> <== NOT EXECUTED
* RTEMS only has a single process so there are no children.
* The single process has been running since the system
* was booted and since there is no distinction between system
* and user time, we will just report the uptime.
*/
if (who == RUSAGE_SELF) {
4305c: 4a80 tstl %d0 <== NOT EXECUTED 4305e: 6736 beqs 43096 <getrusage+0x4e> <== NOT EXECUTED
usage->ru_stime = rtime;
return 0;
}
if (who == RUSAGE_CHILDREN) {
43060: 72ff moveq #-1,%d1 <== NOT EXECUTED 43062: b280 cmpl %d0,%d1 <== NOT EXECUTED 43064: 6718 beqs 4307e <getrusage+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
}
rtems_set_errno_and_return_minus_one( EINVAL );
43066: 4eb9 0004 ebe0 jsr 4ebe0 <__errno> <== NOT EXECUTED 4306c: 7216 moveq #22,%d1 <== NOT EXECUTED 4306e: 2040 moveal %d0,%a0 <== NOT EXECUTED 43070: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
43072: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
if (who == RUSAGE_CHILDREN) {
rtems_set_errno_and_return_minus_one( ENOSYS );
}
rtems_set_errno_and_return_minus_one( EINVAL );
43078: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4307a: 4e5e unlk %fp <== NOT EXECUTED 4307c: 4e75 rts <== NOT EXECUTED
return 0;
}
if (who == RUSAGE_CHILDREN) {
rtems_set_errno_and_return_minus_one( ENOSYS );
4307e: 4eb9 0004 ebe0 jsr 4ebe0 <__errno> <== NOT EXECUTED 43084: 7458 moveq #88,%d2 <== NOT EXECUTED 43086: 2040 moveal %d0,%a0 <== NOT EXECUTED 43088: 70ff moveq #-1,%d0 <== NOT EXECUTED 4308a: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4308c: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 43092: 4e5e unlk %fp <== NOT EXECUTED 43094: 4e75 rts <== NOT EXECUTED
* The single process has been running since the system
* was booted and since there is no distinction between system
* and user time, we will just report the uptime.
*/
if (who == RUSAGE_SELF) {
rtems_clock_get_uptime( &uptime );
43096: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
rtime.tv_sec = uptime.tv_sec;
rtime.tv_usec = uptime.tv_nsec / 1000;
4309a: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED
* The single process has been running since the system
* was booted and since there is no distinction between system
* and user time, we will just report the uptime.
*/
if (who == RUSAGE_SELF) {
rtems_clock_get_uptime( &uptime );
430a0: 4eb9 0004 60c0 jsr 460c0 <rtems_clock_get_uptime> <== NOT EXECUTED
rtime.tv_sec = uptime.tv_sec;
rtime.tv_usec = uptime.tv_nsec / 1000;
430a6: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
usage->ru_utime = rtime;
usage->ru_stime = rtime;
return 0;
430aa: 588f addql #4,%sp <== NOT EXECUTED 430ac: 4280 clrl %d0 <== NOT EXECUTED
* and user time, we will just report the uptime.
*/
if (who == RUSAGE_SELF) {
rtems_clock_get_uptime( &uptime );
rtime.tv_sec = uptime.tv_sec;
430ae: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
rtime.tv_usec = uptime.tv_nsec / 1000;
430b2: 4c43 1801 remsl %d3,%d1,%d1 <== NOT EXECUTED 430b6: 2488 movel %a0,%a2@ <== NOT EXECUTED 430b8: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED 430bc: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED 430c0: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
if (who == RUSAGE_CHILDREN) {
rtems_set_errno_and_return_minus_one( ENOSYS );
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
430c4: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 430ca: 4e5e unlk %fp <== NOT EXECUTED 430cc: 4e75 rts <== NOT EXECUTED
{
struct timespec uptime;
struct timeval rtime;
if ( !usage )
rtems_set_errno_and_return_minus_one( EFAULT );
430ce: 4eb9 0004 ebe0 jsr 4ebe0 <__errno> <== NOT EXECUTED 430d4: 760e moveq #14,%d3 <== NOT EXECUTED 430d6: 2040 moveal %d0,%a0 <== NOT EXECUTED 430d8: 70ff moveq #-1,%d0 <== NOT EXECUTED 430da: 2083 movel %d3,%a0@ <== NOT EXECUTED
if (who == RUSAGE_CHILDREN) {
rtems_set_errno_and_return_minus_one( ENOSYS );
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
430dc: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 430e2: 4e5e unlk %fp <== NOT EXECUTED
...
00042d8c <gettimeofday>:
*/
int gettimeofday(
struct timeval *tp,
void * __tz __attribute__((unused))
)
{
42d8c: 4e56 ffec linkw %fp,#-20 42d90: 48d7 040c moveml %d2-%d3/%a2,%sp@ 42d94: 246e 0008 moveal %fp@(8),%a2
/* struct timezone* tzp = (struct timezone*) __tz; */ if ( !tp )
42d98: 4a8a tstl %a2
42d9a: 673c beqs 42dd8 <gettimeofday+0x4c> <== NEVER TAKEN
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
42d9c: 203c 0000 0700 movel #1792,%d0 42da2: 40c2 movew %sr,%d2 42da4: 8082 orl %d2,%d0 42da6: 46c0 movew %d0,%sr
_TOD_Get( &now );
42da8: 486e fff8 pea %fp@(-8) 42dac: 4eb9 0004 735c jsr 4735c <_TOD_Get>
_ISR_Enable(level);
42db2: 46c2 movew %d2,%sr
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
42db4: 263c 0000 03e8 movel #1000,%d3
* 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;
42dba: 588f addql #4,%sp 42dbc: 4280 clrl %d0
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
42dbe: 222e fffc movel %fp@(-4),%d1
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
42dc2: 4c43 1801 remsl %d3,%d1,%d1
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
42dc6: 24ae fff8 movel %fp@(-8),%a2@
time->tv_usec = useconds;
42dca: 2541 0004 movel %d1,%a2@(4)
}
42dce: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 42dd4: 4e5e unlk %fp 42dd6: 4e75 rts
void * __tz __attribute__((unused))
)
{
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
rtems_set_errno_and_return_minus_one( EFAULT );
42dd8: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 42dde: 720e moveq #14,%d1 <== NOT EXECUTED 42de0: 2040 moveal %d0,%a0 <== NOT EXECUTED 42de2: 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;
}
42de4: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
void * __tz __attribute__((unused))
)
{
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
rtems_set_errno_and_return_minus_one( EFAULT );
42dea: 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;
}
42dec: 4e5e unlk %fp <== NOT EXECUTED
00043d80 <getuid>:
/*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
uid_t getuid( void )
{
43d80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Uid;
43d84: 2079 0005 fffc moveal 5fffc <rtems_current_user_env>,%a0 <== NOT EXECUTED
}
43d8a: 4e5e unlk %fp <== NOT EXECUTED 43d8c: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
...
0004dcd8 <imfs_dir_close>:
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4dcd8: 4280 clrl %d0 <== NOT EXECUTED
*/
int imfs_dir_close(
rtems_libio_t *iop
)
{
4dcda: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4dcde: 4e5e unlk %fp <== NOT EXECUTED
0004dd72 <imfs_dir_fstat>:
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4dd72: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
4dd76: 4280 clrl %d0 <== NOT EXECUTED 4dd78: 4281 clrl %d1 <== NOT EXECUTED
rtems_chain_node *the_node;
rtems_chain_control *the_chain;
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
4dd7a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4dd7e: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
rtems_chain_node *the_node;
rtems_chain_control *the_chain;
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
4dd82: 2050 moveal %a0@,%a0 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4dd84: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
4dd88: 2408 movel %a0,%d2 <== NOT EXECUTED 4dd8a: 0682 0000 0050 addil #80,%d2 <== NOT EXECUTED
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
buf->st_ino = the_jnode->st_ino;
4dd90: 2368 0034 0008 movel %a0@(52),%a1@(8) <== NOT EXECUTED
buf->st_mode = the_jnode->st_mode;
4dd96: 2368 002e 000c movel %a0@(46),%a1@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4dd9c: 3368 0032 0010 movew %a0@(50),%a1@(16) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4dda2: 3368 0038 0012 movew %a0@(56),%a1@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4dda8: 3368 003a 0014 movew %a0@(58),%a1@(20) <== NOT EXECUTED
buf->st_rdev = 0ll; buf->st_blksize = 0;
4ddae: 42a9 003e clrl %a1@(62) <== NOT EXECUTED
buf->st_blocks = 0; buf->st_atime = the_jnode->stat_atime;
4ddb2: 2368 003c 0026 movel %a0@(60),%a1@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4ddb8: 2368 0040 002e movel %a0@(64),%a1@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4ddbe: 2368 0044 0036 movel %a0@(68),%a1@(54) <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
4ddc4: 2280 movel %d0,%a1@ <== NOT EXECUTED 4ddc6: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink; buf->st_uid = the_jnode->st_uid; buf->st_gid = the_jnode->st_gid; buf->st_rdev = 0ll; buf->st_blksize = 0; buf->st_blocks = 0;
4ddca: 42a9 0042 clrl %a1@(66) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino; buf->st_mode = the_jnode->st_mode; buf->st_nlink = the_jnode->st_nlink; buf->st_uid = the_jnode->st_uid; buf->st_gid = the_jnode->st_gid; buf->st_rdev = 0ll;
4ddce: 2340 0016 movel %d0,%a1@(22) <== NOT EXECUTED 4ddd2: 2341 001a movel %d1,%a1@(26) <== NOT EXECUTED
buf->st_blocks = 0;
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
buf->st_size = 0;
4ddd6: 2340 001e movel %d0,%a1@(30) <== NOT EXECUTED 4ddda: 2341 0022 movel %d1,%a1@(34) <== NOT EXECUTED
the_chain = &the_jnode->info.directory.Entries;
/* Run through the chain and count the number of directory entries */
/* that are subordinate to this directory node */
for ( the_node = the_chain->first ;
4ddde: 2068 004c moveal %a0@(76),%a0 <== NOT EXECUTED 4dde2: b488 cmpl %a0,%d2 <== NOT EXECUTED 4dde4: 6724 beqs 4de0a <imfs_dir_fstat+0x98> <== NOT EXECUTED 4dde6: 4280 clrl %d0 <== NOT EXECUTED 4dde8: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED 4ddee: 2800 movel %d0,%d4 <== NOT EXECUTED 4ddf0: 2601 movel %d1,%d3 <== NOT EXECUTED
!rtems_chain_is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
4ddf2: 2050 moveal %a0@,%a0 <== NOT EXECUTED 4ddf4: 4285 clrl %d5 <== NOT EXECUTED 4ddf6: 0681 0000 0110 addil #272,%d1 <== NOT EXECUTED 4ddfc: d185 addxl %d5,%d0 <== NOT EXECUTED
the_chain = &the_jnode->info.directory.Entries;
/* Run through the chain and count the number of directory entries */
/* that are subordinate to this directory node */
for ( the_node = the_chain->first ;
4ddfe: b488 cmpl %a0,%d2 <== NOT EXECUTED 4de00: 66ec bnes 4ddee <imfs_dir_fstat+0x7c> <== NOT EXECUTED 4de02: 2344 001e movel %d4,%a1@(30) <== NOT EXECUTED 4de06: 2343 0022 movel %d3,%a1@(34) <== NOT EXECUTED
buf->st_size = buf->st_size + sizeof( struct dirent );
}
return 0;
}
4de0a: 4280 clrl %d0 <== NOT EXECUTED 4de0c: 4cd7 003c moveml %sp@,%d2-%d5 <== NOT EXECUTED 4de10: 4e5e unlk %fp <== NOT EXECUTED
0004dce2 <imfs_dir_lseek>:
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
switch( whence ) {
4dce2: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_off64_t imfs_dir_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4dce4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4dce8: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED 4dcec: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
switch( whence ) {
4dcf0: b0ae 0014 cmpl %fp@(20),%d0 <== NOT EXECUTED 4dcf4: 6422 bccs 4dd18 <imfs_dir_lseek+0x36> <== NOT EXECUTED
break;
case SEEK_END: /* Movement past the end of the directory via lseek */
/* is not a permitted operation */
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4dcf6: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4dcfc: 2440 moveal %d0,%a2 <== NOT EXECUTED 4dcfe: 7016 moveq #22,%d0 <== NOT EXECUTED 4dd00: 307c ffff moveaw #-1,%a0 <== NOT EXECUTED 4dd04: 327c ffff moveaw #-1,%a1 <== NOT EXECUTED 4dd08: 2480 movel %d0,%a2@ <== NOT EXECUTED
break;
}
return 0;
}
4dd0a: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 4dd10: 2008 movel %a0,%d0 <== NOT EXECUTED 4dd12: 2209 movel %a1,%d1 <== NOT EXECUTED 4dd14: 4e5e unlk %fp <== NOT EXECUTED 4dd16: 4e75 rts <== NOT EXECUTED
)
{
switch( whence ) {
case SEEK_SET: /* absolute move from the start of the file */
case SEEK_CUR: /* relative move */
iop->offset = (iop->offset/sizeof(struct dirent)) *
4dd18: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED 4dd1c: 741c moveq #28,%d2 <== NOT EXECUTED 4dd1e: 42a7 clrl %sp@- <== NOT EXECUTED 4dd20: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4dd24: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 4dd28: 4eb9 0005 a7a4 jsr 5a7a4 <__divdi3> <== NOT EXECUTED 4dd2e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4dd32: 2c01 movel %d1,%d6 <== NOT EXECUTED 4dd34: e4ae lsrl %d2,%d6 <== NOT EXECUTED 4dd36: 2400 movel %d0,%d2 <== NOT EXECUTED 4dd38: 2601 movel %d1,%d3 <== NOT EXECUTED 4dd3a: 721c moveq #28,%d1 <== NOT EXECUTED 4dd3c: e98a lsll #4,%d2 <== NOT EXECUTED 4dd3e: e98b lsll #4,%d3 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
4dd40: 91c8 subal %a0,%a0 <== NOT EXECUTED 4dd42: 93c9 subal %a1,%a1 <== NOT EXECUTED
)
{
switch( whence ) {
case SEEK_SET: /* absolute move from the start of the file */
case SEEK_CUR: /* relative move */
iop->offset = (iop->offset/sizeof(struct dirent)) *
4dd44: 8486 orl %d6,%d2 <== NOT EXECUTED 4dd46: 2003 movel %d3,%d0 <== NOT EXECUTED 4dd48: e2a8 lsrl %d1,%d0 <== NOT EXECUTED 4dd4a: 2802 movel %d2,%d4 <== NOT EXECUTED 4dd4c: 2a03 movel %d3,%d5 <== NOT EXECUTED 4dd4e: e98c lsll #4,%d4 <== NOT EXECUTED 4dd50: e98d lsll #4,%d5 <== NOT EXECUTED 4dd52: 8880 orl %d0,%d4 <== NOT EXECUTED 4dd54: 2002 movel %d2,%d0 <== NOT EXECUTED 4dd56: 2203 movel %d3,%d1 <== NOT EXECUTED 4dd58: d285 addl %d5,%d1 <== NOT EXECUTED 4dd5a: d184 addxl %d4,%d0 <== NOT EXECUTED 4dd5c: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED 4dd60: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
}
4dd64: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 4dd6a: 2008 movel %a0,%d0 <== NOT EXECUTED 4dd6c: 2209 movel %a1,%d1 <== NOT EXECUTED 4dd6e: 4e5e unlk %fp <== NOT EXECUTED
0004dbb0 <imfs_dir_open>:
IMFS_jnode_t *the_jnode;
/* Is the node a directory ? */
the_jnode = (IMFS_jnode_t *) iop->pathinfo.node_access;
if ( the_jnode->type != IMFS_DIRECTORY )
4dbb0: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4dbb2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4dbb6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
/* Is the node a directory ? */
the_jnode = (IMFS_jnode_t *) iop->pathinfo.node_access;
if ( the_jnode->type != IMFS_DIRECTORY )
4dbba: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4dbbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
/* Is the node a directory ? */
the_jnode = (IMFS_jnode_t *) iop->pathinfo.node_access;
if ( the_jnode->type != IMFS_DIRECTORY )
4dbc0: b0a9 0048 cmpl %a1@(72),%d0 <== NOT EXECUTED 4dbc4: 6708 beqs 4dbce <imfs_dir_open+0x1e> <== NOT EXECUTED
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
return 0;
}
4dbc6: 241f movel %sp@+,%d2 <== NOT EXECUTED
/* Is the node a directory ? */
the_jnode = (IMFS_jnode_t *) iop->pathinfo.node_access;
if ( the_jnode->type != IMFS_DIRECTORY )
return -1; /* It wasn't a directory --> return error */
4dbc8: 70ff moveq #-1,%d0 <== NOT EXECUTED
iop->offset = 0;
return 0;
}
4dbca: 4e5e unlk %fp <== NOT EXECUTED 4dbcc: 4e75 rts <== NOT EXECUTED
if ( the_jnode->type != IMFS_DIRECTORY )
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
return 0;
4dbce: 4200 clrb %d0 <== NOT EXECUTED
the_jnode = (IMFS_jnode_t *) iop->pathinfo.node_access;
if ( the_jnode->type != IMFS_DIRECTORY )
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
4dbd0: 4281 clrl %d1 <== NOT EXECUTED 4dbd2: 4282 clrl %d2 <== NOT EXECUTED 4dbd4: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED 4dbd8: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
return 0; }
4dbdc: 241f movel %sp@+,%d2 <== NOT EXECUTED 4dbde: 4e5e unlk %fp <== NOT EXECUTED
0004dbe2 <imfs_dir_read>:
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4dbe2: 4e56 fec4 linkw %fp,#-316 <== NOT EXECUTED 4dbe6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4dbea: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
int current_entry;
int first_entry;
int last_entry;
struct dirent tmp_dirent;
the_jnode = (IMFS_jnode_t *)iop->pathinfo.node_access;
4dbee: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED 4dbf2: 2a08 movel %a0,%d5 <== NOT EXECUTED 4dbf4: 0685 0000 0050 addil #80,%d5 <== NOT EXECUTED
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4dbfa: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
Chain_Control *the_chain
)
{
return (the_chain->first == _Chain_Tail(the_chain));
4dbfe: 2468 004c moveal %a0@(76),%a2 <== NOT EXECUTED
struct dirent tmp_dirent;
the_jnode = (IMFS_jnode_t *)iop->pathinfo.node_access;
the_chain = &the_jnode->info.directory.Entries;
if ( rtems_chain_is_empty( the_chain ) )
4dc02: ba8a cmpl %a2,%d5 <== NOT EXECUTED 4dc04: 6700 00c4 beqw 4dcca <imfs_dir_read+0xe8> <== NOT EXECUTED
bytes_transferred = 0;
first_entry = iop->offset;
/* protect against using sizes that are not exact multiples of the */
/* -dirent- size. These could result in unexpected results */
last_entry = first_entry + (count/sizeof(struct dirent)) * sizeof(struct dirent);
4dc08: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED 4dc0e: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED
/* Move to the first of the desired directory entries */
the_node = the_chain->first;
bytes_transferred = 0;
first_entry = iop->offset;
4dc12: 262b 0010 movel %a3@(16),%d3 <== NOT EXECUTED
/* protect against using sizes that are not exact multiples of the */ /* -dirent- size. These could result in unexpected results */ last_entry = first_entry + (count/sizeof(struct dirent)) * sizeof(struct dirent);
4dc16: 2004 movel %d4,%d0 <== NOT EXECUTED 4dc18: e18c lsll #8,%d4 <== NOT EXECUTED 4dc1a: e988 lsll #4,%d0 <== NOT EXECUTED 4dc1c: d880 addl %d0,%d4 <== NOT EXECUTED 4dc1e: d883 addl %d3,%d4 <== NOT EXECUTED
/* The directory was not empty so try to move to the desired entry in chain*/
for (
4dc20: 4a84 tstl %d4 <== NOT EXECUTED 4dc22: 6f00 00a6 blew 4dcca <imfs_dir_read+0xe8> <== NOT EXECUTED
tmp_dirent.d_off = current_entry;
tmp_dirent.d_reclen = sizeof( struct dirent );
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
tmp_dirent.d_namlen = strlen( the_jnode->name );
strcpy( tmp_dirent.d_name, the_jnode->name );
4dc26: 49ee fef0 lea %fp@(-272),%a4 <== NOT EXECUTED 4dc2a: 41ec 0010 lea %a4@(16),%a0 <== NOT EXECUTED
/* protect against using sizes that are not exact multiples of the */
/* -dirent- size. These could result in unexpected results */
last_entry = first_entry + (count/sizeof(struct dirent)) * sizeof(struct dirent);
/* The directory was not empty so try to move to the desired entry in chain*/
for (
4dc2e: 4282 clrl %d2 <== NOT EXECUTED 4dc30: 4286 clrl %d6 <== NOT EXECUTED
tmp_dirent.d_reclen = sizeof( struct dirent );
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
tmp_dirent.d_namlen = strlen( the_jnode->name );
strcpy( tmp_dirent.d_name, the_jnode->name );
memcpy(
4dc32: 4bf9 0004 f1b8 lea 4f1b8 <memcpy>,%a5 <== NOT EXECUTED
tmp_dirent.d_off = current_entry;
tmp_dirent.d_reclen = sizeof( struct dirent );
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
tmp_dirent.d_namlen = strlen( the_jnode->name );
strcpy( tmp_dirent.d_name, the_jnode->name );
4dc38: 2d48 feec movel %a0,%fp@(-276) <== NOT EXECUTED
/* entry in the read */
return bytes_transferred; /* Indicate that there are no more */
/* entries to return */
}
if( current_entry >= first_entry ) {
4dc3c: b483 cmpl %d3,%d2 <== NOT EXECUTED 4dc3e: 6c1c bges 4dc5c <imfs_dir_read+0x7a> <== NOT EXECUTED
);
iop->offset = iop->offset + sizeof(struct dirent);
bytes_transferred = bytes_transferred + sizeof( struct dirent );
}
the_node = the_node->next;
4dc40: 2452 moveal %a2@,%a2 <== NOT EXECUTED
* to the end of the 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.
*/
ssize_t imfs_dir_read(
4dc42: 0682 0000 0110 addil #272,%d2 <== NOT EXECUTED
/* protect against using sizes that are not exact multiples of the */
/* -dirent- size. These could result in unexpected results */
last_entry = first_entry + (count/sizeof(struct dirent)) * sizeof(struct dirent);
/* The directory was not empty so try to move to the desired entry in chain*/
for (
4dc48: b484 cmpl %d4,%d2 <== NOT EXECUTED 4dc4a: 6c04 bges 4dc50 <imfs_dir_read+0x6e> <== NOT EXECUTED
current_entry = 0;
current_entry < last_entry;
current_entry = current_entry + sizeof(struct dirent) ){
if ( rtems_chain_is_tail( the_chain, the_node ) ){
4dc4c: ba8a cmpl %a2,%d5 <== NOT EXECUTED 4dc4e: 66ec bnes 4dc3c <imfs_dir_read+0x5a> <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4dc50: 2006 movel %d6,%d0 <== NOT EXECUTED 4dc52: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4dc58: 4e5e unlk %fp <== NOT EXECUTED 4dc5a: 4e75 rts <== NOT EXECUTED
/* Move the entry to the return buffer */
tmp_dirent.d_off = current_entry;
tmp_dirent.d_reclen = sizeof( struct dirent );
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
tmp_dirent.d_namlen = strlen( the_jnode->name );
4dc5c: 2e0a movel %a2,%d7 <== NOT EXECUTED 4dc5e: 0687 0000 000c addil #12,%d7 <== NOT EXECUTED
if( current_entry >= first_entry ) {
/* Move the entry to the return buffer */
tmp_dirent.d_off = current_entry;
tmp_dirent.d_reclen = sizeof( struct dirent );
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
4dc64: 2d6a 0034 fef0 movel %a2@(52),%fp@(-272) <== NOT EXECUTED
}
if( current_entry >= first_entry ) {
/* Move the entry to the return buffer */
tmp_dirent.d_off = current_entry;
tmp_dirent.d_reclen = sizeof( struct dirent );
4dc6a: 323c 0110 movew #272,%d1 <== NOT EXECUTED
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
tmp_dirent.d_namlen = strlen( the_jnode->name );
4dc6e: 2f07 movel %d7,%sp@- <== NOT EXECUTED
}
if( current_entry >= first_entry ) {
/* Move the entry to the return buffer */
tmp_dirent.d_off = current_entry;
tmp_dirent.d_reclen = sizeof( struct dirent );
4dc70: 3d41 fefc movew %d1,%fp@(-260) <== NOT EXECUTED
/* entries to return */
}
if( current_entry >= first_entry ) {
/* Move the entry to the return buffer */
tmp_dirent.d_off = current_entry;
4dc74: 2d42 fef8 movel %d2,%fp@(-264) <== NOT EXECUTED 4dc78: 5bc0 smi %d0 <== NOT EXECUTED 4dc7a: 49c0 extbl %d0 <== NOT EXECUTED 4dc7c: 2d40 fef4 movel %d0,%fp@(-268) <== NOT EXECUTED
tmp_dirent.d_reclen = sizeof( struct dirent );
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
tmp_dirent.d_namlen = strlen( the_jnode->name );
4dc80: 4eb9 0004 fd64 jsr 4fd64 <strlen> <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4dc86: 2e87 movel %d7,%sp@ <== NOT EXECUTED 4dc88: 2f2e feec movel %fp@(-276),%sp@- <== NOT EXECUTED
/* Move the entry to the return buffer */
tmp_dirent.d_off = current_entry;
tmp_dirent.d_reclen = sizeof( struct dirent );
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
tmp_dirent.d_namlen = strlen( the_jnode->name );
4dc8c: 3d40 fefe movew %d0,%fp@(-258) <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4dc90: 4eb9 0004 f8b8 jsr 4f8b8 <strcpy> <== NOT EXECUTED
memcpy(
4dc96: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED 4dc9a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4dc9e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4dca0: 4870 6800 pea %a0@(00000000,%d6:l) <== NOT EXECUTED
buffer + bytes_transferred,
(void *)&tmp_dirent,
sizeof( struct dirent )
);
iop->offset = iop->offset + sizeof(struct dirent);
bytes_transferred = bytes_transferred + sizeof( struct dirent );
4dca4: 0686 0000 0110 addil #272,%d6 <== NOT EXECUTED
tmp_dirent.d_reclen = sizeof( struct dirent );
the_jnode = (IMFS_jnode_t *) the_node;
tmp_dirent.d_ino = the_jnode->st_ino;
tmp_dirent.d_namlen = strlen( the_jnode->name );
strcpy( tmp_dirent.d_name, the_jnode->name );
memcpy(
4dcaa: 4e95 jsr %a5@ <== NOT EXECUTED
buffer + bytes_transferred,
(void *)&tmp_dirent,
sizeof( struct dirent )
);
iop->offset = iop->offset + sizeof(struct dirent);
bytes_transferred = bytes_transferred + sizeof( struct dirent );
4dcac: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
memcpy(
buffer + bytes_transferred,
(void *)&tmp_dirent,
sizeof( struct dirent )
);
iop->offset = iop->offset + sizeof(struct dirent);
4dcb0: 4280 clrl %d0 <== NOT EXECUTED 4dcb2: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED 4dcb8: d3ab 0010 addl %d1,%a3@(16) <== NOT EXECUTED 4dcbc: 2e2b 000c movel %a3@(12),%d7 <== NOT EXECUTED 4dcc0: df80 addxl %d0,%d7 <== NOT EXECUTED 4dcc2: 2747 000c movel %d7,%a3@(12) <== NOT EXECUTED 4dcc6: 6000 ff78 braw 4dc40 <imfs_dir_read+0x5e> <== NOT EXECUTED
the_jnode = (IMFS_jnode_t *)iop->pathinfo.node_access;
the_chain = &the_jnode->info.directory.Entries;
if ( rtems_chain_is_empty( the_chain ) )
return 0;
4dcca: 4286 clrl %d6 <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4dccc: 2006 movel %d6,%d0 <== NOT EXECUTED 4dcce: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4dcd4: 4e5e unlk %fp <== NOT EXECUTED
0004de14 <imfs_dir_rmnod>:
int imfs_dir_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4de14: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4de18: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4de1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
4de1e: 2450 moveal %a0@,%a2 <== NOT EXECUTED 4de20: 200a movel %a2,%d0 <== NOT EXECUTED 4de22: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED
/*
* You cannot remove a node that still has children
*/
if ( ! rtems_chain_is_empty( &the_jnode->info.directory.Entries ) )
4de28: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4de2c: 6642 bnes 4de70 <imfs_dir_rmnod+0x5c> <== NOT EXECUTED
/*
* You cannot remove the file system root node.
*/
if ( pathloc->mt_entry->mt_fs_root.node_access == pathloc->node_access )
4de2e: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4de32: b5e8 001c cmpal %a0@(28),%a2 <== NOT EXECUTED 4de36: 6722 beqs 4de5a <imfs_dir_rmnod+0x46> <== NOT EXECUTED
/*
* You cannot remove a mountpoint.
*/
if ( the_jnode->info.directory.mt_fs != NULL )
4de38: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED 4de3c: 661c bnes 4de5a <imfs_dir_rmnod+0x46> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
IMFS_create_orphan( the_jnode );
4de3e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4de40: 4eb9 0004 ab74 jsr 4ab74 <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4de46: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4de48: 4eb9 0004 abb8 jsr 4abb8 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4de4e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
4de52: 508f addql #8,%sp <== NOT EXECUTED 4de54: 4280 clrl %d0 <== NOT EXECUTED
}
4de56: 4e5e unlk %fp <== NOT EXECUTED 4de58: 4e75 rts <== NOT EXECUTED
/*
* You cannot remove a mountpoint.
*/
if ( the_jnode->info.directory.mt_fs != NULL )
rtems_set_errno_and_return_minus_one( EBUSY );
4de5a: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de60: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
/*
* You cannot remove a mountpoint.
*/
if ( the_jnode->info.directory.mt_fs != NULL )
rtems_set_errno_and_return_minus_one( EBUSY );
4de64: 2040 moveal %d0,%a0 <== NOT EXECUTED 4de66: 7210 moveq #16,%d1 <== NOT EXECUTED 4de68: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de6a: 4e5e unlk %fp <== NOT EXECUTED
/*
* You cannot remove a mountpoint.
*/
if ( the_jnode->info.directory.mt_fs != NULL )
rtems_set_errno_and_return_minus_one( EBUSY );
4de6c: 2081 movel %d1,%a0@ <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de6e: 4e75 rts <== NOT EXECUTED
/*
* You cannot remove a node that still has children
*/
if ( ! rtems_chain_is_empty( &the_jnode->info.directory.Entries ) )
rtems_set_errno_and_return_minus_one( ENOTEMPTY );
4de70: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de76: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
/*
* You cannot remove a node that still has children
*/
if ( ! rtems_chain_is_empty( &the_jnode->info.directory.Entries ) )
rtems_set_errno_and_return_minus_one( ENOTEMPTY );
4de7a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4de7c: 725a moveq #90,%d1 <== NOT EXECUTED 4de7e: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de80: 4e5e unlk %fp <== NOT EXECUTED
/*
* You cannot remove a node that still has children
*/
if ( ! rtems_chain_is_empty( &the_jnode->info.directory.Entries ) )
rtems_set_errno_and_return_minus_one( ENOTEMPTY );
4de82: 2081 movel %d1,%a0@ <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
...
000437aa <init_etc_passwd_group>:
/*
* Initialize useable but dummy databases
*/
void init_etc_passwd_group(void)
{
437aa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 437ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 437b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
FILE *fp;
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
437b2: 4a39 0006 0fb2 tstb 60fb2 <etc_passwd_initted.6339> <== NOT EXECUTED 437b8: 670c beqs 437c6 <init_etc_passwd_group+0x1c> <== NOT EXECUTED
fprintf( fp, "root:x:0:root\n"
"rtems:x:1:rtems\n"
"tty:x:2:tty\n" );
fclose(fp);
}
}
437ba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 437be: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 437c2: 4e5e unlk %fp <== NOT EXECUTED 437c4: 4e75 rts <== NOT EXECUTED
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
return;
etc_passwd_initted = 1;
mkdir("/etc", 0777);
437c6: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED
/*
* Initialize /etc/passwd
*/
if ((fp = fopen("/etc/passwd", "r")) != NULL) {
437ca: 45f9 0005 0048 lea 50048 <fopen>,%a2 <== NOT EXECUTED
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
return;
etc_passwd_initted = 1;
mkdir("/etc", 0777);
437d0: 4879 0005 edb6 pea 5edb6 <rtems_status_assoc+0x1a0> <== NOT EXECUTED
FILE *fp;
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
return;
etc_passwd_initted = 1;
437d6: 7001 moveq #1,%d0 <== NOT EXECUTED 437d8: 13c0 0006 0fb2 moveb %d0,60fb2 <etc_passwd_initted.6339> <== NOT EXECUTED
mkdir("/etc", 0777);
437de: 4eb9 0004 4084 jsr 44084 <mkdir> <== NOT EXECUTED
/*
* Initialize /etc/passwd
*/
if ((fp = fopen("/etc/passwd", "r")) != NULL) {
437e4: 4879 0005 f69f pea 5f69f <_global_impure_ptr+0xbf> <== NOT EXECUTED 437ea: 4879 0005 edbb pea 5edbb <rtems_status_assoc+0x1a5> <== NOT EXECUTED 437f0: 4e92 jsr %a2@ <== NOT EXECUTED 437f2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 437f6: 4a80 tstl %d0 <== NOT EXECUTED 437f8: 677e beqs 43878 <init_etc_passwd_group+0xce> <== NOT EXECUTED
fclose(fp);
437fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 437fc: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED 43802: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Initialize /etc/group
*/
if ((fp = fopen("/etc/group", "r")) != NULL) {
43804: 4879 0005 f69f pea 5f69f <_global_impure_ptr+0xbf> <== NOT EXECUTED 4380a: 4879 0005 ee30 pea 5ee30 <rtems_status_assoc+0x21a> <== NOT EXECUTED 43810: 4e92 jsr %a2@ <== NOT EXECUTED 43812: 508f addql #8,%sp <== NOT EXECUTED 43814: 4a80 tstl %d0 <== NOT EXECUTED 43816: 6716 beqs 4382e <init_etc_passwd_group+0x84> <== NOT EXECUTED
fclose(fp);
43818: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4381a: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED
fprintf( fp, "root:x:0:root\n"
"rtems:x:1:rtems\n"
"tty:x:2:tty\n" );
fclose(fp);
}
}
43820: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/*
* Initialize /etc/group
*/
if ((fp = fopen("/etc/group", "r")) != NULL) {
fclose(fp);
43824: 588f addql #4,%sp <== NOT EXECUTED
fprintf( fp, "root:x:0:root\n"
"rtems:x:1:rtems\n"
"tty:x:2:tty\n" );
fclose(fp);
}
}
43826: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4382a: 4e5e unlk %fp <== NOT EXECUTED 4382c: 4e75 rts <== NOT EXECUTED
* Initialize /etc/group
*/
if ((fp = fopen("/etc/group", "r")) != NULL) {
fclose(fp);
}
else if ((fp = fopen("/etc/group", "w")) != NULL) {
4382e: 4879 0005 edc7 pea 5edc7 <rtems_status_assoc+0x1b1> <== NOT EXECUTED 43834: 4879 0005 ee30 pea 5ee30 <rtems_status_assoc+0x21a> <== NOT EXECUTED 4383a: 4eb9 0005 0048 jsr 50048 <fopen> <== NOT EXECUTED 43840: 508f addql #8,%sp <== NOT EXECUTED 43842: 2440 moveal %d0,%a2 <== NOT EXECUTED 43844: 4a80 tstl %d0 <== NOT EXECUTED 43846: 6700 ff72 beqw 437ba <init_etc_passwd_group+0x10> <== NOT EXECUTED
fprintf( fp, "root:x:0:root\n"
4384a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4384c: 4878 002a pea 2a <OPER2+0x16> <== NOT EXECUTED 43850: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 43854: 4879 0005 ee3b pea 5ee3b <rtems_status_assoc+0x225> <== NOT EXECUTED 4385a: 4eb9 0005 07fc jsr 507fc <fwrite> <== NOT EXECUTED
"rtems:x:1:rtems\n"
"tty:x:2:tty\n" );
fclose(fp);
43860: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43862: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED
} }
43868: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
}
else if ((fp = fopen("/etc/group", "w")) != NULL) {
fprintf( fp, "root:x:0:root\n"
"rtems:x:1:rtems\n"
"tty:x:2:tty\n" );
fclose(fp);
4386c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
} }
43870: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 43874: 4e5e unlk %fp <== NOT EXECUTED 43876: 4e75 rts <== NOT EXECUTED
* Initialize /etc/passwd
*/
if ((fp = fopen("/etc/passwd", "r")) != NULL) {
fclose(fp);
}
else if ((fp = fopen("/etc/passwd", "w")) != NULL) {
43878: 4879 0005 edc7 pea 5edc7 <rtems_status_assoc+0x1b1> <== NOT EXECUTED 4387e: 4879 0005 edbb pea 5edbb <rtems_status_assoc+0x1a5> <== NOT EXECUTED 43884: 4e92 jsr %a2@ <== NOT EXECUTED 43886: 508f addql #8,%sp <== NOT EXECUTED 43888: 2400 movel %d0,%d2 <== NOT EXECUTED 4388a: 6700 ff78 beqw 43804 <init_etc_passwd_group+0x5a> <== NOT EXECUTED
fprintf(fp, "root:*:0:0:root::/:/bin/sh\n"
4388e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43890: 4878 0066 pea 66 <DBL_MANT_DIG+0x31> <== NOT EXECUTED 43894: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 43898: 4879 0005 edc9 pea 5edc9 <rtems_status_assoc+0x1b3> <== NOT EXECUTED 4389e: 4eb9 0005 07fc jsr 507fc <fwrite> <== NOT EXECUTED
"rtems:*:1:1:RTEMS Application::/:/bin/sh\n"
"tty:!:2:2:tty owner::/:/bin/false\n" );
fclose(fp);
438a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 438a6: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED 438ac: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 438b0: 6000 ff52 braw 43804 <init_etc_passwd_group+0x5a> <== NOT EXECUTED
00046504 <ioctl>:
int ioctl(
int fd,
ioctl_command_t command,
...
)
{
46504: 4e56 0000 linkw %fp,#0 46508: 202e 0008 movel %fp@(8),%d0
va_list ap;
rtems_status_code rc;
rtems_libio_t *iop;
void *buffer;
rtems_libio_check_fd( fd );
4650c: b0b9 0006 2714 cmpl 62714 <rtems_libio_number_iops>,%d0
46512: 6438 bccs 4654c <ioctl+0x48> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
46514: 2200 movel %d0,%d1 46516: ed88 lsll #6,%d0 46518: e789 lsll #3,%d1 4651a: 2079 0006 3fe0 moveal 63fe0 <rtems_libio_iops>,%a0 46520: 9081 subl %d1,%d0 46522: d1c0 addal %d0,%a0
rtems_libio_check_is_open(iop);
46524: 2028 0014 movel %a0@(20),%d0 46528: 0280 0000 0100 andil #256,%d0
4652e: 671c beqs 4654c <ioctl+0x48> <== NEVER TAKEN
buffer = va_arg(ap, void *);
/*
* Now process the ioctl().
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
46530: 2268 0020 moveal %a0@(32),%a1 46534: 2f2e 0010 movel %fp@(16),%sp@- 46538: 2f2e 000c movel %fp@(12),%sp@- 4653c: 2f08 movel %a0,%sp@- 4653e: 2069 0010 moveal %a1@(16),%a0 46542: 4e90 jsr %a0@
va_end( ap );
return rc;
46544: 4fef 000c lea %sp@(12),%sp
}
46548: 4e5e unlk %fp 4654a: 4e75 rts
rtems_libio_t *iop;
void *buffer;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
4654c: 4eb9 0005 2ec0 jsr 52ec0 <__errno> <== NOT EXECUTED 46552: 7209 moveq #9,%d1 <== NOT EXECUTED 46554: 2040 moveal %d0,%a0 <== NOT EXECUTED 46556: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
va_end( ap );
return rc;
}
46558: 4e5e unlk %fp <== NOT EXECUTED
rtems_libio_t *iop;
void *buffer;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
4655a: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
va_end( ap );
return rc;
}
...
00044cb4 <iproc>:
/*
* Process a single input character
*/
static int
iproc (unsigned char c, struct rtems_termios_tty *tty)
{
44cb4: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 44cb8: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 44cbc: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 44cc0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (tty->termios.c_iflag & ISTRIP)
44cc4: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
/*
* Process a single input character
*/
static int
iproc (unsigned char c, struct rtems_termios_tty *tty)
{
44cc8: 1401 moveb %d1,%d2 <== NOT EXECUTED
if (tty->termios.c_iflag & ISTRIP)
44cca: 0800 0005 btst #5,%d0 <== NOT EXECUTED 44cce: 6704 beqs 44cd4 <iproc+0x20> <== NOT EXECUTED
c &= 0x7f;
44cd0: 747f moveq #127,%d2 <== NOT EXECUTED 44cd2: c481 andl %d1,%d2 <== NOT EXECUTED
if (tty->termios.c_iflag & IUCLC)
44cd4: 0800 0009 btst #9,%d0 <== NOT EXECUTED 44cd8: 6720 beqs 44cfa <iproc+0x46> <== NOT EXECUTED
c = tolower (c);
44cda: 2079 0005 e60c moveal 5e60c <__ctype_ptr__>,%a0 <== NOT EXECUTED 44ce0: 7603 moveq #3,%d3 <== NOT EXECUTED 44ce2: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 44ce8: 1230 2801 moveb %a0@(00000001,%d2:l),%d1 <== NOT EXECUTED 44cec: 49c1 extbl %d1 <== NOT EXECUTED 44cee: c283 andl %d3,%d1 <== NOT EXECUTED 44cf0: 163c 0001 moveb #1,%d3 <== NOT EXECUTED 44cf4: b681 cmpl %d1,%d3 <== NOT EXECUTED 44cf6: 6700 00e0 beqw 44dd8 <iproc+0x124> <== NOT EXECUTED
if (c == '\r') {
44cfa: 4281 clrl %d1 <== NOT EXECUTED 44cfc: 1202 moveb %d2,%d1 <== NOT EXECUTED 44cfe: 760d moveq #13,%d3 <== NOT EXECUTED 44d00: b681 cmpl %d1,%d3 <== NOT EXECUTED 44d02: 6740 beqs 44d44 <iproc+0x90> <== NOT EXECUTED
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)) {
44d04: 760a moveq #10,%d3 <== NOT EXECUTED 44d06: b681 cmpl %d1,%d3 <== NOT EXECUTED 44d08: 6700 00c4 beqw 44dce <iproc+0x11a> <== NOT EXECUTED
c = '\r';
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
44d0c: 4a02 tstb %d2 <== NOT EXECUTED 44d0e: 664c bnes 44d5c <iproc+0xa8> <== NOT EXECUTED
}
/*
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
44d10: 2039 0005 e53c movel 5e53c <rtems_termios_cbufsize>,%d0 <== NOT EXECUTED 44d16: 5380 subql #1,%d0 <== NOT EXECUTED 44d18: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED 44d1c: b081 cmpl %d1,%d0 <== NOT EXECUTED 44d1e: 6f28 bles 44d48 <iproc+0x94> <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
44d20: 7008 moveq #8,%d0 <== NOT EXECUTED 44d22: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED 44d26: 6600 00ba bnew 44de2 <iproc+0x12e> <== NOT EXECUTED
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
44d2a: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
} return 0;
44d2e: 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;
44d30: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED 44d34: 5281 addql #1,%d1 <== NOT EXECUTED 44d36: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
} return 0; }
44d3a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 44d40: 4e5e unlk %fp <== NOT EXECUTED 44d42: 4e75 rts <== NOT EXECUTED
if (tty->termios.c_iflag & IUCLC)
c = tolower (c);
if (c == '\r') {
if (tty->termios.c_iflag & IGNCR)
44d44: 4a00 tstb %d0 <== NOT EXECUTED 44d46: 6c0c bges 44d54 <iproc+0xa0> <== NOT EXECUTED
if (tty->ccount < (CBUFSIZE-1)) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
44d48: 4280 clrl %d0 <== NOT EXECUTED
}
44d4a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 44d50: 4e5e unlk %fp <== NOT EXECUTED 44d52: 4e75 rts <== NOT EXECUTED
c = tolower (c);
if (c == '\r') {
if (tty->termios.c_iflag & IGNCR)
return 0;
if (tty->termios.c_iflag & ICRNL)
44d54: 0800 0008 btst #8,%d0 <== NOT EXECUTED 44d58: 6702 beqs 44d5c <iproc+0xa8> <== NOT EXECUTED
c = '\n';
44d5a: 740a moveq #10,%d2 <== NOT EXECUTED
} else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {
c = '\r';
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
44d5c: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED 44d60: 0801 0001 btst #1,%d1 <== NOT EXECUTED 44d64: 67aa beqs 44d10 <iproc+0x5c> <== NOT EXECUTED
if (c == tty->termios.c_cc[VERASE]) {
44d66: 4283 clrl %d3 <== NOT EXECUTED 44d68: 162a 0043 moveb %a2@(67),%d3 <== NOT EXECUTED 44d6c: 4280 clrl %d0 <== NOT EXECUTED 44d6e: 1002 moveb %d2,%d0 <== NOT EXECUTED 44d70: b083 cmpl %d3,%d0 <== NOT EXECUTED 44d72: 6700 0122 beqw 44e96 <iproc+0x1e2> <== NOT EXECUTED
erase (tty, 0);
return 0;
}
else if (c == tty->termios.c_cc[VKILL]) {
44d76: 4283 clrl %d3 <== NOT EXECUTED 44d78: 162a 0044 moveb %a2@(68),%d3 <== NOT EXECUTED 44d7c: b083 cmpl %d3,%d0 <== NOT EXECUTED 44d7e: 6700 00a8 beqw 44e28 <iproc+0x174> <== NOT EXECUTED
erase (tty, 1);
return 0;
}
else if (c == tty->termios.c_cc[VEOF]) {
44d82: 4283 clrl %d3 <== NOT EXECUTED 44d84: 162a 0045 moveb %a2@(69),%d3 <== NOT EXECUTED 44d88: b083 cmpl %d3,%d0 <== NOT EXECUTED 44d8a: 6700 00fe beqw 44e8a <iproc+0x1d6> <== NOT EXECUTED
return 1;
} else if (c == '\n') {
44d8e: 760a moveq #10,%d3 <== NOT EXECUTED 44d90: b680 cmpl %d0,%d3 <== NOT EXECUTED 44d92: 6700 00ac beqw 44e40 <iproc+0x18c> <== NOT EXECUTED
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]) ||
44d96: 4283 clrl %d3 <== NOT EXECUTED 44d98: 162a 004c moveb %a2@(76),%d3 <== NOT EXECUTED 44d9c: b083 cmpl %d3,%d0 <== NOT EXECUTED 44d9e: 670c beqs 44dac <iproc+0xf8> <== NOT EXECUTED 44da0: 4283 clrl %d3 <== NOT EXECUTED 44da2: 162a 0051 moveb %a2@(81),%d3 <== NOT EXECUTED 44da6: b083 cmpl %d3,%d0 <== NOT EXECUTED 44da8: 6600 ff66 bnew 44d10 <iproc+0x5c> <== NOT EXECUTED
(c == tty->termios.c_cc[VEOL2])) {
if (tty->termios.c_lflag & ECHO)
44dac: 44c1 movew %d1,%ccr <== NOT EXECUTED 44dae: 6b58 bmis 44e08 <iproc+0x154> <== NOT EXECUTED
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
44db0: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
return 1;
44db4: 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;
44db6: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 44dba: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED 44dbe: 5281 addql #1,%d1 <== NOT EXECUTED 44dc0: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44dc4: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 44dca: 4e5e unlk %fp <== NOT EXECUTED 44dcc: 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)) {
44dce: 0800 0006 btst #6,%d0 <== NOT EXECUTED 44dd2: 6788 beqs 44d5c <iproc+0xa8> <== NOT EXECUTED
c = '\r';
44dd4: 740d moveq #13,%d2 <== NOT EXECUTED 44dd6: 6084 bras 44d5c <iproc+0xa8> <== NOT EXECUTED
{
if (tty->termios.c_iflag & ISTRIP)
c &= 0x7f;
if (tty->termios.c_iflag & IUCLC)
c = tolower (c);
44dd8: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED 44dde: 6000 ff1a braw 44cfa <iproc+0x46> <== NOT EXECUTED
/*
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
44de2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44de4: 4280 clrl %d0 <== NOT EXECUTED 44de6: 1002 moveb %d2,%d0 <== NOT EXECUTED 44de8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44dea: 4eba fc2c jsr %pc@(44a18 <echo>) <== NOT EXECUTED 44dee: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED 44df2: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
}
return 0;
44df4: 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;
44df6: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 44dfa: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED 44dfe: 5281 addql #1,%d1 <== NOT EXECUTED 44e00: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED 44e04: 6000 ff34 braw 44d3a <iproc+0x86> <== 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);
44e08: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44e0a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44e0c: 4eba fc0a jsr %pc@(44a18 <echo>) <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
44e10: 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);
44e14: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
return 1;
44e16: 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;
44e18: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 44e1c: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED 44e20: 5281 addql #1,%d1 <== NOT EXECUTED 44e22: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED 44e26: 609c bras 44dc4 <iproc+0x110> <== NOT EXECUTED
if (c == tty->termios.c_cc[VERASE]) {
erase (tty, 0);
return 0;
}
else if (c == tty->termios.c_cc[VKILL]) {
erase (tty, 1);
44e28: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44e2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44e2e: 4eba fc8c jsr %pc@(44abc <erase>) <== NOT EXECUTED
return 0;
44e32: 508f addql #8,%sp <== NOT EXECUTED 44e34: 4280 clrl %d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44e36: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 44e3c: 4e5e unlk %fp <== NOT EXECUTED 44e3e: 4e75 rts <== NOT EXECUTED
return 0;
}
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
} else if (c == '\n') {
if (tty->termios.c_lflag & (ECHO | ECHONL))
44e40: 7048 moveq #72,%d0 <== NOT EXECUTED 44e42: c280 andl %d0,%d1 <== NOT EXECUTED 44e44: 6620 bnes 44e66 <iproc+0x1b2> <== NOT EXECUTED
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
44e46: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
return 1;
44e4a: 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;
44e4c: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 44e50: 740a moveq #10,%d2 <== NOT EXECUTED 44e52: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED 44e56: 5281 addql #1,%d1 <== NOT EXECUTED 44e58: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44e5c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 44e62: 4e5e unlk %fp <== NOT EXECUTED 44e64: 4e75 rts <== 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);
44e66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44e68: 4878 000a pea a <LASTO> <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
44e6c: 740a moveq #10,%d2 <== 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);
44e6e: 4eba fba8 jsr %pc@(44a18 <echo>) <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
44e72: 222a 0020 movel %a2@(32),%d1 <== 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);
44e76: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
return 1;
44e78: 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;
44e7a: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 44e7e: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED 44e82: 5281 addql #1,%d1 <== NOT EXECUTED 44e84: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED 44e88: 60d2 bras 44e5c <iproc+0x1a8> <== NOT EXECUTED
else if (c == tty->termios.c_cc[VKILL]) {
erase (tty, 1);
return 0;
}
else if (c == tty->termios.c_cc[VEOF]) {
return 1;
44e8a: 7001 moveq #1,%d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44e8c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 44e92: 4e5e unlk %fp <== NOT EXECUTED 44e94: 4e75 rts <== NOT EXECUTED
c = '\r';
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
if (c == tty->termios.c_cc[VERASE]) {
erase (tty, 0);
44e96: 42a7 clrl %sp@- <== NOT EXECUTED 44e98: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44e9a: 4eba fc20 jsr %pc@(44abc <erase>) <== NOT EXECUTED
return 0;
44e9e: 508f addql #8,%sp <== NOT EXECUTED 44ea0: 4280 clrl %d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44ea2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 44ea8: 4e5e unlk %fp <== NOT EXECUTED
00046fd4 <is_fs_below_mount_point>:
static bool is_fs_below_mount_point(
const rtems_filesystem_mount_table_entry_t *mt_entry,
void *arg
)
{
46fd4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fd8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return arg == mt_entry->mt_point_node.mt_entry;
46fdc: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 46fe0: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED 46fe4: 57c0 seq %d0 <== NOT EXECUTED
}
46fe6: 4e5e unlk %fp <== NOT EXECUTED 46fe8: 4480 negl %d0 <== NOT EXECUTED
000431c8 <is_node_fs_root>:
static bool is_node_fs_root(
const rtems_filesystem_mount_table_entry_t *mt_entry,
void *arg
)
{
431c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 431cc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return arg == mt_entry->mt_fs_root.node_access;
431d0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 431d4: b0a8 001c cmpl %a0@(28),%d0 <== NOT EXECUTED 431d8: 57c0 seq %d0 <== NOT EXECUTED
}
431da: 4e5e unlk %fp <== NOT EXECUTED 431dc: 4480 negl %d0 <== NOT EXECUTED
00043d94 <issetugid>:
#if defined(RTEMS_NEWLIB) && !defined(HAVE_ISSETUGID)
int issetugid (void)
{
return 0;
}
43d94: 4280 clrl %d0 <== NOT EXECUTED
#include "config.h"
#endif
#if defined(RTEMS_NEWLIB) && !defined(HAVE_ISSETUGID)
int issetugid (void)
{
43d96: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; }
43d9a: 4e5e unlk %fp <== NOT EXECUTED
...
00046804 <kill>:
int kill(
pid_t pid,
int sig
)
{
46804: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
46808: 42a7 clrl %sp@- <== NOT EXECUTED 4680a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4680e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46812: 4eb9 0004 cf90 jsr 4cf90 <killinfo> <== NOT EXECUTED
}
46818: 4e5e unlk %fp <== NOT EXECUTED
0005c140 <killinfo>:
int killinfo(
pid_t pid,
int sig,
const union sigval *value
)
{
5c140: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 5c144: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 5c148: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 5c14c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
POSIX_signals_Siginfo_node *psiginfo;
/*
* Only supported for the "calling process" (i.e. this node).
*/
if ( pid != getpid() )
5c150: 4eb9 0005 bc74 jsr 5bc74 <getpid> <== NOT EXECUTED 5c156: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 5c15a: 6600 0234 bnew 5c390 <killinfo+0x250> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
/*
* Validate the signal passed.
*/
if ( !sig )
5c15e: 4a83 tstl %d3 <== NOT EXECUTED 5c160: 6700 0246 beqw 5c3a8 <killinfo+0x268> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
5c164: 2003 movel %d3,%d0 <== NOT EXECUTED 5c166: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
5c168: 721f moveq #31,%d1 <== NOT EXECUTED 5c16a: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c16c: 6500 023a bcsw 5c3a8 <killinfo+0x268> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/*
* If the signal is being ignored, then we are out of here.
*/
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )
5c170: 2c03 movel %d3,%d6 <== NOT EXECUTED 5c172: 2a03 movel %d3,%d5 <== NOT EXECUTED 5c174: 7201 moveq #1,%d1 <== NOT EXECUTED 5c176: e98e lsll #4,%d6 <== NOT EXECUTED 5c178: e58d lsll #2,%d5 <== NOT EXECUTED 5c17a: 2806 movel %d6,%d4 <== NOT EXECUTED 5c17c: 9885 subl %d5,%d4 <== NOT EXECUTED 5c17e: 2044 moveal %d4,%a0 <== NOT EXECUTED 5c180: d1fc 0006 0132 addal #393522,%a0 <== NOT EXECUTED 5c186: b290 cmpl %a0@,%d1 <== NOT EXECUTED 5c188: 6700 01f2 beqw 5c37c <killinfo+0x23c> <== NOT EXECUTED
/* * P1003.1c/Draft 10, p. 33 says that certain signals should always * be directed to the executing thread such as those caused by hardware * faults. */ if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )
5c18c: 123c 0008 moveb #8,%d1 <== NOT EXECUTED 5c190: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c192: 6700 00d2 beqw 5c266 <killinfo+0x126> <== NOT EXECUTED 5c196: 123c 0004 moveb #4,%d1 <== NOT EXECUTED 5c19a: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c19c: 6700 00c8 beqw 5c266 <killinfo+0x126> <== NOT EXECUTED 5c1a0: 123c 000b moveb #11,%d1 <== NOT EXECUTED 5c1a4: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c1a6: 6700 00be beqw 5c266 <killinfo+0x126> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
5c1aa: 7401 moveq #1,%d2 <== NOT EXECUTED 5c1ac: e1aa lsll %d0,%d2 <== NOT EXECUTED
/* * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; siginfo->si_code = SI_USER;
5c1ae: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Build up a siginfo structure
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
5c1b0: 2d43 fff4 movel %d3,%fp@(-12) <== NOT EXECUTED
siginfo->si_code = SI_USER;
5c1b4: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
if ( !value ) {
5c1b8: 4a8a tstl %a2 <== NOT EXECUTED 5c1ba: 6700 01cc beqw 5c388 <killinfo+0x248> <== NOT EXECUTED
siginfo->si_value.sival_int = 0;
} else {
siginfo->si_value = *value;
5c1be: 2d52 fffc movel %a2@,%fp@(-4) <== NOT EXECUTED 5c1c2: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5c1c8: 5280 addql #1,%d0 <== NOT EXECUTED 5c1ca: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Is the currently executing thread interested? If so then it will
* get it an execute it as soon as the dispatcher executes.
*/
the_thread = _Thread_Executing;
5c1d0: 2679 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( _POSIX_signals_Is_interested( api, mask ) ) {
5c1d6: 206b 010e moveal %a3@(270),%a0 <== NOT EXECUTED 5c1da: 2028 00d0 movel %a0@(208),%d0 <== NOT EXECUTED 5c1de: 4680 notl %d0 <== NOT EXECUTED 5c1e0: c082 andl %d2,%d0 <== NOT EXECUTED 5c1e2: 6642 bnes 5c226 <killinfo+0xe6> <== NOT EXECUTED
/* XXX violation of visibility -- need to define thread queue support */
the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;
for ( the_node = the_chain->first ;
5c1e4: 2079 0006 02b6 moveal 602b6 <_POSIX_signals_Wait_queue>,%a0<== NOT EXECUTED 5c1ea: b1fc 0006 02ba cmpal #393914,%a0 <== NOT EXECUTED 5c1f0: 6700 00d6 beqw 5c2c8 <killinfo+0x188> <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c1f4: 2002 movel %d2,%d0 <== NOT EXECUTED
for ( the_node = the_chain->first ;
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
the_thread = (Thread_Control *)the_node;
5c1f6: 2648 moveal %a0,%a3 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c1f8: c0a8 0030 andl %a0@(48),%d0 <== NOT EXECUTED
for ( the_node = the_chain->first ;
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
the_thread = (Thread_Control *)the_node;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5c1fc: 2268 010e moveal %a0@(270),%a1 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c200: 6624 bnes 5c226 <killinfo+0xe6> <== NOT EXECUTED
/*
* Is this thread is blocked waiting for another signal but has
* not blocked this one?
*/
if (~api->signals_blocked & mask)
5c202: 2029 00d0 movel %a1@(208),%d0 <== NOT EXECUTED 5c206: 4680 notl %d0 <== NOT EXECUTED 5c208: c082 andl %d2,%d0 <== NOT EXECUTED 5c20a: 661a bnes 5c226 <killinfo+0xe6> <== NOT EXECUTED
the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;
for ( the_node = the_chain->first ;
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
5c20c: 2050 moveal %a0@,%a0 <== NOT EXECUTED
the_thread = (Thread_Control *)the_node;
5c20e: 2648 moveal %a0,%a3 <== NOT EXECUTED
/* XXX violation of visibility -- need to define thread queue support */
the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;
for ( the_node = the_chain->first ;
5c210: b1fc 0006 02ba cmpal #393914,%a0 <== NOT EXECUTED 5c216: 6700 00b0 beqw 5c2c8 <killinfo+0x188> <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c21a: 2002 movel %d2,%d0 <== NOT EXECUTED 5c21c: c0a8 0030 andl %a0@(48),%d0 <== NOT EXECUTED
for ( the_node = the_chain->first ;
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
the_thread = (Thread_Control *)the_node;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5c220: 2268 010e moveal %a0@(270),%a1 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c224: 67dc beqs 5c202 <killinfo+0xc2> <== NOT EXECUTED
/*
* Returns true if the signal was synchronously given to a thread
* blocked waiting for the signal.
*/
if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) {
5c226: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5c22a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c22c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 5c22e: 4eb9 0005 c400 jsr 5c400 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 5c234: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c238: 4a00 tstb %d0 <== NOT EXECUTED 5c23a: 6618 bnes 5c254 <killinfo+0x114> <== NOT EXECUTED
/*
* We may have woken up a thread but we definitely need to post the
* signal to the process wide information set.
*/
_POSIX_signals_Set_process_signals( mask );
5c23c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c23e: 4eb9 0005 c3e0 jsr 5c3e0 <_POSIX_signals_Set_process_signals><== NOT EXECUTED
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
5c244: 588f addql #4,%sp <== NOT EXECUTED 5c246: 41f9 0006 012a lea 6012a <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 5c24c: 7002 moveq #2,%d0 <== NOT EXECUTED 5c24e: b0b0 4800 cmpl %a0@(00000000,%d4:l),%d0 <== NOT EXECUTED 5c252: 672e beqs 5c282 <killinfo+0x142> <== NOT EXECUTED
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
5c254: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c25a: 4280 clrl %d0 <== NOT EXECUTED
}
5c25c: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c262: 4e5e unlk %fp <== NOT EXECUTED 5c264: 4e75 rts <== NOT EXECUTED
* P1003.1c/Draft 10, p. 33 says that certain signals should always
* be directed to the executing thread such as those caused by hardware
* faults.
*/
if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )
return pthread_kill( pthread_self(), sig );
5c266: 4eb9 0005 c614 jsr 5c614 <pthread_self> <== NOT EXECUTED 5c26c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c26e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c270: 4eb9 0005 c53c jsr 5c53c <pthread_kill> <== NOT EXECUTED 5c276: 508f addql #8,%sp <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c278: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c27e: 4e5e unlk %fp <== NOT EXECUTED 5c280: 4e75 rts <== NOT EXECUTED
_POSIX_signals_Set_process_signals( mask );
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get( &_POSIX_signals_Inactive_siginfo );
5c282: 4879 0006 02aa pea 602aa <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED 5c288: 4eb9 0004 6f44 jsr 46f44 <_Chain_Get> <== NOT EXECUTED
if ( !psiginfo ) {
5c28e: 588f addql #4,%sp <== NOT EXECUTED
_POSIX_signals_Set_process_signals( mask );
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get( &_POSIX_signals_Inactive_siginfo );
5c290: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !psiginfo ) {
5c292: 4a80 tstl %d0 <== NOT EXECUTED 5c294: 6700 012a beqw 5c3c0 <killinfo+0x280> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
}
psiginfo->Info = *siginfo;
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
5c298: 9c85 subl %d5,%d6 <== NOT EXECUTED 5c29a: 0686 0006 0322 addil #394018,%d6 <== NOT EXECUTED
if ( !psiginfo ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
}
psiginfo->Info = *siginfo;
5c2a0: 216e fff4 0008 movel %fp@(-12),%a0@(8) <== NOT EXECUTED 5c2a6: 216e fff8 000c movel %fp@(-8),%a0@(12) <== NOT EXECUTED 5c2ac: 216e fffc 0010 movel %fp@(-4),%a0@(16) <== NOT EXECUTED
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
5c2b2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c2b4: 2f06 movel %d6,%sp@- <== NOT EXECUTED 5c2b6: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED 5c2bc: 508f addql #8,%sp <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
5c2be: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c2c4: 4280 clrl %d0 <== NOT EXECUTED 5c2c6: 6094 bras 5c25c <killinfo+0x11c> <== NOT EXECUTED
* NOTES: * * + rtems internal threads do not receive signals. */ interested = NULL; interested_priority = PRIORITY_MAXIMUM + 1;
5c2c8: 4287 clrl %d7 <== NOT EXECUTED 5c2ca: 1e39 0005 e3e2 moveb 5e3e2 <rtems_maximum_priority>,%d7 <== NOT EXECUTED 5c2d0: 49f9 0005 fc50 lea 5fc50 <_Objects_Information_table+0x8>,%a4<== NOT EXECUTED 5c2d6: 5287 addql #1,%d7 <== NOT EXECUTED
* * NOTES: * * + rtems internal threads do not receive signals. */ interested = NULL;
5c2d8: 97cb subal %a3,%a3 <== NOT EXECUTED
interested_priority = PRIORITY_MAXIMUM + 1;
5c2da: 2447 moveal %d7,%a2 <== NOT EXECUTED
for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
/*
* This can occur when no one is interested and an API is not configured.
*/
if ( !_Objects_Information_table[ the_api ] )
5c2dc: 205c moveal %a4@+,%a0 <== NOT EXECUTED 5c2de: 4a88 tstl %a0 <== NOT EXECUTED 5c2e0: 6770 beqs 5c352 <killinfo+0x212> <== NOT EXECUTED
continue;
the_info = _Objects_Information_table[ the_api ][ 1 ];
5c2e2: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
*/
if ( !the_info )
continue;
#endif
maximum = the_info->maximum;
5c2e6: 4287 clrl %d7 <== NOT EXECUTED 5c2e8: 3e28 000e movew %a0@(14),%d7 <== NOT EXECUTED
object_table = the_info->local_table;
5c2ec: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
for ( index = 1 ; index <= maximum ; index++ ) {
5c2f0: 4a87 tstl %d7 <== NOT EXECUTED 5c2f2: 675e beqs 5c352 <killinfo+0x212> <== NOT EXECUTED
*/
#define _POSIX_signals_Is_interested( _api, _mask ) \
( ~(_api)->signals_blocked & (_mask) )
int killinfo(
5c2f4: 5889 addql #4,%a1 <== NOT EXECUTED
#endif
maximum = the_info->maximum;
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5c2f6: 7001 moveq #1,%d0 <== NOT EXECUTED 5c2f8: 2d43 ffec movel %d3,%fp@(-20) <== NOT EXECUTED
the_thread = (Thread_Control *) object_table[ index ];
5c2fc: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
if ( !the_thread )
5c2fe: 4a88 tstl %a0 <== NOT EXECUTED 5c300: 6746 beqs 5c348 <killinfo+0x208> <== NOT EXECUTED
/*
* If this thread is of lower priority than the interested thread,
* go on to the next thread.
*/
if ( the_thread->current_priority > interested_priority )
5c302: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED 5c306: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 5c308: 653e bcss 5c348 <killinfo+0x208> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( !api )
continue;
#endif
if ( !_POSIX_signals_Is_interested( api, mask ) )
5c30a: 2a68 010e moveal %a0@(270),%a5 <== NOT EXECUTED 5c30e: 262d 00d0 movel %a5@(208),%d3 <== NOT EXECUTED 5c312: 4683 notl %d3 <== NOT EXECUTED 5c314: c682 andl %d2,%d3 <== NOT EXECUTED 5c316: 6730 beqs 5c348 <killinfo+0x208> <== NOT EXECUTED
*
* NOTE: We initialized interested_priority to PRIORITY_MAXIMUM + 1
* so we never have to worry about deferencing a NULL
* interested thread.
*/
if ( the_thread->current_priority < interested_priority ) {
5c318: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 5c31a: 6228 bhis 5c344 <killinfo+0x204> <== NOT EXECUTED
* and blocking interruptibutable by signal.
*
* If the interested thread is ready, don't think about changing.
*/
if ( interested && !_States_Is_ready( interested->current_state ) ) {
5c31c: 4a8b tstl %a3 <== NOT EXECUTED 5c31e: 6728 beqs 5c348 <killinfo+0x208> <== NOT EXECUTED 5c320: 2a6b 0010 moveal %a3@(16),%a5 <== NOT EXECUTED 5c324: 4a8d tstl %a5 <== NOT EXECUTED 5c326: 6720 beqs 5c348 <killinfo+0x208> <== NOT EXECUTED
/* preferred ready over blocked */
DEBUG_STEP("5");
if ( _States_Is_ready( the_thread->current_state ) ) {
5c328: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 5c32c: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED 5c330: 6712 beqs 5c344 <killinfo+0x204> <== NOT EXECUTED
continue;
}
DEBUG_STEP("6");
/* prefer blocked/interruptible over blocked/not interruptible */
if ( !_States_Is_interruptible_by_signal(interested->current_state) ) {
5c332: 260d movel %a5,%d3 <== NOT EXECUTED 5c334: 0803 001c btst #28,%d3 <== NOT EXECUTED 5c338: 660e bnes 5c348 <killinfo+0x208> <== NOT EXECUTED
DEBUG_STEP("7");
if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) {
5c33a: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED 5c33e: 0803 001c btst #28,%d3 <== NOT EXECUTED 5c342: 6704 beqs 5c348 <killinfo+0x208> <== NOT EXECUTED
*/
if ( interested && !_States_Is_ready( interested->current_state ) ) {
/* preferred ready over blocked */
DEBUG_STEP("5");
if ( _States_Is_ready( the_thread->current_state ) ) {
5c344: 2441 moveal %d1,%a2 <== NOT EXECUTED 5c346: 2648 moveal %a0,%a3 <== NOT EXECUTED
#endif
maximum = the_info->maximum;
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5c348: 5280 addql #1,%d0 <== NOT EXECUTED 5c34a: b087 cmpl %d7,%d0 <== NOT EXECUTED 5c34c: 63ae blss 5c2fc <killinfo+0x1bc> <== NOT EXECUTED 5c34e: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED
* + rtems internal threads do not receive signals.
*/
interested = NULL;
interested_priority = PRIORITY_MAXIMUM + 1;
for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
5c352: b9fc 0005 fc58 cmpal #392280,%a4 <== NOT EXECUTED 5c358: 6682 bnes 5c2dc <killinfo+0x19c> <== NOT EXECUTED
}
}
}
}
if ( interested ) {
5c35a: 4a8b tstl %a3 <== NOT EXECUTED 5c35c: 6700 fede beqw 5c23c <killinfo+0xfc> <== NOT EXECUTED
/*
* Returns true if the signal was synchronously given to a thread
* blocked waiting for the signal.
*/
if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) {
5c360: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5c364: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c366: 2f0b movel %a3,%sp@- <== NOT EXECUTED 5c368: 4eb9 0005 c400 jsr 5c400 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 5c36e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c372: 4a00 tstb %d0 <== NOT EXECUTED 5c374: 6700 fec6 beqw 5c23c <killinfo+0xfc> <== NOT EXECUTED 5c378: 6000 feda braw 5c254 <killinfo+0x114> <== NOT EXECUTED
/*
* If the signal is being ignored, then we are out of here.
*/
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )
return 0;
5c37c: 4280 clrl %d0 <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c37e: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c384: 4e5e unlk %fp <== NOT EXECUTED 5c386: 4e75 rts <== NOT EXECUTED
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
siginfo->si_code = SI_USER;
if ( !value ) {
siginfo->si_value.sival_int = 0;
5c388: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 5c38c: 6000 fe34 braw 5c1c2 <killinfo+0x82> <== NOT EXECUTED
/*
* Only supported for the "calling process" (i.e. this node).
*/
if ( pid != getpid() )
rtems_set_errno_and_return_minus_one( ESRCH );
5c390: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5c396: 7603 moveq #3,%d3 <== NOT EXECUTED 5c398: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c39a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c39c: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c39e: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c3a4: 4e5e unlk %fp <== NOT EXECUTED 5c3a6: 4e75 rts <== NOT EXECUTED
*/
if ( !sig )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
rtems_set_errno_and_return_minus_one( EINVAL );
5c3a8: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5c3ae: 7416 moveq #22,%d2 <== NOT EXECUTED 5c3b0: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c3b2: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c3b4: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c3b6: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c3bc: 4e5e unlk %fp <== NOT EXECUTED 5c3be: 4e75 rts <== NOT EXECUTED
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get( &_POSIX_signals_Inactive_siginfo );
if ( !psiginfo ) {
_Thread_Enable_dispatch();
5c3c0: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
5c3c6: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5c3cc: 720b moveq #11,%d1 <== NOT EXECUTED 5c3ce: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c3d0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c3d2: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get( &_POSIX_signals_Inactive_siginfo );
if ( !psiginfo ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
5c3d8: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c3da: 4e5e unlk %fp <== NOT EXECUTED
...
00045608 <lchown>:
const char *path,
uid_t owner,
gid_t group
)
{
return _chown_helper( path, owner, group, false );
45608: 4281 clrl %d1 <== NOT EXECUTED 4560a: 4280 clrl %d0 <== NOT EXECUTED
int lchown(
const char *path,
uid_t owner,
gid_t group
)
{
4560c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _chown_helper( path, owner, group, false );
45610: 322e 0012 movew %fp@(18),%d1 <== NOT EXECUTED 45614: 42a7 clrl %sp@- <== NOT EXECUTED 45616: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED 4561a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4561c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4561e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45622: 4eb9 0004 4fa8 jsr 44fa8 <_chown_helper> <== NOT EXECUTED
}
45628: 4e5e unlk %fp <== NOT EXECUTED
00043598 <libc_wrapup>:
/*
* In case RTEMS is already down, don't do this. It could be
* dangerous.
*/
if (!_System_state_Is_up(_System_state_Get()))
43598: 7003 moveq #3,%d0
extern void _wrapup_reent(struct _reent *);
extern void _reclaim_reent(struct _reent *);
void libc_wrapup(void)
{
4359a: 4e56 0000 linkw %fp,#0 4359e: 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()))
435a0: b0b9 0005 fdfa cmpl 5fdfa <_System_state_Current>,%d0
435a6: 6708 beqs 435b0 <libc_wrapup+0x18> <== ALWAYS TAKEN
*/
fclose (stdin);
fclose (stdout);
fclose (stderr);
}
435a8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 435ac: 4e5e unlk %fp <== NOT EXECUTED 435ae: 4e75 rts <== NOT EXECUTED
/*
* This was already done if the user called exit() directly .
_wrapup_reent(0);
*/
if (_REENT != _global_impure_ptr) {
435b0: 2479 0005 db2e moveal 5db2e <_global_impure_ptr>,%a2 435b6: b5f9 0005 e610 cmpal 5e610 <_impure_ptr>,%a2
435bc: 6710 beqs 435ce <libc_wrapup+0x36>
_wrapup_reent(_global_impure_ptr);
435be: 2f0a movel %a2,%sp@- 435c0: 4eb9 0004 f4b6 jsr 4f4b6 <_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;
435c6: 588f addql #4,%sp 435c8: 23ca 0005 e610 movel %a2,5e610 <_impure_ptr>
*
* Should this be changed to do *all* file streams?
* _fwalk (_REENT, fclose);
*/
fclose (stdin);
435ce: 2f2a 0004 movel %a2@(4),%sp@- 435d2: 45f9 0004 ea5a lea 4ea5a <fclose>,%a2 435d8: 4e92 jsr %a2@
fclose (stdout);
435da: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 435e0: 2f28 0008 movel %a0@(8),%sp@- 435e4: 4e92 jsr %a2@
fclose (stderr);
435e6: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 435ec: 2f28 000c movel %a0@(12),%sp@- 435f0: 4e92 jsr %a2@
}
435f2: 246e fffc moveal %fp@(-4),%a2
* _fwalk (_REENT, fclose);
*/
fclose (stdin);
fclose (stdout);
fclose (stderr);
435f6: 4fef 000c lea %sp@(12),%sp
}
435fa: 4e5e unlk %fp <== NOT EXECUTED
0004647c <link>:
int link(
const char *existing,
const char *new
)
{
4647c: 4e56 ffbc linkw %fp,#-68 <== NOT EXECUTED 46480: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 46484: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Get the node we are linking to.
*/
result = rtems_filesystem_evaluate_path( existing, strlen( existing ),
46488: 260e movel %fp,%d3 <== NOT EXECUTED 4648a: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED 46490: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int link(
const char *existing,
const char *new
)
{
46492: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
/*
* Get the node we are linking to.
*/
result = rtems_filesystem_evaluate_path( existing, strlen( existing ),
46496: 4eb9 0005 58f4 jsr 558f4 <strlen> <== NOT EXECUTED 4649c: 7201 moveq #1,%d1 <== NOT EXECUTED 4649e: 2e81 movel %d1,%sp@ <== NOT EXECUTED 464a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 464a2: 42a7 clrl %sp@- <== NOT EXECUTED 464a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 464a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 464a8: 4eb9 0004 5cb4 jsr 45cb4 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &existing_loc, true );
if ( result != 0 )
464ae: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 464b2: 4a80 tstl %d0 <== NOT EXECUTED 464b4: 670e beqs 464c4 <link+0x48> <== NOT EXECUTED
return -1;
464b6: 74ff moveq #-1,%d2 <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
rtems_filesystem_freenode( &parent_loc );
return result;
}
464b8: 2002 movel %d2,%d0 <== NOT EXECUTED 464ba: 4cee 043c ffbc moveml %fp@(-68),%d2-%d5/%a2 <== NOT EXECUTED 464c0: 4e5e unlk %fp <== NOT EXECUTED 464c2: 4e75 rts <== NOT EXECUTED
/*
* Get the parent of the node we are creating.
*/
rtems_filesystem_get_start_loc( new, &i, &parent_loc );
464c4: 280e movel %fp,%d4 <== NOT EXECUTED 464c6: 0684 ffff ffd0 addil #-48,%d4 <== NOT EXECUTED 464cc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 464ce: 486e fffc pea %fp@(-4) <== NOT EXECUTED 464d2: 2f05 movel %d5,%sp@- <== NOT EXECUTED 464d4: 4eb9 0004 7920 jsr 47920 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*parent_loc.ops->evalformake_h)( &new[i], &parent_loc, &name_start );
464da: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 464de: daae fffc addl %fp@(-4),%d5 <== NOT EXECUTED 464e2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 464e4: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED 464e8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 464ea: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 464ee: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 ) {
464f0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 464f4: 4a80 tstl %d0 <== NOT EXECUTED 464f6: 6666 bnes 4655e <link+0xe2> <== NOT EXECUTED
/*
* Check to see if the caller is trying to link across file system
* boundaries.
*/
if ( parent_loc.mt_entry != existing_loc.mt_entry ) {
464f8: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 464fc: b0ae ffe0 cmpl %fp@(-32),%d0 <== NOT EXECUTED 46500: 6632 bnes 46534 <link+0xb8> <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
rtems_filesystem_freenode( &parent_loc );
rtems_set_errno_and_return_minus_one( EXDEV );
}
result = (*parent_loc.ops->link_h)( &existing_loc, &parent_loc, name_start );
46502: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
46506: 45f9 0004 5fc8 lea 45fc8 <rtems_filesystem_freenode>,%a2 <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
rtems_filesystem_freenode( &parent_loc );
rtems_set_errno_and_return_minus_one( EXDEV );
}
result = (*parent_loc.ops->link_h)( &existing_loc, &parent_loc, name_start );
4650c: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED 46510: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46512: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46514: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED 46518: 4e90 jsr %a0@ <== NOT EXECUTED 4651a: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
4651c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4651e: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_filesystem_freenode( &parent_loc );
46520: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46522: 4e92 jsr %a2@ <== NOT EXECUTED
return result;
46524: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
46528: 2002 movel %d2,%d0 <== NOT EXECUTED 4652a: 4cee 043c ffbc moveml %fp@(-68),%d2-%d5/%a2 <== NOT EXECUTED 46530: 4e5e unlk %fp <== NOT EXECUTED 46532: 4e75 rts <== NOT EXECUTED
* Check to see if the caller is trying to link across file system
* boundaries.
*/
if ( parent_loc.mt_entry != existing_loc.mt_entry ) {
rtems_filesystem_freenode( &existing_loc );
46534: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46536: 45f9 0004 5fc8 lea 45fc8 <rtems_filesystem_freenode>,%a2 <== NOT EXECUTED
rtems_filesystem_freenode( &parent_loc );
rtems_set_errno_and_return_minus_one( EXDEV );
4653c: 74ff moveq #-1,%d2 <== NOT EXECUTED
* Check to see if the caller is trying to link across file system
* boundaries.
*/
if ( parent_loc.mt_entry != existing_loc.mt_entry ) {
rtems_filesystem_freenode( &existing_loc );
4653e: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_filesystem_freenode( &parent_loc );
46540: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46542: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
46544: 4eb9 0005 28c0 jsr 528c0 <__errno> <== NOT EXECUTED 4654a: 508f addql #8,%sp <== NOT EXECUTED 4654c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4654e: 7012 moveq #18,%d0 <== NOT EXECUTED 46550: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
rtems_filesystem_freenode( &parent_loc );
return result;
}
46552: 2002 movel %d2,%d0 <== NOT EXECUTED 46554: 4cee 043c ffbc moveml %fp@(-68),%d2-%d5/%a2 <== NOT EXECUTED 4655a: 4e5e unlk %fp <== NOT EXECUTED 4655c: 4e75 rts <== NOT EXECUTED
rtems_filesystem_get_start_loc( new, &i, &parent_loc );
result = (*parent_loc.ops->evalformake_h)( &new[i], &parent_loc, &name_start );
if ( result != 0 ) {
rtems_filesystem_freenode( &existing_loc );
4655e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
return -1;
46560: 74ff moveq #-1,%d2 <== NOT EXECUTED
rtems_filesystem_get_start_loc( new, &i, &parent_loc );
result = (*parent_loc.ops->evalformake_h)( &new[i], &parent_loc, &name_start );
if ( result != 0 ) {
rtems_filesystem_freenode( &existing_loc );
46562: 4eb9 0004 5fc8 jsr 45fc8 <rtems_filesystem_freenode> <== NOT EXECUTED
return -1;
46568: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
rtems_filesystem_freenode( &parent_loc );
return result;
}
4656a: 2002 movel %d2,%d0 <== NOT EXECUTED 4656c: 4cee 043c ffbc moveml %fp@(-68),%d2-%d5/%a2 <== NOT EXECUTED 46572: 4e5e unlk %fp <== NOT EXECUTED
0004620c <lio_listio>:
int mode __attribute__((unused)),
struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
struct sigevent *sig __attribute__((unused))
)
{
4620c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46210: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 46216: 7258 moveq #88,%d1 <== NOT EXECUTED 46218: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
4621a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4621c: 4e5e unlk %fp <== NOT EXECUTED
struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
struct sigevent *sig __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4621e: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
0005bc9c <lseek>:
off_t lseek(
int fd,
off_t offset,
int whence
)
{
5bc9c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 5bca0: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 5bca4: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 5bca8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 5bcac: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 5bcb0: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
rtems_libio_t *iop;
off_t old_offset;
off_t status;
rtems_libio_check_fd( fd );
5bcb4: b4b9 0005 e334 cmpl 5e334 <rtems_libio_number_iops>,%d2 <== NOT EXECUTED 5bcba: 6400 011e bccw 5bdda <lseek+0x13e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
5bcbe: 2802 movel %d2,%d4 <== NOT EXECUTED 5bcc0: ed8a lsll #6,%d2 <== NOT EXECUTED 5bcc2: e78c lsll #3,%d4 <== NOT EXECUTED 5bcc4: 2479 0005 fb34 moveal 5fb34 <rtems_libio_iops>,%a2 <== NOT EXECUTED 5bcca: 9484 subl %d4,%d2 <== NOT EXECUTED 5bccc: d5c2 addal %d2,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
5bcce: 242a 0014 movel %a2@(20),%d2 <== NOT EXECUTED 5bcd2: 0282 0000 0100 andil #256,%d2 <== NOT EXECUTED 5bcd8: 6700 0100 beqw 5bdda <lseek+0x13e> <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
switch ( whence ) {
5bcdc: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
5bcde: 242a 000c movel %a2@(12),%d2 <== NOT EXECUTED 5bce2: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
switch ( whence ) {
5bce6: b888 cmpl %a0,%d4 <== NOT EXECUTED 5bce8: 6700 00b6 beqw 5bda0 <lseek+0x104> <== NOT EXECUTED 5bcec: 7a02 moveq #2,%d5 <== NOT EXECUTED 5bcee: ba88 cmpl %a0,%d5 <== NOT EXECUTED 5bcf0: 6756 beqs 5bd48 <lseek+0xac> <== NOT EXECUTED 5bcf2: 4a88 tstl %a0 <== NOT EXECUTED 5bcf4: 6600 008c bnew 5bd82 <lseek+0xe6> <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bcf8: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
*/
old_offset = iop->offset;
switch ( whence ) {
case SEEK_SET:
iop->offset = offset;
5bcfc: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED 5bd00: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bd04: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5bd06: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5bd08: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5bd0a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5bd0c: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 5bd10: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd12: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bd16: 2800 movel %d0,%d4 <== NOT EXECUTED 5bd18: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd1a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bd1c: 72ff moveq #-1,%d1 <== NOT EXECUTED 5bd1e: 9285 subl %d5,%d1 <== NOT EXECUTED 5bd20: 9184 subxl %d4,%d0 <== NOT EXECUTED 5bd22: 670e beqs 5bd32 <lseek+0x96> <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bd24: 2004 movel %d4,%d0 <== NOT EXECUTED 5bd26: 2205 movel %d5,%d1 <== NOT EXECUTED 5bd28: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 5bd2e: 4e5e unlk %fp <== NOT EXECUTED 5bd30: 4e75 rts <== NOT EXECUTED 5bd32: 2004 movel %d4,%d0 <== NOT EXECUTED 5bd34: 2205 movel %d5,%d1 <== NOT EXECUTED
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
if ( status == (off_t) -1 )
iop->offset = old_offset;
5bd36: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 5bd3a: 2543 0010 movel %d3,%a2@(16) <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bd3e: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 5bd44: 4e5e unlk %fp <== NOT EXECUTED 5bd46: 4e75 rts <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bd48: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
case SEEK_CUR:
iop->offset += offset;
break;
case SEEK_END:
iop->offset = iop->size + offset;
5bd4c: 282a 0004 movel %a2@(4),%d4 <== NOT EXECUTED 5bd50: 2a2a 0008 movel %a2@(8),%d5 <== NOT EXECUTED 5bd54: da81 addl %d1,%d5 <== NOT EXECUTED 5bd56: d980 addxl %d0,%d4 <== NOT EXECUTED 5bd58: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED 5bd5c: 2545 0010 movel %d5,%a2@(16) <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bd60: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5bd62: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5bd64: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5bd66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5bd68: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 5bd6c: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd6e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bd72: 2800 movel %d0,%d4 <== NOT EXECUTED 5bd74: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd76: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bd78: 72ff moveq #-1,%d1 <== NOT EXECUTED 5bd7a: 9285 subl %d5,%d1 <== NOT EXECUTED 5bd7c: 9184 subxl %d4,%d0 <== NOT EXECUTED 5bd7e: 66a4 bnes 5bd24 <lseek+0x88> <== NOT EXECUTED 5bd80: 60b0 bras 5bd32 <lseek+0x96> <== NOT EXECUTED
case SEEK_END:
iop->offset = iop->size + offset;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
5bd82: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5bd88: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bd8a: 7016 moveq #22,%d0 <== NOT EXECUTED 5bd8c: 78ff moveq #-1,%d4 <== NOT EXECUTED 5bd8e: 7aff moveq #-1,%d5 <== NOT EXECUTED 5bd90: 2080 movel %d0,%a0@ <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bd92: 2004 movel %d4,%d0 <== NOT EXECUTED 5bd94: 2205 movel %d5,%d1 <== NOT EXECUTED 5bd96: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 5bd9c: 4e5e unlk %fp <== NOT EXECUTED 5bd9e: 4e75 rts <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bda0: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
case SEEK_SET:
iop->offset = offset;
break;
case SEEK_CUR:
iop->offset += offset;
5bda4: 2800 movel %d0,%d4 <== NOT EXECUTED 5bda6: 2a01 movel %d1,%d5 <== NOT EXECUTED 5bda8: da83 addl %d3,%d5 <== NOT EXECUTED 5bdaa: d982 addxl %d2,%d4 <== NOT EXECUTED 5bdac: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED 5bdb0: 2545 0010 movel %d5,%a2@(16) <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bdb4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5bdb6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5bdb8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5bdba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5bdbc: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 5bdc0: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5bdc2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
5bdc6: 2800 movel %d0,%d4 <== NOT EXECUTED 5bdc8: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5bdca: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bdcc: 72ff moveq #-1,%d1 <== NOT EXECUTED 5bdce: 9285 subl %d5,%d1 <== NOT EXECUTED 5bdd0: 9184 subxl %d4,%d0 <== NOT EXECUTED 5bdd2: 6600 ff50 bnew 5bd24 <lseek+0x88> <== NOT EXECUTED 5bdd6: 6000 ff5a braw 5bd32 <lseek+0x96> <== NOT EXECUTED
off_t old_offset;
off_t status;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
5bdda: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5bde0: 7209 moveq #9,%d1 <== NOT EXECUTED 5bde2: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bde4: 78ff moveq #-1,%d4 <== NOT EXECUTED 5bde6: 7aff moveq #-1,%d5 <== NOT EXECUTED 5bde8: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bdea: 2004 movel %d4,%d0 <== NOT EXECUTED 5bdec: 2205 movel %d5,%d1 <== NOT EXECUTED 5bdee: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 5bdf4: 4e5e unlk %fp <== NOT EXECUTED
0004506c <lstat>:
int _STAT_NAME(
const char *path,
struct stat *buf
)
{
4506c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 45070: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 45074: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 45078: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
4507c: 676e beqs 450ec <lstat+0x80> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
status = rtems_filesystem_evaluate_path( path, strlen( path ),
4507e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45080: 280e movel %fp,%d4 <== NOT EXECUTED 45082: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED 45088: 4eb9 0005 2cc8 jsr 52cc8 <strlen> <== NOT EXECUTED 4508e: 4297 clrl %sp@ <== NOT EXECUTED 45090: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45092: 42a7 clrl %sp@- <== NOT EXECUTED 45094: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45096: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45098: 4eb9 0004 4998 jsr 44998 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
4509e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 450a2: 4a80 tstl %d0 <== NOT EXECUTED 450a4: 670c beqs 450b2 <lstat+0x46> <== NOT EXECUTED
return -1;
450a6: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
450a8: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED 450ae: 4e5e unlk %fp <== NOT EXECUTED 450b0: 4e75 rts <== NOT EXECUTED
/*
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( buf, 0, sizeof(struct stat) );
450b2: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> <== NOT EXECUTED 450b6: 42a7 clrl %sp@- <== NOT EXECUTED 450b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 450ba: 4eb9 0005 1f98 jsr 51f98 <memset> <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
450c0: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED 450c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 450c6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 450c8: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 450cc: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
450ce: 2f04 movel %d4,%sp@- <== NOT EXECUTED 450d0: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 450d4: 4eb9 0004 4a7c jsr 44a7c <rtems_filesystem_freenode> <== NOT EXECUTED
return status;
450da: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED 450de: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
450e2: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED 450e8: 4e5e unlk %fp <== NOT EXECUTED 450ea: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
rtems_set_errno_and_return_minus_one( EFAULT );
450ec: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 450f2: 720e moveq #14,%d1 <== NOT EXECUTED 450f4: 2040 moveal %d0,%a0 <== NOT EXECUTED 450f6: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
450f8: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
rtems_set_errno_and_return_minus_one( EFAULT );
450fe: 2081 movel %d1,%a0@ <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
45100: 4e5e unlk %fp <== NOT EXECUTED
0004302c <malloc>:
#include "malloc_p.h"
void *malloc(
size_t size
)
{
4302c: 4e56 0000 linkw %fp,#0
void *return_this;
MSBUMP(malloc_calls, 1);
43030: 52b9 0005 fb50 addql #1,5fb50 <rtems_malloc_statistics+0x4>
#include "malloc_p.h"
void *malloc(
size_t size
)
{
43036: 2f03 movel %d3,%sp@- 43038: 262e 0008 movel %fp@(8),%d3 4303c: 2f02 movel %d2,%sp@-
MSBUMP(malloc_calls, 1);
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
4303e: 4eb9 0004 2f00 jsr 42f00 <malloc_deferred_frees_process>
/*
* Validate the parameters
*/
if ( !size )
43044: 4a83 tstl %d3
43046: 6762 beqs 430aa <malloc+0x7e> <== NEVER TAKEN
return (void *) 0;
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
43048: 7003 moveq #3,%d0 4304a: b0b9 0005 fdfa cmpl 5fdfa <_System_state_Current>,%d0
43050: 674e beqs 430a0 <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 );
43052: 42a7 clrl %sp@- 43054: 42a7 clrl %sp@- 43056: 2f03 movel %d3,%sp@- 43058: 2f39 0005 e340 movel 5e340 <RTEMS_Malloc_Heap>,%sp@- 4305e: 4eb9 0004 80c4 jsr 480c4 <_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 ) {
43064: 4fef 0010 lea %sp@(16),%sp 43068: 2400 movel %d0,%d2
4306a: 674e beqs 430ba <malloc+0x8e> <== NEVER TAKEN
}
/*
* If the user wants us to dirty the allocated memory, then do it.
*/
if ( rtems_malloc_dirty_helper )
4306c: 2079 0005 eace moveal 5eace <rtems_malloc_dirty_helper>,%a0 43072: 4a88 tstl %a0
43074: 6708 beqs 4307e <malloc+0x52>
(*rtems_malloc_dirty_helper)( return_this, size );
43076: 2f03 movel %d3,%sp@- 43078: 2f02 movel %d2,%sp@- 4307a: 4e90 jsr %a0@ 4307c: 508f addql #8,%sp
/*
* If configured, update the statistics
*/
if ( rtems_malloc_statistics_helpers )
4307e: 2079 0005 eac6 moveal 5eac6 <rtems_malloc_statistics_helpers>,%a0 43084: 4a88 tstl %a0
43086: 670a beqs 43092 <malloc+0x66>
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
43088: 2f02 movel %d2,%sp@- 4308a: 2068 0004 moveal %a0@(4),%a0 4308e: 4e90 jsr %a0@ 43090: 588f addql #4,%sp
return return_this;
}
43092: 2002 movel %d2,%d0 43094: 242e fff8 movel %fp@(-8),%d2 43098: 262e fffc movel %fp@(-4),%d3 4309c: 4e5e unlk %fp 4309e: 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() )
430a0: 4eb9 0004 2ec0 jsr 42ec0 <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()) &&
430a6: 4a00 tstb %d0
430a8: 66a8 bnes 43052 <malloc+0x26> <== ALWAYS TAKEN
!malloc_is_system_state_OK() )
return NULL;
430aa: 4282 clrl %d2 <== NOT EXECUTED
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
return return_this;
}
430ac: 2002 movel %d2,%d0 <== NOT EXECUTED 430ae: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 430b2: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 430b6: 4e5e unlk %fp <== NOT EXECUTED 430b8: 4e75 rts <== NOT EXECUTED
*/
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
if ( !return_this ) {
if (rtems_malloc_sbrk_helpers)
430ba: 2079 0005 eaca moveal 5eaca <rtems_malloc_sbrk_helpers>,%a0<== NOT EXECUTED 430c0: 4a88 tstl %a0 <== NOT EXECUTED 430c2: 671c beqs 430e0 <malloc+0xb4> <== NOT EXECUTED
return_this = (*rtems_malloc_sbrk_helpers->extend)( size );
430c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 430c6: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 430ca: 4e90 jsr %a0@ <== NOT EXECUTED
if ( !return_this ) {
430cc: 588f addql #4,%sp <== NOT EXECUTED 430ce: 4a80 tstl %d0 <== NOT EXECUTED 430d0: 670e beqs 430e0 <malloc+0xb4> <== NOT EXECUTED
}
/*
* If the user wants us to dirty the allocated memory, then do it.
*/
if ( rtems_malloc_dirty_helper )
430d2: 2079 0005 eace moveal 5eace <rtems_malloc_dirty_helper>,%a0<== NOT EXECUTED
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
if ( !return_this ) {
if (rtems_malloc_sbrk_helpers)
return_this = (*rtems_malloc_sbrk_helpers->extend)( size );
if ( !return_this ) {
430d8: 2400 movel %d0,%d2 <== NOT EXECUTED
}
/*
* If the user wants us to dirty the allocated memory, then do it.
*/
if ( rtems_malloc_dirty_helper )
430da: 4a88 tstl %a0 <== NOT EXECUTED 430dc: 6698 bnes 43076 <malloc+0x4a> <== NOT EXECUTED 430de: 609e bras 4307e <malloc+0x52> <== NOT EXECUTED
if ( !return_this ) {
if (rtems_malloc_sbrk_helpers)
return_this = (*rtems_malloc_sbrk_helpers->extend)( size );
if ( !return_this ) {
errno = ENOMEM;
430e0: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
return return_this;
}
430e6: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
if ( !return_this ) {
if (rtems_malloc_sbrk_helpers)
return_this = (*rtems_malloc_sbrk_helpers->extend)( size );
if ( !return_this ) {
errno = ENOMEM;
430ea: 2040 moveal %d0,%a0 <== NOT EXECUTED 430ec: 700c moveq #12,%d0 <== NOT EXECUTED 430ee: 2080 movel %d0,%a0@ <== NOT EXECUTED
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
return return_this;
}
430f0: 2002 movel %d2,%d0 <== NOT EXECUTED 430f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 430f6: 4e5e unlk %fp <== NOT EXECUTED
...
00042f42 <malloc_deferred_free>:
void malloc_deferred_free(
void *pointer
)
{
42f42: 4e56 0000 linkw %fp,#0 <== 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 );
42f46: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 42f4a: 4879 0005 fb40 pea 5fb40 <RTEMS_Malloc_GC_list> <== NOT EXECUTED 42f50: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED 42f56: 508f addql #8,%sp <== NOT EXECUTED
rtems_chain_append(&RTEMS_Malloc_GC_list, (rtems_chain_node *)pointer); }
42f58: 4e5e unlk %fp <== NOT EXECUTED
00042f00 <malloc_deferred_frees_process>:
void malloc_deferred_frees_process(void)
{
42f00: 4e56 0000 linkw %fp,#0 42f04: 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);
42f06: 47f9 0004 2cfc lea 42cfc <free>,%a3
{
rtems_chain_initialize_empty(&RTEMS_Malloc_GC_list);
}
void malloc_deferred_frees_process(void)
{
42f0c: 2f0a movel %a2,%sp@-
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
42f0e: 4879 0005 fb40 pea 5fb40 <RTEMS_Malloc_GC_list> 42f14: 45f9 0004 6f44 lea 46f44 <_Chain_Get>,%a2 42f1a: 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)
42f1c: 588f addql #4,%sp 42f1e: 4a80 tstl %d0
42f20: 6714 beqs 42f36 <malloc_deferred_frees_process+0x36><== ALWAYS TAKEN
free(to_be_freed);
42f22: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42f24: 4e93 jsr %a3@ <== NOT EXECUTED 42f26: 588f addql #4,%sp <== NOT EXECUTED 42f28: 4879 0005 fb40 pea 5fb40 <RTEMS_Malloc_GC_list> <== NOT EXECUTED 42f2e: 4e92 jsr %a2@ <== NOT EXECUTED
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)
42f30: 588f addql #4,%sp <== NOT EXECUTED 42f32: 4a80 tstl %d0 <== NOT EXECUTED 42f34: 66ec bnes 42f22 <malloc_deferred_frees_process+0x22><== NOT EXECUTED
free(to_be_freed);
}
42f36: 246e fff8 moveal %fp@(-8),%a2 42f3a: 266e fffc moveal %fp@(-4),%a3
42f3e: 4e5e unlk %fp <== NOT EXECUTED
00046c00 <malloc_free_space>:
/*
* Find amount of free heap remaining
*/
size_t malloc_free_space( void )
{
46c00: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Heap_Information info;
_Protected_heap_Get_free_information( RTEMS_Malloc_Heap, &info );
46c04: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 46c08: 2f39 0006 3e70 movel 63e70 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 46c0e: 4eb9 0004 cfc0 jsr 4cfc0 <_Protected_heap_Get_free_information><== NOT EXECUTED
return (size_t) info.largest; }
46c14: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 46c18: 4e5e unlk %fp <== NOT EXECUTED
000431ec <malloc_get_heap_pointer>:
#include <rtems.h>
#include <rtems/libcsupport.h>
#include "malloc_p.h"
Heap_Control *malloc_get_heap_pointer( void )
{
431ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return RTEMS_Malloc_Heap; }
431f0: 2039 0005 e8d0 movel 5e8d0 <RTEMS_Malloc_Heap>,%d0 <== NOT EXECUTED 431f6: 4e5e unlk %fp <== NOT EXECUTED
...
00042f90 <malloc_get_statistics>:
#include "malloc_p.h"
int malloc_get_statistics(
rtems_malloc_statistics_t *stats
)
{
42f90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42f94: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42f96: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ( !stats )
42f9a: 6768 beqs 43004 <malloc_get_statistics+0x74> <== NOT EXECUTED
return -1;
_RTEMS_Lock_allocator();
42f9c: 2f39 0005 fc7e movel 5fc7e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 42fa2: 4eb9 0004 6eb4 jsr 46eb4 <_API_Mutex_Lock> <== NOT EXECUTED
*stats = rtems_malloc_statistics;
42fa8: 2042 moveal %d2,%a0 <== NOT EXECUTED 42faa: 20f9 0005 fa9c movel 5fa9c <rtems_malloc_statistics>,%a0@+ <== NOT EXECUTED 42fb0: 20f9 0005 faa0 movel 5faa0 <rtems_malloc_statistics+0x4>,%a0@+<== NOT EXECUTED 42fb6: 20f9 0005 faa4 movel 5faa4 <rtems_malloc_statistics+0x8>,%a0@+<== NOT EXECUTED 42fbc: 20f9 0005 faa8 movel 5faa8 <rtems_malloc_statistics+0xc>,%a0@+<== NOT EXECUTED 42fc2: 20f9 0005 faac movel 5faac <rtems_malloc_statistics+0x10>,%a0@+<== NOT EXECUTED 42fc8: 20f9 0005 fab0 movel 5fab0 <rtems_malloc_statistics+0x14>,%a0@+<== NOT EXECUTED 42fce: 20f9 0005 fab4 movel 5fab4 <rtems_malloc_statistics+0x18>,%a0@+<== NOT EXECUTED 42fd4: 20f9 0005 fab8 movel 5fab8 <rtems_malloc_statistics+0x1c>,%a0@+<== NOT EXECUTED 42fda: 20f9 0005 fabc movel 5fabc <rtems_malloc_statistics+0x20>,%a0@+<== NOT EXECUTED 42fe0: 20f9 0005 fac0 movel 5fac0 <rtems_malloc_statistics+0x24>,%a0@+<== NOT EXECUTED
_RTEMS_Unlock_allocator();
42fe6: 2f39 0005 fc7e movel 5fc7e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
)
{
if ( !stats )
return -1;
_RTEMS_Lock_allocator();
*stats = rtems_malloc_statistics;
42fec: 20b9 0005 fac4 movel 5fac4 <rtems_malloc_statistics+0x28>,%a0@<== NOT EXECUTED
_RTEMS_Unlock_allocator();
42ff2: 4eb9 0004 6f14 jsr 46f14 <_API_Mutex_Unlock> <== NOT EXECUTED
return 0; }
42ff8: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
if ( !stats )
return -1;
_RTEMS_Lock_allocator();
*stats = rtems_malloc_statistics;
_RTEMS_Unlock_allocator();
return 0;
42ffc: 508f addql #8,%sp <== NOT EXECUTED 42ffe: 4280 clrl %d0 <== NOT EXECUTED
}
43000: 4e5e unlk %fp <== NOT EXECUTED 43002: 4e75 rts <== NOT EXECUTED 43004: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
int malloc_get_statistics(
rtems_malloc_statistics_t *stats
)
{
if ( !stats )
return -1;
43008: 70ff moveq #-1,%d0 <== NOT EXECUTED
_RTEMS_Lock_allocator(); *stats = rtems_malloc_statistics; _RTEMS_Unlock_allocator(); return 0; }
4300a: 4e5e unlk %fp <== NOT EXECUTED
...
00046c1c <malloc_info>:
*/
int malloc_info(
Heap_Information_block *the_info
)
{
46c1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46c20: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !the_info )
46c24: 6716 beqs 46c3c <malloc_info+0x20> <== NOT EXECUTED
return -1;
_Protected_heap_Get_information( RTEMS_Malloc_Heap, the_info );
46c26: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46c28: 2f39 0006 3e70 movel 63e70 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 46c2e: 4eb9 0004 cff0 jsr 4cff0 <_Protected_heap_Get_information> <== NOT EXECUTED
return 0;
46c34: 508f addql #8,%sp <== NOT EXECUTED 46c36: 4280 clrl %d0 <== NOT EXECUTED
}
46c38: 4e5e unlk %fp <== NOT EXECUTED 46c3a: 4e75 rts <== NOT EXECUTED
int malloc_info(
Heap_Information_block *the_info
)
{
if ( !the_info )
return -1;
46c3c: 70ff moveq #-1,%d0 <== NOT EXECUTED
_Protected_heap_Get_information( RTEMS_Malloc_Heap, the_info );
return 0;
}
46c3e: 4e5e unlk %fp <== NOT EXECUTED
...
00042ec0 <malloc_is_system_state_OK>:
#include "malloc_p.h"
rtems_chain_control RTEMS_Malloc_GC_list;
bool malloc_is_system_state_OK(void)
{
42ec0: 4e56 0000 linkw %fp,#0
if ( _Thread_Dispatch_disable_level > 0 )
42ec4: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0
42eca: 660e bnes 42eda <malloc_is_system_state_OK+0x1a> <== NEVER TAKEN
#include "malloc_p.h"
rtems_chain_control RTEMS_Malloc_GC_list;
bool malloc_is_system_state_OK(void)
42ecc: 4ab9 0006 0118 tstl 60118 <_Per_CPU_Information+0x8> 42ed2: 57c0 seq %d0
if ( _ISR_Nest_level > 0 )
return false;
return true;
}
42ed4: 4e5e unlk %fp
#include "malloc_p.h"
rtems_chain_control RTEMS_Malloc_GC_list;
bool malloc_is_system_state_OK(void)
42ed6: 4480 negl %d0
if ( _ISR_Nest_level > 0 )
return false;
return true;
}
42ed8: 4e75 rts
42eda: 4e5e unlk %fp <== NOT EXECUTED
rtems_chain_control RTEMS_Malloc_GC_list;
bool malloc_is_system_state_OK(void)
{
if ( _Thread_Dispatch_disable_level > 0 )
return false;
42edc: 4200 clrb %d0 <== NOT EXECUTED
if ( _ISR_Nest_level > 0 )
return false;
return true;
}
00046de4 <malloc_report_statistics>:
#ifdef RTEMS_NEWLIB
#include "malloc_p.h"
void malloc_report_statistics(void)
{
46de4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
malloc_report_statistics_with_plugin( NULL, printk_plugin );
46de8: 4879 0004 7b10 pea 47b10 <printk_plugin> <== NOT EXECUTED 46dee: 42a7 clrl %sp@- <== NOT EXECUTED 46df0: 4eb9 0004 6dfc jsr 46dfc <malloc_report_statistics_with_plugin><== NOT EXECUTED 46df6: 508f addql #8,%sp <== NOT EXECUTED
}
46df8: 4e5e unlk %fp <== NOT EXECUTED
00046dfc <malloc_report_statistics_with_plugin>:
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46dfc: 720a moveq #10,%d1 <== NOT EXECUTED
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46dfe: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 46e02: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED
s->space_available / 1024,
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
46e06: 2479 0006 5f80 moveal 65f80 <rtems_malloc_statistics+0x18>,%a2<== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e0c: 200a movel %a2,%d0 <== NOT EXECUTED 46e0e: e2a8 lsrl %d1,%d0 <== NOT EXECUTED 46e10: 2840 moveal %d0,%a4 <== NOT EXECUTED
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
(uint32_t) (s->lifetime_allocated / 1024),
(uint32_t) (s->lifetime_freed / 1024)
46e12: 760a moveq #10,%d3 <== NOT EXECUTED
rtems_malloc_statistics_t *s;
uintmax_t allocated;
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
46e14: 2839 0006 5f84 movel 65f84 <rtems_malloc_statistics+0x1c>,%d4<== NOT EXECUTED 46e1a: 2a39 0006 5f88 movel 65f88 <rtems_malloc_statistics+0x20>,%d5<== NOT EXECUTED 46e20: 2039 0006 5f8c movel 65f8c <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED 46e26: 2239 0006 5f90 movel 65f90 <rtems_malloc_statistics+0x28>,%d1<== NOT EXECUTED
s->space_available / 1024,
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
46e2c: 2439 0006 5f68 movel 65f68 <rtems_malloc_statistics>,%d2 <== NOT EXECUTED
(uint32_t) (s->lifetime_allocated / 1024),
46e32: 2e05 movel %d5,%d7 <== NOT EXECUTED 46e34: e6af lsrl %d3,%d7 <== NOT EXECUTED
(uint32_t) (s->lifetime_freed / 1024)
46e36: 2c01 movel %d1,%d6 <== NOT EXECUTED
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
(uint32_t) (s->lifetime_allocated / 1024),
46e38: 2047 moveal %d7,%a0 <== NOT EXECUTED
(uint32_t) (s->lifetime_freed / 1024)
46e3a: e6ae lsrl %d3,%d6 <== NOT EXECUTED 46e3c: 2600 movel %d0,%d3 <== NOT EXECUTED 46e3e: 7e16 moveq #22,%d7 <== NOT EXECUTED 46e40: efab lsll %d7,%d3 <== NOT EXECUTED
s->space_available / 1024,
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
46e42: 2e0a movel %a2,%d7 <== NOT EXECUTED
(uint32_t) (s->lifetime_allocated / 1024),
(uint32_t) (s->lifetime_freed / 1024)
46e44: 2243 moveal %d3,%a1 <== NOT EXECUTED
s->space_available / 1024,
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
46e46: 7664 moveq #100,%d3 <== NOT EXECUTED 46e48: 4c03 7800 mulsl %d3,%d7 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e4c: 2609 movel %a1,%d3 <== NOT EXECUTED 46e4e: 8686 orl %d6,%d3 <== NOT EXECUTED
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
(uint32_t) (s->lifetime_allocated / 1024),
46e50: 2c04 movel %d4,%d6 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e52: 2f03 movel %d3,%sp@- <== NOT EXECUTED
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
(uint32_t) (s->lifetime_allocated / 1024),
46e54: 7616 moveq #22,%d3 <== NOT EXECUTED 46e56: e7ae lsll %d3,%d6 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e58: 2608 movel %a0,%d3 <== NOT EXECUTED 46e5a: 8c83 orl %d3,%d6 <== NOT EXECUTED
rtems_malloc_statistics_t *s;
uintmax_t allocated;
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
46e5c: 9a81 subl %d1,%d5 <== NOT EXECUTED 46e5e: 9980 subxl %d0,%d4 <== NOT EXECUTED
(*print)(
46e60: 760a moveq #10,%d3 <== NOT EXECUTED 46e62: 2f06 movel %d6,%sp@- <== NOT EXECUTED
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46e64: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e68: 4c42 7007 remul %d2,%d7,%d7 <== NOT EXECUTED
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46e6c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e70: 2c04 movel %d4,%d6 <== NOT EXECUTED 46e72: 2f07 movel %d7,%sp@- <== NOT EXECUTED 46e74: 2e02 movel %d2,%d7 <== NOT EXECUTED 46e76: e6af lsrl %d3,%d7 <== NOT EXECUTED 46e78: 2605 movel %d5,%d3 <== NOT EXECUTED 46e7a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
"max:%"PRIu32"k (%"PRIu32"%%)"
" lifetime:%"PRIu32"k freed:%"PRIu32"k\n",
s->space_available / 1024,
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
46e7c: 4878 0064 pea 64 <DBL_MANT_DIG+0x2f> <== NOT EXECUTED 46e80: 42a7 clrl %sp@- <== NOT EXECUTED 46e82: 2f05 movel %d5,%sp@- <== NOT EXECUTED 46e84: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46e86: 4eb9 0005 f2bc jsr 5f2bc <__muldi3> <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e8c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46e90: 2e82 movel %d2,%sp@ <== NOT EXECUTED 46e92: 7416 moveq #22,%d2 <== NOT EXECUTED 46e94: 42a7 clrl %sp@- <== NOT EXECUTED 46e96: e5ae lsll %d2,%d6 <== NOT EXECUTED 46e98: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46e9a: 2404 movel %d4,%d2 <== NOT EXECUTED 46e9c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46e9e: 4eb9 0005 fb08 jsr 5fb08 <__udivdi3> <== NOT EXECUTED 46ea4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46ea8: 2046 moveal %d6,%a0 <== NOT EXECUTED 46eaa: 7c0a moveq #10,%d6 <== NOT EXECUTED 46eac: ecab lsrl %d6,%d3 <== NOT EXECUTED 46eae: ecaa lsrl %d6,%d2 <== NOT EXECUTED 46eb0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46eb2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46eb4: 2008 movel %a0,%d0 <== NOT EXECUTED 46eb6: 8680 orl %d0,%d3 <== NOT EXECUTED 46eb8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46eba: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46ebc: 2f07 movel %d7,%sp@- <== NOT EXECUTED 46ebe: 4879 0006 28f4 pea 628f4 <rtems_status_assoc+0x1a0> <== NOT EXECUTED 46ec4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46ec6: 4e92 jsr %a2@ <== NOT EXECUTED
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
(uint32_t) (s->lifetime_allocated / 1024),
(uint32_t) (s->lifetime_freed / 1024)
);
(*print)(
46ec8: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED 46ecc: 2eb9 0006 5f7c movel 65f7c <rtems_malloc_statistics+0x14>,%sp@<== NOT EXECUTED 46ed2: 2f39 0006 5f78 movel 65f78 <rtems_malloc_statistics+0x10>,%sp@-<== NOT EXECUTED 46ed8: 2f39 0006 5f74 movel 65f74 <rtems_malloc_statistics+0xc>,%sp@-<== NOT EXECUTED 46ede: 2f39 0006 5f70 movel 65f70 <rtems_malloc_statistics+0x8>,%sp@-<== NOT EXECUTED 46ee4: 2f39 0006 5f6c movel 65f6c <rtems_malloc_statistics+0x4>,%sp@-<== NOT EXECUTED 46eea: 4879 0006 2956 pea 62956 <rtems_status_assoc+0x202> <== NOT EXECUTED 46ef0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46ef2: 4e92 jsr %a2@ <== NOT EXECUTED 46ef4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
s->memalign_calls,
s->free_calls,
s->realloc_calls,
s->calloc_calls
);
}
46ef8: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 46efe: 4e5e unlk %fp <== NOT EXECUTED
...
0004339c <malloc_sbrk_extend_and_allocate>:
}
void *malloc_sbrk_extend_and_allocate(
size_t size
)
{
4339c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* Round to the "requested sbrk amount" so hopefully we won't have
* to grow again for a while. This effectively does sbrk() calls
* in "page" amounts.
*/
sbrk_amount = RTEMS_Malloc_Sbrk_amount;
433a0: 2039 0006 0250 movel 60250 <RTEMS_Malloc_Sbrk_amount>,%d0 <== NOT EXECUTED
}
void *malloc_sbrk_extend_and_allocate(
size_t size
)
{
433a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 433a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* in "page" amounts.
*/
sbrk_amount = RTEMS_Malloc_Sbrk_amount;
if ( sbrk_amount == 0 )
433aa: 4a80 tstl %d0 <== NOT EXECUTED 433ac: 660e bnes 433bc <malloc_sbrk_extend_and_allocate+0x20><== NOT EXECUTED
MSBUMP(space_available, the_size);
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
}
433ae: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
the_size = ((size + sbrk_amount) / sbrk_amount * sbrk_amount);
starting_address = (void *) sbrk(the_size);
if ( starting_address == (void*) -1 )
return (void *) 0;
433b2: 4280 clrl %d0 <== NOT EXECUTED
MSBUMP(space_available, the_size);
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
}
433b4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 433b8: 4e5e unlk %fp <== NOT EXECUTED 433ba: 4e75 rts <== NOT EXECUTED
sbrk_amount = RTEMS_Malloc_Sbrk_amount;
if ( sbrk_amount == 0 )
return (void *) 0;
the_size = ((size + sbrk_amount) / sbrk_amount * sbrk_amount);
433bc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 433c0: d480 addl %d0,%d2 <== NOT EXECUTED
starting_address = (void *) sbrk(the_size);
433c2: 45f9 0004 0812 lea 40812 <sbrk>,%a2 <== NOT EXECUTED
sbrk_amount = RTEMS_Malloc_Sbrk_amount;
if ( sbrk_amount == 0 )
return (void *) 0;
the_size = ((size + sbrk_amount) / sbrk_amount * sbrk_amount);
433c8: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED 433cc: 4c00 2800 mulsl %d0,%d2 <== NOT EXECUTED
starting_address = (void *) sbrk(the_size);
433d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 433d2: 4e92 jsr %a2@ <== NOT EXECUTED
if ( starting_address == (void*) -1 )
433d4: 588f addql #4,%sp <== NOT EXECUTED 433d6: 72ff moveq #-1,%d1 <== NOT EXECUTED 433d8: b280 cmpl %d0,%d1 <== NOT EXECUTED 433da: 67d2 beqs 433ae <malloc_sbrk_extend_and_allocate+0x12><== NOT EXECUTED
return (void *) 0;
if ( !_Protected_heap_Extend(
433dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 433de: 2f00 movel %d0,%sp@- <== NOT EXECUTED 433e0: 2f39 0005 e8d0 movel 5e8d0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 433e6: 4eb9 0004 83d0 jsr 483d0 <_Protected_heap_Extend> <== NOT EXECUTED 433ec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 433f0: 4a00 tstb %d0 <== NOT EXECUTED 433f2: 672a beqs 4341e <malloc_sbrk_extend_and_allocate+0x82><== NOT EXECUTED 433f4: 42a7 clrl %sp@- <== NOT EXECUTED
sbrk(-the_size);
errno = ENOMEM;
return (void *) 0;
}
MSBUMP(space_available, the_size);
433f6: d5b9 0006 0224 addl %d2,60224 <rtems_malloc_statistics> <== NOT EXECUTED 433fc: 42a7 clrl %sp@- <== NOT EXECUTED 433fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43402: 2f39 0005 e8d0 movel 5e8d0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 43408: 4eb9 0004 8390 jsr 48390 <_Protected_heap_Allocate_aligned_with_boundary><== NOT EXECUTED
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
}
4340e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
}
MSBUMP(space_available, the_size);
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
43412: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
43416: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4341a: 4e5e unlk %fp <== NOT EXECUTED 4341c: 4e75 rts <== NOT EXECUTED
if ( starting_address == (void*) -1 )
return (void *) 0;
if ( !_Protected_heap_Extend(
RTEMS_Malloc_Heap, starting_address, the_size) ) {
sbrk(-the_size);
4341e: 4482 negl %d2 <== NOT EXECUTED 43420: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43422: 4e92 jsr %a2@ <== NOT EXECUTED
errno = ENOMEM;
43424: 4eb9 0004 ee90 jsr 4ee90 <__errno> <== NOT EXECUTED
MSBUMP(space_available, the_size);
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
}
4342a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return (void *) 0;
if ( !_Protected_heap_Extend(
RTEMS_Malloc_Heap, starting_address, the_size) ) {
sbrk(-the_size);
errno = ENOMEM;
4342e: 2040 moveal %d0,%a0 <== NOT EXECUTED 43430: 720c moveq #12,%d1 <== NOT EXECUTED
return (void *) 0;
43432: 588f addql #4,%sp <== NOT EXECUTED 43434: 4280 clrl %d0 <== NOT EXECUTED
MSBUMP(space_available, the_size);
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
}
43436: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4343a: 4e5e unlk %fp <== NOT EXECUTED
return (void *) 0;
if ( !_Protected_heap_Extend(
RTEMS_Malloc_Heap, starting_address, the_size) ) {
sbrk(-the_size);
errno = ENOMEM;
4343c: 2081 movel %d1,%a0@ <== NOT EXECUTED
MSBUMP(space_available, the_size);
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
}
00043440 <malloc_sbrk_initialize>:
void *malloc_sbrk_initialize(
void *starting_address,
size_t length
)
{
43440: 4e56 0000 linkw %fp,#0 43444: 222e 000c movel %fp@(12),%d1 43448: 202e 0008 movel %fp@(8),%d0
uintptr_t old_address;
uintptr_t uaddress;
RTEMS_Malloc_Sbrk_amount = length;
4344c: 23c1 0006 0250 movel %d1,60250 <RTEMS_Malloc_Sbrk_amount>
* If the starting address is 0 then we are to attempt to
* get length worth of memory using sbrk. Make sure we
* align the address that we get back.
*/
if (!starting_address) {
43452: 4a80 tstl %d0
43454: 6704 beqs 4345a <malloc_sbrk_initialize+0x1a> <== ALWAYS TAKEN
}
starting_address = (void *)uaddress;
}
return starting_address;
}
43456: 4e5e unlk %fp <== NOT EXECUTED 43458: 4e75 rts <== NOT EXECUTED
* get length worth of memory using sbrk. Make sure we
* align the address that we get back.
*/
if (!starting_address) {
uaddress = (uintptr_t)sbrk(length);
4345a: 2f01 movel %d1,%sp@- 4345c: 4eb9 0004 0812 jsr 40812 <sbrk>
if (uaddress == (uintptr_t) -1) {
43462: 588f addql #4,%sp 43464: 72ff moveq #-1,%d1 43466: b280 cmpl %d0,%d1
43468: 6710 beqs 4347a <malloc_sbrk_initialize+0x3a> <== ALWAYS TAKEN
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
/* DOES NOT RETURN!!! */
}
if (uaddress & (CPU_HEAP_ALIGNMENT-1)) {
4346a: 7203 moveq #3,%d1 <== NOT EXECUTED 4346c: c280 andl %d0,%d1 <== NOT EXECUTED 4346e: 67e6 beqs 43456 <malloc_sbrk_initialize+0x16> <== NOT EXECUTED
old_address = uaddress;
uaddress = (uaddress + CPU_HEAP_ALIGNMENT) & ~(CPU_HEAP_ALIGNMENT-1);
43470: 5880 addql #4,%d0 <== NOT EXECUTED 43472: 72fc moveq #-4,%d1 <== NOT EXECUTED
}
starting_address = (void *)uaddress;
}
return starting_address;
}
43474: 4e5e unlk %fp <== NOT EXECUTED
/* DOES NOT RETURN!!! */
}
if (uaddress & (CPU_HEAP_ALIGNMENT-1)) {
old_address = uaddress;
uaddress = (uaddress + CPU_HEAP_ALIGNMENT) & ~(CPU_HEAP_ALIGNMENT-1);
43476: c081 andl %d1,%d0 <== NOT EXECUTED
}
starting_address = (void *)uaddress;
}
return starting_address;
}
43478: 4e75 rts <== NOT EXECUTED
if (!starting_address) {
uaddress = (uintptr_t)sbrk(length);
if (uaddress == (uintptr_t) -1) {
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
4347a: 4878 001a pea 1a <OPER2+0x6> 4347e: 4eb9 0004 6f0c jsr 46f0c <rtems_fatal_error_occurred>
00043484 <malloc_set_heap_pointer>:
#include "malloc_p.h"
void malloc_set_heap_pointer(
Heap_Control *new_heap
)
{
43484: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
RTEMS_Malloc_Heap = new_heap;
43488: 41ee 0008 lea %fp@(8),%a0 <== NOT EXECUTED
}
4348c: 4e5e unlk %fp <== NOT EXECUTED
void malloc_set_heap_pointer(
Heap_Control *new_heap
)
{
RTEMS_Malloc_Heap = new_heap;
4348e: 23d0 0005 e8d0 movel %a0@,5e8d0 <RTEMS_Malloc_Heap> <== NOT EXECUTED
}
...
00047004 <malloc_walk>:
#include "malloc_p.h"
#include <stdlib.h>
void malloc_walk(size_t source, size_t printf_enabled)
{
47004: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Protected_heap_Walk( RTEMS_Malloc_Heap, (int) source, printf_enabled );
47008: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 4700c: 56c0 sne %d0 <== NOT EXECUTED 4700e: 49c0 extbl %d0 <== NOT EXECUTED 47010: 4480 negl %d0 <== NOT EXECUTED 47012: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47014: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47018: 2f39 0006 3e70 movel 63e70 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 4701e: 4eb9 0004 d0a4 jsr 4d0a4 <_Protected_heap_Walk> <== NOT EXECUTED 47024: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
47028: 4e5e unlk %fp <== NOT EXECUTED
0004ce38 <memfile_alloc_block>:
* Allocate a block for an in-memory file.
*/
int memfile_blocks_allocated = 0;
void *memfile_alloc_block(void)
{
4ce38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void *memory;
memory = (void *)calloc(1, IMFS_MEMFILE_BYTES_PER_BLOCK);
4ce3c: 2f39 0005 f334 movel 5f334 <imfs_memfile_bytes_per_block>,%sp@-<== NOT EXECUTED 4ce42: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4ce46: 4eb9 0004 28f0 jsr 428f0 <calloc> <== NOT EXECUTED
if ( memory )
4ce4c: 508f addql #8,%sp <== NOT EXECUTED 4ce4e: 4a80 tstl %d0 <== NOT EXECUTED 4ce50: 6706 beqs 4ce58 <memfile_alloc_block+0x20> <== NOT EXECUTED
memfile_blocks_allocated++;
4ce52: 52b9 0005 f444 addql #1,5f444 <memfile_blocks_allocated> <== NOT EXECUTED
return memory;
}
4ce58: 4e5e unlk %fp <== NOT EXECUTED
0004cdf8 <memfile_close>:
* nothing to flush or memory to free at this point.
*/
int memfile_close(
rtems_libio_t *iop
)
{
4cdf8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cdfc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
if (iop->flags & LIBIO_FLAGS_APPEND)
4ce00: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED 4ce04: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
rtems_libio_t *iop
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4ce0a: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
if (iop->flags & LIBIO_FLAGS_APPEND)
4ce0e: 6710 beqs 4ce20 <memfile_close+0x28> <== NOT EXECUTED
iop->offset = the_jnode->info.file.size;
4ce10: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 4ce14: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED 4ce18: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED 4ce1c: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4ce20: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4ce22: 4eb9 0004 abb8 jsr 4abb8 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4ce28: 4280 clrl %d0 <== NOT EXECUTED 4ce2a: 4e5e unlk %fp <== NOT EXECUTED
0004d2d4 <memfile_free_block>:
* Free a block from an in-memory file.
*/
void memfile_free_block(
void *memory
)
{
4d2d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free(memory);
4d2d8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d2dc: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
memfile_blocks_allocated--;
4d2e2: 588f addql #4,%sp <== NOT EXECUTED 4d2e4: 53b9 0005 f444 subql #1,5f444 <memfile_blocks_allocated> <== NOT EXECUTED
}
4d2ea: 4e5e unlk %fp <== NOT EXECUTED
0004d2ee <memfile_free_blocks_in_table>:
*/
void memfile_free_blocks_in_table(
block_p **block_table,
int entries
)
{
4d2ee: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4d2f2: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d2f6: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 4d2fa: 47f9 0004 d2d4 lea 4d2d4 <memfile_free_block>,%a3 <== NOT EXECUTED 4d300: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
IMFS_assert( block_table );
/*
* Now go through all the slots in the table and free the memory.
*/
b = *block_table;
4d304: 2454 moveal %a4@,%a2 <== NOT EXECUTED
for ( i=0 ; i<entries ; i++ ) {
4d306: 6f1a bles 4d322 <memfile_free_blocks_in_table+0x34><== NOT EXECUTED 4d308: 4282 clrl %d2 <== NOT EXECUTED
if ( b[i] ) {
4d30a: 201a movel %a2@+,%d0 <== NOT EXECUTED
/*
* Now go through all the slots in the table and free the memory.
*/
b = *block_table;
for ( i=0 ; i<entries ; i++ ) {
4d30c: 5282 addql #1,%d2 <== NOT EXECUTED
if ( b[i] ) {
4d30e: 4a80 tstl %d0 <== NOT EXECUTED 4d310: 670a beqs 4d31c <memfile_free_blocks_in_table+0x2e><== NOT EXECUTED
memfile_free_block( b[i] );
4d312: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d314: 4e93 jsr %a3@ <== NOT EXECUTED
b[i] = 0;
4d316: 588f addql #4,%sp <== NOT EXECUTED 4d318: 42aa fffc clrl %a2@(-4) <== NOT EXECUTED
/*
* Now go through all the slots in the table and free the memory.
*/
b = *block_table;
for ( i=0 ; i<entries ; i++ ) {
4d31c: b483 cmpl %d3,%d2 <== NOT EXECUTED 4d31e: 6dea blts 4d30a <memfile_free_blocks_in_table+0x1c><== NOT EXECUTED 4d320: 2454 moveal %a4@,%a2 <== NOT EXECUTED
/*
* Now that all the blocks in the block table are free, we can
* free the block table itself.
*/
memfile_free_block( *block_table );
4d322: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d324: 4e93 jsr %a3@ <== NOT EXECUTED
*block_table = 0;
4d326: 588f addql #4,%sp <== NOT EXECUTED 4d328: 4294 clrl %a4@ <== NOT EXECUTED
}
4d32a: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d330: 4e5e unlk %fp <== NOT EXECUTED
0004d836 <memfile_ftruncate>:
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4d836: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4d83a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d83e: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d842: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4d846: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4d84a: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
* POSIX 1003.1b does not specify what happens if you truncate a file
* and the new length is greater than the current size. We treat this
* as an extend operation.
*/
if ( length > the_jnode->info.file.size )
4d84e: 242a 004c movel %a2@(76),%d2 <== NOT EXECUTED 4d852: 262a 0050 movel %a2@(80),%d3 <== NOT EXECUTED 4d856: 9681 subl %d1,%d3 <== NOT EXECUTED 4d858: 9580 subxl %d0,%d2 <== NOT EXECUTED 4d85a: 6d30 blts 4d88c <memfile_ftruncate+0x56> <== NOT EXECUTED
/* * The in-memory files do not currently reclaim memory until the file is * deleted. So we leave the previously allocated blocks in place for * future use and just set the length. */ the_jnode->info.file.size = length;
4d85c: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED 4d860: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4d864: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED 4d868: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d86c: 42a7 clrl %sp@- <== NOT EXECUTED 4d86e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d872: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d878: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return 0;
4d87e: 508f addql #8,%sp <== NOT EXECUTED 4d880: 4280 clrl %d0 <== NOT EXECUTED
}
4d882: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4d888: 4e5e unlk %fp <== NOT EXECUTED 4d88a: 4e75 rts <== NOT EXECUTED
* and the new length is greater than the current size. We treat this
* as an extend operation.
*/
if ( length > the_jnode->info.file.size )
return IMFS_memfile_extend( the_jnode, length );
4d88c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d88e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d890: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d892: 4eb9 0004 d476 jsr 4d476 <IMFS_memfile_extend> <== NOT EXECUTED 4d898: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
IMFS_update_atime( the_jnode );
return 0;
}
4d89c: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4d8a2: 4e5e unlk %fp <== NOT EXECUTED
0004ce2e <memfile_ioctl>:
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4ce2e: 4280 clrl %d0 <== NOT EXECUTED
int memfile_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4ce30: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4ce34: 4e5e unlk %fp <== NOT EXECUTED
0004d8a6 <memfile_lseek>:
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
if (the_jnode->type == IMFS_LINEAR_FILE) {
4d8a6: 7006 moveq #6,%d0 <== NOT EXECUTED
rtems_off64_t memfile_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4d8a8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4d8ac: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 4d8b0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d8b4: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
if (the_jnode->type == IMFS_LINEAR_FILE) {
4d8b8: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 4d8bc: 673e beqs 4d8fc <memfile_lseek+0x56> <== NOT EXECUTED
if (iop->offset > the_jnode->info.linearfile.size)
iop->offset = the_jnode->info.linearfile.size;
}
else { /* Must be a block file (IMFS_MEMORY_FILE). */
if (IMFS_memfile_extend( the_jnode, iop->offset ))
4d8be: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4d8c2: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 4d8c6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d8c8: 4eb9 0004 d476 jsr 4d476 <IMFS_memfile_extend> <== NOT EXECUTED 4d8ce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d8d2: 4a80 tstl %d0 <== NOT EXECUTED 4d8d4: 665a bnes 4d930 <memfile_lseek+0x8a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
iop->size = the_jnode->info.file.size;
4d8d6: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED 4d8da: 222b 0050 movel %a3@(80),%d1 <== NOT EXECUTED 4d8de: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4d8e2: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED 4d8e6: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 4d8ea: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED
} return iop->offset; }
4d8ee: 2001 movel %d1,%d0 <== NOT EXECUTED 4d8f0: 2202 movel %d2,%d1 <== NOT EXECUTED 4d8f2: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4d8f8: 4e5e unlk %fp <== NOT EXECUTED 4d8fa: 4e75 rts <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
if (the_jnode->type == IMFS_LINEAR_FILE) {
if (iop->offset > the_jnode->info.linearfile.size)
4d8fc: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 4d900: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED 4d904: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED 4d908: 282b 0050 movel %a3@(80),%d4 <== NOT EXECUTED 4d90c: 2a01 movel %d1,%d5 <== NOT EXECUTED 4d90e: 2c02 movel %d2,%d6 <== NOT EXECUTED 4d910: 9c84 subl %d4,%d6 <== NOT EXECUTED 4d912: 9b83 subxl %d3,%d5 <== NOT EXECUTED 4d914: 6fd8 bles 4d8ee <memfile_lseek+0x48> <== NOT EXECUTED
iop->offset = the_jnode->info.linearfile.size;
4d916: 2203 movel %d3,%d1 <== NOT EXECUTED 4d918: 2404 movel %d4,%d2 <== NOT EXECUTED 4d91a: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED 4d91e: 2544 0010 movel %d4,%a2@(16) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
iop->size = the_jnode->info.file.size;
}
return iop->offset;
}
4d922: 2001 movel %d1,%d0 <== NOT EXECUTED 4d924: 2202 movel %d2,%d1 <== NOT EXECUTED 4d926: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4d92c: 4e5e unlk %fp <== NOT EXECUTED 4d92e: 4e75 rts <== NOT EXECUTED
if (iop->offset > the_jnode->info.linearfile.size)
iop->offset = the_jnode->info.linearfile.size;
}
else { /* Must be a block file (IMFS_MEMORY_FILE). */
if (IMFS_memfile_extend( the_jnode, iop->offset ))
rtems_set_errno_and_return_minus_one( ENOSPC );
4d930: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4d936: 7a1c moveq #28,%d5 <== NOT EXECUTED 4d938: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d93a: 72ff moveq #-1,%d1 <== NOT EXECUTED 4d93c: 74ff moveq #-1,%d2 <== NOT EXECUTED 4d93e: 2085 movel %d5,%a0@ <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
}
return iop->offset;
}
4d940: 2001 movel %d1,%d0 <== NOT EXECUTED 4d942: 2202 movel %d2,%d1 <== NOT EXECUTED 4d944: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4d94a: 4e5e unlk %fp <== NOT EXECUTED
...
0004d76e <memfile_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4d76e: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4d772: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 4d776: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
the_jnode = iop->pathinfo.node_access;
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4d77a: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d77e: 2200 movel %d0,%d1 <== NOT EXECUTED 4d780: 0281 0000 0204 andil #516,%d1 <== NOT EXECUTED
uint32_t mode
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d786: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4d78a: 6708 beqs 4d794 <memfile_open+0x26> <== NOT EXECUTED
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
4d78c: 7206 moveq #6,%d1 <== NOT EXECUTED 4d78e: b2ab 0048 cmpl %a3@(72),%d1 <== NOT EXECUTED 4d792: 6732 beqs 4d7c6 <memfile_open+0x58> <== 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))
4d794: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED 4d798: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4d79c: 0800 0009 btst #9,%d0 <== NOT EXECUTED 4d7a0: 6710 beqs 4d7b2 <memfile_open+0x44> <== NOT EXECUTED
iop->offset = the_jnode->info.file.size;
4d7a2: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED 4d7a6: 2542 0010 movel %d2,%a2@(16) <== NOT EXECUTED 4d7aa: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED 4d7ae: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
return 0;
4d7b2: 4280 clrl %d0 <== NOT EXECUTED
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
iop->offset = the_jnode->info.file.size;
iop->size = the_jnode->info.file.size;
4d7b4: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED 4d7b8: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return 0; }
4d7bc: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4d7c2: 4e5e unlk %fp <== NOT EXECUTED 4d7c4: 4e75 rts <== NOT EXECUTED
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
uint32_t count = the_jnode->info.linearfile.size;
4d7c6: 202b 0050 movel %a3@(80),%d0 <== NOT EXECUTED
const unsigned char *buffer = the_jnode->info.linearfile.direct;
the_jnode->type = IMFS_MEMORY_FILE;
the_jnode->info.file.size = 0;
4d7ca: 4282 clrl %d2 <== NOT EXECUTED 4d7cc: 4283 clrl %d3 <== NOT EXECUTED
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
uint32_t count = the_jnode->info.linearfile.size;
const unsigned char *buffer = the_jnode->info.linearfile.direct;
4d7ce: 222b 0054 movel %a3@(84),%d1 <== NOT EXECUTED
the_jnode->type = IMFS_MEMORY_FILE;
the_jnode->info.file.size = 0;
4d7d2: 2742 004c movel %d2,%a3@(76) <== NOT EXECUTED 4d7d6: 2743 0050 movel %d3,%a3@(80) <== NOT EXECUTED
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
uint32_t count = the_jnode->info.linearfile.size;
const unsigned char *buffer = the_jnode->info.linearfile.direct;
the_jnode->type = IMFS_MEMORY_FILE;
4d7da: 7605 moveq #5,%d3 <== NOT EXECUTED
the_jnode->info.file.size = 0;
the_jnode->info.file.indirect = 0;
4d7dc: 42ab 0054 clrl %a3@(84) <== NOT EXECUTED
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
uint32_t count = the_jnode->info.linearfile.size;
const unsigned char *buffer = the_jnode->info.linearfile.direct;
the_jnode->type = IMFS_MEMORY_FILE;
4d7e0: 2743 0048 movel %d3,%a3@(72) <== NOT EXECUTED
the_jnode->info.file.size = 0;
the_jnode->info.file.indirect = 0;
the_jnode->info.file.doubly_indirect = 0;
4d7e4: 42ab 0058 clrl %a3@(88) <== NOT EXECUTED
the_jnode->info.file.triply_indirect = 0;
4d7e8: 42ab 005c clrl %a3@(92) <== NOT EXECUTED
if ((count != 0)
4d7ec: 4a80 tstl %d0 <== NOT EXECUTED 4d7ee: 6610 bnes 4d800 <memfile_open+0x92> <== NOT EXECUTED 4d7f0: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d7f4: 4281 clrl %d1 <== NOT EXECUTED 4d7f6: 4282 clrl %d2 <== NOT EXECUTED
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4d7f8: 0800 0009 btst #9,%d0 <== NOT EXECUTED 4d7fc: 67b4 beqs 4d7b2 <memfile_open+0x44> <== NOT EXECUTED 4d7fe: 60a2 bras 4d7a2 <memfile_open+0x34> <== 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))
4d800: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d802: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d804: 42a7 clrl %sp@- <== NOT EXECUTED 4d806: 42a7 clrl %sp@- <== NOT EXECUTED 4d808: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d80a: 4eb9 0004 d57c jsr 4d57c <IMFS_memfile_write> <== NOT EXECUTED 4d810: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4d814: 72ff moveq #-1,%d1 <== NOT EXECUTED 4d816: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d818: 6710 beqs 4d82a <memfile_open+0xbc> <== NOT EXECUTED 4d81a: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d81e: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED 4d822: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED 4d826: 6000 ff74 braw 4d79c <memfile_open+0x2e> <== NOT EXECUTED
return -1;
4d82a: 70ff moveq #-1,%d0 <== NOT EXECUTED
if (iop->flags & LIBIO_FLAGS_APPEND)
iop->offset = the_jnode->info.file.size;
iop->size = the_jnode->info.file.size;
return 0;
}
4d82c: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4d832: 4e5e unlk %fp <== NOT EXECUTED
0004d262 <memfile_read>:
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4d262: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return IMFS_memfile_read( the_jnode, iop->offset, buffer, count );
4d266: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4d26a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return IMFS_memfile_read( the_jnode, iop->offset, buffer, count );
4d26e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d272: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED 4d276: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 4d27a: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED 4d27e: 4eb9 0004 d002 jsr 4d002 <IMFS_memfile_read> <== NOT EXECUTED
}
4d284: 4e5e unlk %fp <== NOT EXECUTED
0004d72c <memfile_write>:
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4d72c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4d730: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
ssize_t status;
the_jnode = iop->pathinfo.node_access;
status = IMFS_memfile_write( the_jnode, iop->offset, buffer, count );
4d734: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4d738: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
ssize_t status;
the_jnode = iop->pathinfo.node_access;
status = IMFS_memfile_write( the_jnode, iop->offset, buffer, count );
4d73c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
)
{
IMFS_jnode_t *the_jnode;
ssize_t status;
the_jnode = iop->pathinfo.node_access;
4d740: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
status = IMFS_memfile_write( the_jnode, iop->offset, buffer, count );
4d744: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4d748: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 4d74c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d74e: 4eb9 0004 d57c jsr 4d57c <IMFS_memfile_write> <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4d754: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED 4d758: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED 4d75c: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED 4d760: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return status;
}
4d764: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4d76a: 4e5e unlk %fp <== NOT EXECUTED
00042f64 <mkfifo>:
int mkfifo(
const char *path,
mode_t mode
)
{
42f64: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return mknod( path, mode | S_IFIFO, 0LL );
42f68: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 42f6c: 42a7 clrl %sp@- <== NOT EXECUTED 42f6e: 08c0 000c bset #12,%d0 <== NOT EXECUTED 42f72: 42a7 clrl %sp@- <== NOT EXECUTED 42f74: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42f76: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 42f7a: 4eb9 0004 2f84 jsr 42f84 <mknod> <== NOT EXECUTED
}
42f80: 4e5e unlk %fp <== NOT EXECUTED
0004311c <mknod>:
int mknod(
const char *pathname,
mode_t mode,
dev_t dev
)
{
4311c: 4e56 ffd4 linkw %fp,#-44 43120: 48d7 001c moveml %d2-%d4,%sp@ 43124: 242e 000c movel %fp@(12),%d2
rtems_filesystem_location_info_t temp_loc;
int i;
const char *name_start;
int result;
if ( !(mode & (S_IFREG|S_IFCHR|S_IFBLK|S_IFIFO) ) )
43128: 2002 movel %d2,%d0 4312a: 0280 0000 f000 andil #61440,%d0
int mknod(
const char *pathname,
mode_t mode,
dev_t dev
)
{
43130: 282e 0008 movel %fp@(8),%d4
rtems_filesystem_location_info_t temp_loc;
int i;
const char *name_start;
int result;
if ( !(mode & (S_IFREG|S_IFCHR|S_IFBLK|S_IFIFO) ) )
43134: 4a80 tstl %d0
43136: 6618 bnes 43150 <mknod+0x34> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
43138: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4313e: 7216 moveq #22,%d1 <== NOT EXECUTED 43140: 2040 moveal %d0,%a0 <== NOT EXECUTED 43142: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*temp_loc.ops->mknod_h)( name_start, mode, dev, &temp_loc );
rtems_filesystem_freenode( &temp_loc );
return result;
}
43144: 4cee 001c ffd4 moveml %fp@(-44),%d2-%d4 <== NOT EXECUTED
int i;
const char *name_start;
int result;
if ( !(mode & (S_IFREG|S_IFCHR|S_IFBLK|S_IFIFO) ) )
rtems_set_errno_and_return_minus_one( EINVAL );
4314a: 2081 movel %d1,%a0@ <== NOT EXECUTED
result = (*temp_loc.ops->mknod_h)( name_start, mode, dev, &temp_loc );
rtems_filesystem_freenode( &temp_loc );
return result;
}
4314c: 4e5e unlk %fp <== NOT EXECUTED 4314e: 4e75 rts <== NOT EXECUTED
int result;
if ( !(mode & (S_IFREG|S_IFCHR|S_IFBLK|S_IFIFO) ) )
rtems_set_errno_and_return_minus_one( EINVAL );
rtems_filesystem_get_start_loc( pathname, &i, &temp_loc );
43150: 260e movel %fp,%d3 43152: 0683 ffff ffe4 addil #-28,%d3 43158: 2f03 movel %d3,%sp@- 4315a: 486e fffc pea %fp@(-4) 4315e: 2f04 movel %d4,%sp@- 43160: 4eb9 0004 3bb4 jsr 43bb4 <rtems_filesystem_get_start_loc>
result = (*temp_loc.ops->evalformake_h)(
43166: 486e fff8 pea %fp@(-8) 4316a: d8ae fffc addl %fp@(-4),%d4 4316e: 2f03 movel %d3,%sp@- 43170: 206e fff0 moveal %fp@(-16),%a0 43174: 2f04 movel %d4,%sp@- 43176: 2068 0004 moveal %a0@(4),%a0 4317a: 4e90 jsr %a0@
&pathname[i],
&temp_loc,
&name_start
);
if ( result != 0 )
4317c: 4fef 0018 lea %sp@(24),%sp 43180: 4a80 tstl %d0
43182: 670c beqs 43190 <mknod+0x74>
return -1;
43184: 70ff moveq #-1,%d0
result = (*temp_loc.ops->mknod_h)( name_start, mode, dev, &temp_loc );
rtems_filesystem_freenode( &temp_loc );
return result;
}
43186: 4cee 001c ffd4 moveml %fp@(-44),%d2-%d4 4318c: 4e5e unlk %fp 4318e: 4e75 rts
&name_start
);
if ( result != 0 )
return -1;
result = (*temp_loc.ops->mknod_h)( name_start, mode, dev, &temp_loc );
43190: 2f03 movel %d3,%sp@- 43192: 2f2e 0014 movel %fp@(20),%sp@- 43196: 2f2e 0010 movel %fp@(16),%sp@- 4319a: 206e fff0 moveal %fp@(-16),%a0 4319e: 2f02 movel %d2,%sp@- 431a0: 2f2e fff8 movel %fp@(-8),%sp@- 431a4: 2068 0014 moveal %a0@(20),%a0 431a8: 4e90 jsr %a0@
rtems_filesystem_freenode( &temp_loc );
431aa: 2f03 movel %d3,%sp@- 431ac: 2d40 ffe0 movel %d0,%fp@(-32) 431b0: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode>
return result;
431b6: 202e ffe0 movel %fp@(-32),%d0 431ba: 4fef 0018 lea %sp@(24),%sp
}
431be: 4cee 001c ffd4 moveml %fp@(-44),%d2-%d4
431c4: 4e5e unlk %fp <== NOT EXECUTED
0004325c <mount>:
/*
* Are the file system options valid?
*/
if ( options != RTEMS_FILESYSTEM_READ_ONLY &&
4325c: 7001 moveq #1,%d0
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
4325e: 4e56 ffb8 linkw %fp,#-72 43262: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 43266: 262e 0008 movel %fp@(8),%d3 4326a: 242e 000c movel %fp@(12),%d2 4326e: 2a6e 0010 moveal %fp@(16),%a5
/*
* Are the file system options valid?
*/
if ( options != RTEMS_FILESYSTEM_READ_ONLY &&
43272: b0ae 0014 cmpl %fp@(20),%d0 43276: 6500 0288 bcsw 43500 <mount+0x2a4>
rtems_set_errno_and_return_minus_one( EINVAL );
/*
* Get mount handler
*/
mount_h = rtems_filesystem_get_mount_handler( filesystemtype );
4327a: 2f0d movel %a5,%sp@- 4327c: 4eb9 0004 b448 jsr 4b448 <rtems_filesystem_get_mount_handler>
if ( !mount_h )
43282: 588f addql #4,%sp
rtems_set_errno_and_return_minus_one( EINVAL );
/*
* Get mount handler
*/
mount_h = rtems_filesystem_get_mount_handler( filesystemtype );
43284: 2840 moveal %d0,%a4
if ( !mount_h )
43286: 4a80 tstl %d0 43288: 6700 0276 beqw 43500 <mount+0x2a4>
{
rtems_filesystem_fsmount_me_t mount_h = NULL;
rtems_filesystem_location_info_t loc;
rtems_filesystem_mount_table_entry_t *mt_entry = NULL;
rtems_filesystem_location_info_t *loc_to_free = NULL;
bool has_target = target != NULL;
4328c: 4a82 tstl %d2 4328e: 56c4 sne %d4 43290: 4484 negl %d4
const char *target_or_null,
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
43292: 4a04 tstb %d4 43294: 6700 023c beqw 434d2 <mount+0x276>
* 4) The mount point exists with the proper permissions to allow mounting
* 5) The selected mount point already has a file system mounted to it
*
*/
int mount(
43298: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4329a: 45f9 0004 fd64 lea 4fd64 <strlen>,%a2 <== NOT EXECUTED 432a0: 2d42 ffe0 movel %d2,%fp@(-32) <== NOT EXECUTED 432a4: 4e92 jsr %a2@ <== NOT EXECUTED 432a6: 588f addql #4,%sp <== NOT EXECUTED 432a8: 2e00 movel %d0,%d7 <== NOT EXECUTED 432aa: 5287 addql #1,%d7 <== NOT EXECUTED
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;
432ac: 2f0d movel %a5,%sp@- <== NOT EXECUTED
* 4) The mount point exists with the proper permissions to allow mounting
* 5) The selected mount point already has a file system mounted to it
*
*/
int mount(
432ae: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
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;
432b2: 4e92 jsr %a2@ <== NOT EXECUTED 432b4: 588f addql #4,%sp <== NOT EXECUTED 432b6: 2a00 movel %d0,%d5 <== NOT EXECUTED 432b8: 5285 addql #1,%d5 <== NOT EXECUTED
size_t source_size = source_or_null != NULL ?
strlen( source_or_null ) + 1 : 0;
432ba: 4a83 tstl %d3 <== NOT EXECUTED 432bc: 6700 023c beqw 434fa <mount+0x29e> <== NOT EXECUTED 432c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 432c2: 4eb9 0004 fd64 jsr 4fd64 <strlen> <== NOT EXECUTED 432c8: 588f addql #4,%sp <== NOT EXECUTED 432ca: 2640 moveal %d0,%a3 <== NOT EXECUTED 432cc: 528b addql #1,%a3 <== NOT EXECUTED
size_t target_size = strlen( target ) + 1;
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
+ filesystemtype_size + source_size + target_size;
432ce: 2245 moveal %d5,%a1 432d0: 41f1 7874 lea %a1@(00000074,%d7:l),%a0
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
432d4: 4870 b800 pea %a0@(00000000,%a3:l) 432d8: 4878 0001 pea 1 <ADD> 432dc: 4eb9 0004 28f0 jsr 428f0 <calloc>
if ( mt_entry != NULL ) {
432e2: 508f addql #8,%sp
size_t source_size = source_or_null != NULL ?
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;
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
432e4: 2440 moveal %d0,%a2
if ( mt_entry != NULL ) {
432e6: 4a80 tstl %d0 432e8: 6700 01d0 beqw 434ba <mount+0x25e>
char *str = (char *) mt_entry + sizeof( *mt_entry );
memcpy( str, filesystemtype, filesystemtype_size );
432ec: 2f05 movel %d5,%sp@-
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
+ filesystemtype_size + source_size + target_size;
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
if ( mt_entry != NULL ) {
char *str = (char *) mt_entry + sizeof( *mt_entry );
432ee: 2c00 movel %d0,%d6 432f0: 0686 0000 0074 addil #116,%d6
memcpy( str, filesystemtype, filesystemtype_size );
mt_entry->type = str;
str += filesystemtype_size;
432f6: da86 addl %d6,%d5
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
str += source_size;
432f8: 41f3 5800 lea %a3@(00000000,%d5:l),%a0
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
if ( mt_entry != NULL ) {
char *str = (char *) mt_entry + sizeof( *mt_entry );
memcpy( str, filesystemtype, filesystemtype_size );
432fc: 2f0d movel %a5,%sp@- 432fe: 4bf9 0004 f1b8 lea 4f1b8 <memcpy>,%a5 43304: 2f06 movel %d6,%sp@-
mt_entry->type = str;
str += filesystemtype_size;
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
str += source_size;
43306: 2d48 ffe4 movel %a0,%fp@(-28)
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
if ( mt_entry != NULL ) {
char *str = (char *) mt_entry + sizeof( *mt_entry );
memcpy( str, filesystemtype, filesystemtype_size );
4330a: 4e95 jsr %a5@
mt_entry->type = str;
str += filesystemtype_size;
memcpy( str, source_or_null, source_size );
4330c: 2f0b movel %a3,%sp@- 4330e: 2f03 movel %d3,%sp@-
if ( mt_entry != NULL ) {
char *str = (char *) mt_entry + sizeof( *mt_entry );
memcpy( str, filesystemtype, filesystemtype_size );
mt_entry->type = str;
43310: 2546 006c movel %d6,%a2@(108)
str += filesystemtype_size;
memcpy( str, source_or_null, source_size );
43314: 2f05 movel %d5,%sp@- 43316: 4e95 jsr %a5@
mt_entry->dev = str;
str += source_size;
memcpy( str, target, target_size );
43318: 2f07 movel %d7,%sp@- 4331a: 2f2e ffe0 movel %fp@(-32),%sp@-
memcpy( str, filesystemtype, filesystemtype_size );
mt_entry->type = str;
str += filesystemtype_size;
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
4331e: 2545 0070 movel %d5,%a2@(112)
str += source_size;
memcpy( str, target, target_size );
43322: 2f2e ffe4 movel %fp@(-28),%sp@- 43326: 4e95 jsr %a5@
);
if ( !mt_entry )
rtems_set_errno_and_return_minus_one( ENOMEM );
mt_entry->mt_fs_root.mt_entry = mt_entry;
mt_entry->options = options;
43328: 202e 0014 movel %fp@(20),%d0
mt_entry->pathconf_limits_and_options = rtems_filesystem_default_pathconf;
4332c: 7205 moveq #5,%d1 4332e: 307c 0080 moveaw #128,%a0
/*
* The mount_point should be a directory with read/write/execute
* permissions in the existing tree.
*/
if ( has_target ) {
43332: 4fef 0024 lea %sp@(36),%sp
);
if ( !mt_entry )
rtems_set_errno_and_return_minus_one( ENOMEM );
mt_entry->mt_fs_root.mt_entry = mt_entry;
mt_entry->options = options;
43336: 2540 0030 movel %d0,%a2@(48)
mt_entry->pathconf_limits_and_options = rtems_filesystem_default_pathconf;
4333a: 7007 moveq #7,%d0
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
str += source_size;
memcpy( str, target, target_size );
mt_entry->target = str;
4333c: 226e ffe4 moveal %fp@(-28),%a1
if ( !mt_entry )
rtems_set_errno_and_return_minus_one( ENOMEM );
mt_entry->mt_fs_root.mt_entry = mt_entry;
mt_entry->options = options;
mt_entry->pathconf_limits_and_options = rtems_filesystem_default_pathconf;
43340: 2541 0038 movel %d1,%a2@(56) 43344: 123c ffff moveb #-1,%d1 43348: 2548 003c movel %a0,%a2@(60) 4334c: 307c 0400 moveaw #1024,%a0 43350: 2540 0040 movel %d0,%a2@(64) 43354: 103c 0001 moveb #1,%d0
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
str += source_size;
memcpy( str, target, target_size );
mt_entry->target = str;
43358: 2549 0068 movel %a1,%a2@(104)
&target_length
);
if ( !mt_entry )
rtems_set_errno_and_return_minus_one( ENOMEM );
mt_entry->mt_fs_root.mt_entry = mt_entry;
4335c: 254a 002c movel %a2,%a2@(44)
mt_entry->options = options; mt_entry->pathconf_limits_and_options = rtems_filesystem_default_pathconf;
43360: 2541 0044 movel %d1,%a2@(68) 43364: 2541 0048 movel %d1,%a2@(72) 43368: 2548 004c movel %a0,%a2@(76) 4336c: 42aa 0050 clrl %a2@(80) 43370: 42aa 0054 clrl %a2@(84) 43374: 2540 0058 movel %d0,%a2@(88) 43378: 42aa 005c clrl %a2@(92) 4337c: 42aa 0060 clrl %a2@(96) 43380: 42aa 0064 clrl %a2@(100)
/*
* The mount_point should be a directory with read/write/execute
* permissions in the existing tree.
*/
if ( has_target ) {
43384: 4a04 tstb %d4 43386: 6600 0092 bnew 4341a <mount+0x1be>
}
} else {
/*
* Do we already have a base file system ?
*/
if ( !rtems_chain_is_empty( &mount_chain ) ) {
4338a: 203c 0005 e434 movel #386100,%d0 43390: b0b9 0005 e430 cmpl 5e430 <mount_chain>,%d0 43396: 6600 0180 bnew 43518 <mount+0x2bc>
)
{
rtems_filesystem_fsmount_me_t mount_h = NULL;
rtems_filesystem_location_info_t loc;
rtems_filesystem_mount_table_entry_t *mt_entry = NULL;
rtems_filesystem_location_info_t *loc_to_free = NULL;
4339a: 4283 clrl %d3
* mt_point_node.node_access will be left to null to indicate that this
* is the root of the entire file system.
*/
}
if ( (*mount_h)( mt_entry, data ) ) {
4339c: 2f2e 0018 movel %fp@(24),%sp@- 433a0: 2f0a movel %a2,%sp@- 433a2: 4e94 jsr %a4@ 433a4: 508f addql #8,%sp 433a6: 4a80 tstl %d0 433a8: 6600 0190 bnew 4353a <mount+0x2de>
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
433ac: 42a7 clrl %sp@- 433ae: 42a7 clrl %sp@- 433b0: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- 433b6: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> 433bc: 2f0a movel %a2,%sp@- 433be: 4879 0005 e430 pea 5e430 <mount_chain> 433c4: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append>
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
433ca: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- 433d0: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
*/
rtems_libio_lock();
rtems_chain_append( &mount_chain, &mt_entry->Node );
rtems_libio_unlock();
if ( !has_target )
433d6: 4fef 0018 lea %sp@(24),%sp 433da: 4a04 tstb %d4
433dc: 6630 bnes 4340e <mount+0x1b2> <== NEVER TAKEN
rtems_filesystem_root = mt_entry->mt_fs_root;
433de: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0
return 0;
433e4: 4280 clrl %d0
rtems_libio_lock();
rtems_chain_append( &mount_chain, &mt_entry->Node );
rtems_libio_unlock();
if ( !has_target )
rtems_filesystem_root = mt_entry->mt_fs_root;
433e6: 216a 001c 0018 movel %a2@(28),%a0@(24) 433ec: 216a 0020 001c movel %a2@(32),%a0@(28) 433f2: 216a 0024 0020 movel %a2@(36),%a0@(32) 433f8: 216a 0028 0024 movel %a2@(40),%a0@(36) 433fe: 216a 002c 0028 movel %a2@(44),%a0@(40)
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
return -1;
}
43404: 4cee 3cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a5 4340a: 4e5e unlk %fp 4340c: 4e75 rts
rtems_libio_unlock();
if ( !has_target )
rtems_filesystem_root = mt_entry->mt_fs_root;
return 0;
4340e: 4280 clrl %d0 <== NOT EXECUTED
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
return -1;
}
43410: 4cee 3cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a5 <== NOT EXECUTED 43416: 4e5e unlk %fp <== NOT EXECUTED 43418: 4e75 rts <== NOT EXECUTED
* The mount_point should be a directory with read/write/execute
* permissions in the existing tree.
*/
if ( has_target ) {
if ( rtems_filesystem_evaluate_path(
4341a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4341e: 260e movel %fp,%d3 <== NOT EXECUTED 43420: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED 43426: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43428: 4878 0007 pea 7 <TRUNCDFSF> <== NOT EXECUTED 4342c: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED 43430: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43432: 4eb9 0004 2c04 jsr 42c04 <rtems_filesystem_evaluate_path> <== NOT EXECUTED 43438: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4343c: 72ff moveq #-1,%d1 <== NOT EXECUTED 4343e: b280 cmpl %d0,%d1 <== NOT EXECUTED 43440: 6700 00e2 beqw 43524 <mount+0x2c8> <== NOT EXECUTED
/*
* Test to see if it is a directory
*/
if ( loc.ops->node_type_h( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
43444: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 43448: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4344a: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4344e: 4e90 jsr %a0@ <== NOT EXECUTED 43450: 588f addql #4,%sp <== NOT EXECUTED 43452: 7201 moveq #1,%d1 <== NOT EXECUTED 43454: b280 cmpl %d0,%d1 <== NOT EXECUTED 43456: 6600 010a bnew 43562 <mount+0x306> <== NOT EXECUTED
/*
* You can only mount one file system onto a single mount point.
*/
if ( rtems_filesystem_mount_iterate( is_node_fs_root, loc.node_access ) ) {
4345a: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED 4345e: 487a fd68 pea %pc@(431c8 <is_node_fs_root>) <== NOT EXECUTED 43462: 4eb9 0004 31e0 jsr 431e0 <rtems_filesystem_mount_iterate> <== NOT EXECUTED 43468: 508f addql #8,%sp <== NOT EXECUTED 4346a: 4a00 tstb %d0 <== NOT EXECUTED 4346c: 6600 010e bnew 4357c <mount+0x320> <== NOT EXECUTED
* traverse the tree.
*/
mt_entry->mt_point_node.node_access = loc.node_access;
mt_entry->mt_point_node.handlers = loc.handlers;
mt_entry->mt_point_node.ops = loc.ops;
43470: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
* may have been allocated in loc should not be sent to freenode
* until the system is unmounted. It may be needed to correctly
* traverse the tree.
*/
mt_entry->mt_point_node.node_access = loc.node_access;
43474: 256e ffec 0008 movel %fp@(-20),%a2@(8) <== NOT EXECUTED
mt_entry->mt_point_node.handlers = loc.handlers;
4347a: 256e fff4 0010 movel %fp@(-12),%a2@(16) <== NOT EXECUTED
mt_entry->mt_point_node.ops = loc.ops;
mt_entry->mt_point_node.mt_entry = loc.mt_entry;
43480: 256e fffc 0018 movel %fp@(-4),%a2@(24) <== NOT EXECUTED
/*
* This link to the parent is only done when we are dealing with system
* below the base file system
*/
if ( loc.ops->mount_h( mt_entry ) ) {
43486: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43488: 2268 0020 moveal %a0@(32),%a1 <== NOT EXECUTED
* traverse the tree.
*/
mt_entry->mt_point_node.node_access = loc.node_access;
mt_entry->mt_point_node.handlers = loc.handlers;
mt_entry->mt_point_node.ops = loc.ops;
4348c: 2548 0014 movel %a0,%a2@(20) <== NOT EXECUTED
/*
* This link to the parent is only done when we are dealing with system
* below the base file system
*/
if ( loc.ops->mount_h( mt_entry ) ) {
43490: 4e91 jsr %a1@ <== NOT EXECUTED 43492: 588f addql #4,%sp <== NOT EXECUTED 43494: 4a80 tstl %d0 <== NOT EXECUTED 43496: 6700 ff04 beqw 4339c <mount+0x140> <== NOT EXECUTED
return 0;
cleanup_and_bail:
free( mt_entry );
4349a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4349c: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED 434a2: 588f addql #4,%sp <== NOT EXECUTED
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
434a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 434a6: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode> <== NOT EXECUTED 434ac: 588f addql #4,%sp <== NOT EXECUTED
return -1;
434ae: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
434b0: 4cee 3cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a5 <== NOT EXECUTED 434b6: 4e5e unlk %fp <== NOT EXECUTED 434b8: 4e75 rts <== NOT EXECUTED
target,
filesystemtype,
&target_length
);
if ( !mt_entry )
rtems_set_errno_and_return_minus_one( ENOMEM );
434ba: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 434c0: 760c moveq #12,%d3 <== NOT EXECUTED 434c2: 2040 moveal %d0,%a0 <== NOT EXECUTED 434c4: 70ff moveq #-1,%d0 <== NOT EXECUTED 434c6: 2083 movel %d3,%a0@ <== NOT EXECUTED
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
return -1;
}
434c8: 4cee 3cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a5 <== NOT EXECUTED 434ce: 4e5e unlk %fp <== NOT EXECUTED 434d0: 4e75 rts <== NOT EXECUTED
const char *target_or_null,
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
434d2: 7201 moveq #1,%d1 434d4: 41f9 0005 cf00 lea 5cf00 <IMFS_ops+0x48>,%a0 434da: 45f9 0004 fd64 lea 4fd64 <strlen>,%a2 434e0: 7e02 moveq #2,%d7
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
434e2: 2f0d movel %a5,%sp@-
const char *target_or_null,
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
434e4: 2d41 ffe8 movel %d1,%fp@(-24) 434e8: 2d48 ffe0 movel %a0,%fp@(-32)
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
434ec: 4e92 jsr %a2@ 434ee: 588f addql #4,%sp 434f0: 2a00 movel %d0,%d5 434f2: 5285 addql #1,%d5
size_t source_size = source_or_null != NULL ?
strlen( source_or_null ) + 1 : 0;
434f4: 4a83 tstl %d3 434f6: 6600 fdc8 bnew 432c0 <mount+0x64> 434fa: 97cb subal %a3,%a3 434fc: 6000 fdd0 braw 432ce <mount+0x72>
/*
* Get mount handler
*/
mount_h = rtems_filesystem_get_mount_handler( filesystemtype );
if ( !mount_h )
rtems_set_errno_and_return_minus_one( EINVAL );
43500: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 43506: 7816 moveq #22,%d4 <== NOT EXECUTED 43508: 2040 moveal %d0,%a0 <== NOT EXECUTED 4350a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4350c: 2084 movel %d4,%a0@ <== NOT EXECUTED
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
return -1;
}
4350e: 4cee 3cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a5 <== NOT EXECUTED 43514: 4e5e unlk %fp <== NOT EXECUTED 43516: 4e75 rts <== NOT EXECUTED
} else {
/*
* Do we already have a base file system ?
*/
if ( !rtems_chain_is_empty( &mount_chain ) ) {
errno = EINVAL;
43518: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4351e: 2040 moveal %d0,%a0 <== NOT EXECUTED 43520: 7016 moveq #22,%d0 <== NOT EXECUTED 43522: 2080 movel %d0,%a0@ <== NOT EXECUTED
return 0;
cleanup_and_bail:
free( mt_entry );
43524: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43526: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED 4352c: 588f addql #4,%sp <== NOT EXECUTED
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
return -1;
4352e: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
43530: 4cee 3cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a5 <== NOT EXECUTED 43536: 4e5e unlk %fp <== NOT EXECUTED 43538: 4e75 rts <== NOT EXECUTED
if ( (*mount_h)( mt_entry, data ) ) {
/*
* Try to undo the mount operation
*/
loc.ops->unmount_h( mt_entry );
4353a: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 4353e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43540: 2068 0028 moveal %a0@(40),%a0 <== NOT EXECUTED 43544: 4e90 jsr %a0@ <== NOT EXECUTED
return 0;
cleanup_and_bail:
free( mt_entry );
43546: 2e8a movel %a2,%sp@ <== NOT EXECUTED 43548: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
if ( loc_to_free )
4354e: 588f addql #4,%sp <== NOT EXECUTED 43550: 4a83 tstl %d3 <== NOT EXECUTED 43552: 6600 ff50 bnew 434a4 <mount+0x248> <== NOT EXECUTED
rtems_filesystem_freenode( loc_to_free );
return -1;
43556: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
43558: 4cee 3cfc ffb8 moveml %fp@(-72),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4355e: 4e5e unlk %fp <== NOT EXECUTED 43560: 4e75 rts <== NOT EXECUTED
/*
* Test to see if it is a directory
*/
if ( loc.ops->node_type_h( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
errno = ENOTDIR;
43562: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 43568: 7414 moveq #20,%d2 <== NOT EXECUTED 4356a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4356c: 2082 movel %d2,%a0@ <== NOT EXECUTED
return 0;
cleanup_and_bail:
free( mt_entry );
4356e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43570: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED 43576: 588f addql #4,%sp <== NOT EXECUTED 43578: 6000 ff2a braw 434a4 <mount+0x248> <== NOT EXECUTED
/*
* You can only mount one file system onto a single mount point.
*/
if ( rtems_filesystem_mount_iterate( is_node_fs_root, loc.node_access ) ) {
errno = EBUSY;
4357c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 43582: 7210 moveq #16,%d1 <== NOT EXECUTED 43584: 2240 moveal %d0,%a1 <== NOT EXECUTED 43586: 2281 movel %d1,%a1@ <== NOT EXECUTED
return 0;
cleanup_and_bail:
free( mt_entry );
43588: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4358a: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED 43590: 588f addql #4,%sp <== NOT EXECUTED 43592: 6000 ff10 braw 434a4 <mount+0x248> <== NOT EXECUTED
...
000439b0 <mount_and_make_target_path>:
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
439b0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 439b4: 48d7 007c moveml %d2-%d6,%sp@ <== NOT EXECUTED 439b8: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 439bc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 439c0: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 439c4: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED 439c8: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED
int rv = -1;
if (target != NULL) {
439cc: 4a82 tstl %d2 <== NOT EXECUTED 439ce: 673e beqs 43a0e <mount_and_make_target_path+0x5e><== NOT EXECUTED
rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);
439d0: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED 439d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 439d6: 4eb9 0004 4414 jsr 44414 <rtems_mkdir> <== NOT EXECUTED
if (rv == 0) {
439dc: 508f addql #8,%sp <== NOT EXECUTED 439de: 4a80 tstl %d0 <== NOT EXECUTED 439e0: 670a beqs 439ec <mount_and_make_target_path+0x3c><== NOT EXECUTED
} else {
errno = EINVAL;
}
return rv;
}
439e2: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED 439e8: 4e5e unlk %fp <== NOT EXECUTED 439ea: 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(
439ec: 2d46 0018 movel %d6,%fp@(24) <== NOT EXECUTED 439f0: 2d45 0014 movel %d5,%fp@(20) <== NOT EXECUTED 439f4: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED 439f8: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED 439fc: 2d43 0008 movel %d3,%fp@(8) <== NOT EXECUTED
} else {
errno = EINVAL;
}
return rv;
}
43a00: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED 43a06: 4e5e unlk %fp <== NOT EXECUTED
int rv = -1;
if (target != NULL) {
rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);
if (rv == 0) {
rv = mount(
43a08: 4ef9 0004 3abc jmp 43abc <mount> <== NOT EXECUTED
options,
data
);
}
} else {
errno = EINVAL;
43a0e: 4eb9 0004 f0f0 jsr 4f0f0 <__errno> <== NOT EXECUTED 43a14: 7216 moveq #22,%d1 <== NOT EXECUTED 43a16: 2040 moveal %d0,%a0 <== NOT EXECUTED
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
int rv = -1;
43a18: 70ff moveq #-1,%d0 <== NOT EXECUTED
} else {
errno = EINVAL;
}
return rv;
}
43a1a: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
options,
data
);
}
} else {
errno = EINVAL;
43a20: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return rv;
}
43a22: 4e5e unlk %fp <== NOT EXECUTED
...
00046224 <mprotect>:
const void *addr __attribute__((unused)),
size_t len __attribute__((unused)),
int prot __attribute__((unused)) )
{
return 0;
}
46224: 4280 clrl %d0 <== NOT EXECUTED
int mprotect(
const void *addr __attribute__((unused)),
size_t len __attribute__((unused)),
int prot __attribute__((unused)) )
{
46226: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; }
4622a: 4e5e unlk %fp <== NOT EXECUTED
...
0004bd8c <mq_close>:
*/
int mq_close(
mqd_t mqdes
)
{
4bd8c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4bd90: 2f0a movel %a2,%sp@- <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
mqd_t id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control_fd *) _Objects_Get(
4bd92: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4bd96: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4bd9a: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bda0: 4eb9 0004 f6b0 jsr 4f6b0 <_Objects_Get> <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
if ( location == OBJECTS_LOCAL ) {
4bda6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4bdaa: 2440 moveal %d0,%a2 <== NOT EXECUTED 4bdac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4bdb0: 6640 bnes 4bdf2 <mq_close+0x66> <== NOT EXECUTED
* First update the actual message queue to reflect this descriptor
* being disassociated. This may result in the queue being really
* deleted.
*/
the_mq = the_mq_fd->Queue;
4bdb2: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
the_mq->open_count -= 1;
4bdb6: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED
_POSIX_Message_queue_Delete( the_mq );
4bdba: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4bdbc: 4eb9 0004 be08 jsr 4be08 <_POSIX_Message_queue_Delete> <== NOT EXECUTED
/*
* Now close this file descriptor.
*/
_Objects_Close(
4bdc2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bdc4: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bdca: 4eb9 0004 f280 jsr 4f280 <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (
POSIX_Message_queue_Control_fd *the_mq_fd
)
{
_Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
4bdd0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bdd2: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bdd8: 4eb9 0004 f544 jsr 4f544 <_Objects_Free> <== NOT EXECUTED
&_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
4bdde: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
}
4bde4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Objects_Close(
&_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
return 0;
4bde8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4bdec: 4280 clrl %d0 <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
}
4bdee: 4e5e unlk %fp <== NOT EXECUTED 4bdf0: 4e75 rts <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
4bdf2: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED
}
4bdf8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
4bdfc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bdfe: 7209 moveq #9,%d1 <== NOT EXECUTED 4be00: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4be02: 4e5e unlk %fp <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
4be04: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
0004be60 <mq_getattr>:
int mq_getattr(
mqd_t mqdes,
struct mq_attr *mqstat
)
{
4be60: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4be64: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4be66: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
CORE_message_queue_Attributes *the_mq_attr;
if ( !mqstat )
4be6a: 4a8a tstl %a2 <== NOT EXECUTED 4be6c: 6760 beqs 4bece <mq_getattr+0x6e> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
mqd_t id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control_fd *) _Objects_Get(
4be6e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4be72: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4be76: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4be7c: 4eb9 0004 f6b0 jsr 4f6b0 <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
4be82: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4be86: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4be8a: 662c bnes 4beb8 <mq_getattr+0x58> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_mq = the_mq_fd->Queue;
4be8c: 2240 moveal %d0,%a1 <== NOT EXECUTED 4be8e: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
* Return the old values.
*/
the_mq_attr = &the_mq->Message_queue.Attributes;
mqstat->mq_flags = the_mq_fd->oflag;
4be92: 24a9 0014 movel %a1@(20),%a2@ <== NOT EXECUTED
mqstat->mq_msgsize = the_mq->Message_queue.maximum_message_size;
4be96: 2568 0066 0008 movel %a0@(102),%a2@(8) <== NOT EXECUTED
mqstat->mq_maxmsg = the_mq->Message_queue.maximum_pending_messages;
4be9c: 2568 005e 0004 movel %a0@(94),%a2@(4) <== NOT EXECUTED
mqstat->mq_curmsgs = the_mq->Message_queue.number_of_pending_messages;
4bea2: 2568 0062 000c movel %a0@(98),%a2@(12) <== NOT EXECUTED
_Thread_Enable_dispatch();
4bea8: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4beae: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
mqstat->mq_msgsize = the_mq->Message_queue.maximum_message_size;
mqstat->mq_maxmsg = the_mq->Message_queue.maximum_pending_messages;
mqstat->mq_curmsgs = the_mq->Message_queue.number_of_pending_messages;
_Thread_Enable_dispatch();
return 0;
4beb2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4beb4: 4e5e unlk %fp <== NOT EXECUTED 4beb6: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4beb8: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED
}
4bebe: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4bec2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bec4: 7209 moveq #9,%d1 <== NOT EXECUTED 4bec6: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4bec8: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4beca: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4becc: 4e75 rts <== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
CORE_message_queue_Attributes *the_mq_attr;
if ( !mqstat )
rtems_set_errno_and_return_minus_one( EINVAL );
4bece: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bed4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
CORE_message_queue_Attributes *the_mq_attr;
if ( !mqstat )
rtems_set_errno_and_return_minus_one( EINVAL );
4bed8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4beda: 7216 moveq #22,%d1 <== NOT EXECUTED 4bedc: 70ff moveq #-1,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bede: 4e5e unlk %fp <== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
CORE_message_queue_Attributes *the_mq_attr;
if ( !mqstat )
rtems_set_errno_and_return_minus_one( EINVAL );
4bee0: 2081 movel %d1,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
0004bf1a <mq_notify>:
int mq_notify(
mqd_t mqdes,
const struct sigevent *notification
)
{
4bf1a: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4bf1e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bf20: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bf22: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4bf26: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4bf2a: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bf30: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4bf34: 4eb9 0004 f6b0 jsr 4f6b0 <_Objects_Get> <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
4bf3a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4bf3e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4bf42: 671a beqs 4bf5e <mq_notify+0x44> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4bf44: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED
}
4bf4a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4bf4e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bf50: 7209 moveq #9,%d1 <== NOT EXECUTED 4bf52: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4bf54: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4bf58: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4bf5a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4bf5c: 4e75 rts <== NOT EXECUTED
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
case OBJECTS_LOCAL:
the_mq = the_mq_fd->Queue;
4bf5e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bf60: 2468 0010 moveal %a0@(16),%a2 <== NOT EXECUTED
if ( notification ) {
4bf64: 4a82 tstl %d2 <== NOT EXECUTED 4bf66: 673c beqs 4bfa4 <mq_notify+0x8a> <== NOT EXECUTED
if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) {
4bf68: 4aaa 007a tstl %a2@(122) <== NOT EXECUTED 4bf6c: 6648 bnes 4bfb6 <mq_notify+0x9c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
}
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
the_mq->notification = *notification;
4bf6e: 41ea 008e lea %a2@(142),%a0 <== NOT EXECUTED 4bf72: 2242 moveal %d2,%a1 <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
4bf74: 203c 0004 bee4 movel #311012,%d0 <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4bf7a: 42aa 007e clrl %a2@(126) <== NOT EXECUTED 4bf7e: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4bf80: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4bf82: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4bf84: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4bf86: 2091 movel %a1@,%a0@ <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
4bf88: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4bf8c: 254a 007e movel %a2,%a2@(126) <== NOT EXECUTED
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
}
_Thread_Enable_dispatch();
4bf90: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4bf96: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bf98: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4bf9c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4bfa0: 4e5e unlk %fp <== NOT EXECUTED 4bfa2: 4e75 rts <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
4bfa4: 42aa 007a clrl %a2@(122) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4bfa8: 42aa 007e clrl %a2@(126) <== NOT EXECUTED
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
}
_Thread_Enable_dispatch();
4bfac: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4bfb2: 4280 clrl %d0 <== NOT EXECUTED 4bfb4: 60e2 bras 4bf98 <mq_notify+0x7e> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_mq = the_mq_fd->Queue;
if ( notification ) {
if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) {
_Thread_Enable_dispatch();
4bfb6: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
4bfbc: 7410 moveq #16,%d2 <== NOT EXECUTED 4bfbe: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bfc4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
the_mq = the_mq_fd->Queue;
if ( notification ) {
if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EBUSY );
4bfc8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bfca: 70ff moveq #-1,%d0 <== NOT EXECUTED 4bfcc: 2082 movel %d2,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bfce: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4bfd2: 4e5e unlk %fp <== NOT EXECUTED
...
0004bfd8 <mq_open>:
int oflag,
...
/* mode_t mode, */
/* struct mq_attr attr */
)
{
4bfd8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4bfdc: 2039 0006 9a38 movel 69a38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4bfe2: 5280 addql #1,%d0 <== NOT EXECUTED 4bfe4: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 4bfe8: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 4bfec: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4bff0: 23c0 0006 9a38 movel %d0,69a38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
_Thread_Disable_dispatch();
if ( oflag & O_CREAT ) {
4bff6: 2802 movel %d2,%d4 <== NOT EXECUTED 4bff8: 0284 0000 0200 andil #512,%d4 <== NOT EXECUTED 4bffe: 6600 00c4 bnew 4c0c4 <mq_open+0xec> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *
_POSIX_Message_queue_Allocate_fd( void )
{
return (POSIX_Message_queue_Control_fd *)
_Objects_Allocate( &_POSIX_Message_queue_Information_fds );
4c002: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
/* struct mq_attr attr */
)
{
va_list arg;
mode_t mode;
struct mq_attr *attr = NULL;
4c008: 4286 clrl %d6 <== NOT EXECUTED 4c00a: 4eb9 0004 f1f0 jsr 4f1f0 <_Objects_Allocate> <== NOT EXECUTED
attr = (struct mq_attr *) va_arg( arg, struct mq_attr * );
va_end(arg);
}
the_mq_fd = _POSIX_Message_queue_Allocate_fd();
if ( !the_mq_fd ) {
4c010: 588f addql #4,%sp <== NOT EXECUTED 4c012: 2440 moveal %d0,%a2 <== NOT EXECUTED 4c014: 4a80 tstl %d0 <== NOT EXECUTED 4c016: 6700 00c6 beqw 4c0de <mq_open+0x106> <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENFILE );
}
the_mq_fd->oflag = oflag;
4c01a: 2542 0014 movel %d2,%a2@(20) <== NOT EXECUTED
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
4c01e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c022: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c024: 4eb9 0005 334c jsr 5334c <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED
* If the name to id translation worked, then the message queue exists
* and we can just return a pointer to the id. Otherwise we may
* need to check to see if this is a "message queue does not exist"
* or some other miscellaneous error on the name.
*/
if ( status ) {
4c02a: 508f addql #8,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENFILE );
}
the_mq_fd->oflag = oflag;
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
4c02c: 2600 movel %d0,%d3 <== NOT EXECUTED
* If the name to id translation worked, then the message queue exists
* and we can just return a pointer to the id. Otherwise we may
* need to check to see if this is a "message queue does not exist"
* or some other miscellaneous error on the name.
*/
if ( status ) {
4c02e: 6662 bnes 4c092 <mq_open+0xba> <== NOT EXECUTED
} else { /* name -> ID translation succeeded */
/*
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
4c030: 0282 0000 0a00 andil #2560,%d2 <== NOT EXECUTED 4c036: 0c82 0000 0a00 cmpil #2560,%d2 <== NOT EXECUTED 4c03c: 6700 010c beqw 4c14a <mq_open+0x172> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control *)
_Objects_Get( &_POSIX_Message_queue_Information, id, location );
4c040: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
_Objects_Open_string(
&_POSIX_Message_queue_Information_fds,
&the_mq_fd->Object,
NULL
);
_Thread_Enable_dispatch();
4c044: 47f9 0004 ffc6 lea 4ffc6 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4c04a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c04e: 4879 0006 9ce8 pea 69ce8 <_POSIX_Message_queue_Information><== NOT EXECUTED 4c054: 4eb9 0004 f6b0 jsr 4f6b0 <_Objects_Get> <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4c05a: 4281 clrl %d1 <== NOT EXECUTED
/*
* In this case we need to do an ID->pointer conversion to
* check the mode.
*/
the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );
the_mq->open_count += 1;
4c05c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c05e: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4c062: 2079 0006 9e6e moveal 69e6e <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4c068: 322a 000a movew %a2@(10),%d1 <== NOT EXECUTED
/*
* In this case we need to do an ID->pointer conversion to
* check the mode.
*/
the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );
4c06c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
the_mq->open_count += 1;
the_mq_fd->Queue = the_mq;
4c070: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4c074: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
4c078: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Objects_Open_string(
&_POSIX_Message_queue_Information_fds,
&the_mq_fd->Object,
NULL
);
_Thread_Enable_dispatch();
4c07c: 4e93 jsr %a3@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4c07e: 4e93 jsr %a3@ <== NOT EXECUTED
return (mqd_t)the_mq_fd->Object.id;
4c080: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 4c084: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c088: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c08e: 4e5e unlk %fp <== NOT EXECUTED 4c090: 4e75 rts <== NOT EXECUTED
if ( status ) {
/*
* Unless provided a valid name that did not already exist
* and we are willing to create then it is an error.
*/
if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {
4c092: 7002 moveq #2,%d0 <== NOT EXECUTED 4c094: b083 cmpl %d3,%d0 <== NOT EXECUTED 4c096: 6764 beqs 4c0fc <mq_open+0x124> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (
POSIX_Message_queue_Control_fd *the_mq_fd
)
{
_Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
4c098: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c09a: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c0a0: 4eb9 0004 f544 jsr 4f544 <_Objects_Free> <== NOT EXECUTED
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
4c0a6: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( status, mqd_t );
4c0ac: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c0b2: 508f addql #8,%sp <== NOT EXECUTED 4c0b4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c0b6: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c0b8: 2083 movel %d3,%a0@ <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c0ba: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c0c0: 4e5e unlk %fp <== NOT EXECUTED 4c0c2: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *
_POSIX_Message_queue_Allocate_fd( void )
{
return (POSIX_Message_queue_Control_fd *)
_Objects_Allocate( &_POSIX_Message_queue_Information_fds );
4c0c4: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
_Thread_Disable_dispatch();
if ( oflag & O_CREAT ) {
va_start(arg, oflag);
mode = (mode_t) va_arg( arg, unsigned int );
attr = (struct mq_attr *) va_arg( arg, struct mq_attr * );
4c0ca: 2c2e 0014 movel %fp@(20),%d6 <== NOT EXECUTED 4c0ce: 4eb9 0004 f1f0 jsr 4f1f0 <_Objects_Allocate> <== NOT EXECUTED
va_end(arg);
}
the_mq_fd = _POSIX_Message_queue_Allocate_fd();
if ( !the_mq_fd ) {
4c0d4: 588f addql #4,%sp <== NOT EXECUTED 4c0d6: 2440 moveal %d0,%a2 <== NOT EXECUTED 4c0d8: 4a80 tstl %d0 <== NOT EXECUTED 4c0da: 6600 ff3e bnew 4c01a <mq_open+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
4c0de: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
4c0e4: 7417 moveq #23,%d2 <== NOT EXECUTED 4c0e6: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c0ec: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c0ee: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c0f0: 2082 movel %d2,%a0@ <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c0f2: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c0f8: 4e5e unlk %fp <== NOT EXECUTED 4c0fa: 4e75 rts <== NOT EXECUTED
if ( status ) {
/*
* Unless provided a valid name that did not already exist
* and we are willing to create then it is an error.
*/
if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {
4c0fc: 4a84 tstl %d4 <== NOT EXECUTED 4c0fe: 6798 beqs 4c098 <mq_open+0xc0> <== NOT EXECUTED
/*
* At this point, the message queue does not exist and everything has been
* checked. We should go ahead and create a message queue.
*/
status = _POSIX_Message_queue_Create_support(
4c100: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c104: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4c106: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4c10a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c10c: 4eb9 0005 31cc jsr 531cc <_POSIX_Message_queue_Create_support><== NOT EXECUTED
);
/*
* errno was set by Create_support, so don't set it again.
*/
if ( status == -1 ) {
4c112: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c116: 72ff moveq #-1,%d1 <== NOT EXECUTED 4c118: b280 cmpl %d0,%d1 <== NOT EXECUTED 4c11a: 675c beqs 4c178 <mq_open+0x1a0> <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4c11c: 4280 clrl %d0 <== NOT EXECUTED
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
return (mqd_t) -1;
}
the_mq_fd->Queue = the_mq;
4c11e: 256e fff8 0010 movel %fp@(-8),%a2@(16) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4c124: 2079 0006 9e6e moveal 69e6e <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4c12a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4c12e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
4c132: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
&_POSIX_Message_queue_Information_fds,
&the_mq_fd->Object,
NULL
);
_Thread_Enable_dispatch();
4c136: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return (mqd_t) the_mq_fd->Object.id;
4c13c: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
}
4c140: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c146: 4e5e unlk %fp <== NOT EXECUTED 4c148: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (
POSIX_Message_queue_Control_fd *the_mq_fd
)
{
_Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
4c14a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c14c: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c152: 4eb9 0004 f544 jsr 4f544 <_Objects_Free> <== NOT EXECUTED
/*
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
4c158: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );
4c15e: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED 4c164: 508f addql #8,%sp <== NOT EXECUTED 4c166: 7211 moveq #17,%d1 <== NOT EXECUTED 4c168: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c16a: 70ff moveq #-1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c16c: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );
4c172: 2081 movel %d1,%a0@ <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c174: 4e5e unlk %fp <== NOT EXECUTED 4c176: 4e75 rts <== NOT EXECUTED 4c178: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c17a: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c180: 4eb9 0004 f544 jsr 4f544 <_Objects_Free> <== NOT EXECUTED
/*
* errno was set by Create_support, so don't set it again.
*/
if ( status == -1 ) {
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
4c186: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return (mqd_t) -1;
4c18c: 508f addql #8,%sp <== NOT EXECUTED 4c18e: 70ff moveq #-1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c190: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4c196: 4e5e unlk %fp <== NOT EXECUTED
...
0004c19c <mq_receive>:
mqd_t mqdes,
char *msg_ptr,
size_t msg_len,
unsigned int *msg_prio
)
{
4c19c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Message_queue_Receive_support(
4c1a0: 42a7 clrl %sp@- <== NOT EXECUTED 4c1a2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4c1a6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4c1aa: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c1ae: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c1b2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c1b6: 4eb9 0004 c1c0 jsr 4c1c0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED
msg_len,
msg_prio,
true,
THREAD_QUEUE_WAIT_FOREVER
);
}
4c1bc: 4e5e unlk %fp <== NOT EXECUTED
0004c328 <mq_send>:
mqd_t mqdes,
const char *msg_ptr,
size_t msg_len,
unsigned int msg_prio
)
{
4c328: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Message_queue_Send_support(
4c32c: 42a7 clrl %sp@- <== NOT EXECUTED 4c32e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4c332: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4c336: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c33a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c33e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c342: 4eb9 0004 c34c jsr 4c34c <_POSIX_Message_queue_Send_support><== NOT EXECUTED
msg_len,
msg_prio,
true,
THREAD_QUEUE_WAIT_FOREVER
);
}
4c348: 4e5e unlk %fp <== NOT EXECUTED
0004c4a4 <mq_setattr>:
int mq_setattr(
mqd_t mqdes,
const struct mq_attr *mqstat,
struct mq_attr *omqstat
)
{
4c4a4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4c4a8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c4aa: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 4c4ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c4b0: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
CORE_message_queue_Control *the_core_mq;
Objects_Locations location;
if ( !mqstat )
4c4b4: 4a8b tstl %a3 <== NOT EXECUTED 4c4b6: 6770 beqs 4c528 <mq_setattr+0x84> <== NOT EXECUTED 4c4b8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c4bc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c4c0: 4879 0006 9e56 pea 69e56 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c4c6: 4eb9 0004 f6b0 jsr 4f6b0 <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
4c4cc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c4d0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c4d2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4c4d6: 6636 bnes 4c50e <mq_setattr+0x6a> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_core_mq = &the_mq_fd->Queue->Message_queue;
4c4d8: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
/*
* Return the old values.
*/
if ( omqstat ) {
4c4dc: 4a8a tstl %a2 <== NOT EXECUTED 4c4de: 6716 beqs 4c4f6 <mq_setattr+0x52> <== NOT EXECUTED
omqstat->mq_flags = the_mq_fd->oflag;
4c4e0: 24a8 0014 movel %a0@(20),%a2@ <== NOT EXECUTED
omqstat->mq_msgsize = the_core_mq->maximum_message_size;
4c4e4: 2569 0066 0008 movel %a1@(102),%a2@(8) <== NOT EXECUTED
omqstat->mq_maxmsg = the_core_mq->maximum_pending_messages;
4c4ea: 2569 005e 0004 movel %a1@(94),%a2@(4) <== NOT EXECUTED
omqstat->mq_curmsgs = the_core_mq->number_of_pending_messages;
4c4f0: 2569 0062 000c movel %a1@(98),%a2@(12) <== NOT EXECUTED
}
the_mq_fd->oflag = mqstat->mq_flags;
4c4f6: 2153 0014 movel %a3@,%a0@(20) <== NOT EXECUTED
_Thread_Enable_dispatch();
4c4fa: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c500: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
omqstat->mq_curmsgs = the_core_mq->number_of_pending_messages;
}
the_mq_fd->oflag = mqstat->mq_flags;
_Thread_Enable_dispatch();
return 0;
4c504: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c506: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4c50a: 4e5e unlk %fp <== NOT EXECUTED 4c50c: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c50e: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED
}
4c514: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c518: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c51a: 7209 moveq #9,%d1 <== NOT EXECUTED 4c51c: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4c51e: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4c522: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c524: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4c526: 4e75 rts <== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
CORE_message_queue_Control *the_core_mq;
Objects_Locations location;
if ( !mqstat )
rtems_set_errno_and_return_minus_one( EINVAL );
4c528: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c52e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
CORE_message_queue_Control *the_core_mq;
Objects_Locations location;
if ( !mqstat )
rtems_set_errno_and_return_minus_one( EINVAL );
4c532: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c534: 7216 moveq #22,%d1 <== NOT EXECUTED 4c536: 70ff moveq #-1,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c538: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4c53c: 4e5e unlk %fp <== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
CORE_message_queue_Control *the_core_mq;
Objects_Locations location;
if ( !mqstat )
rtems_set_errno_and_return_minus_one( EINVAL );
4c53e: 2081 movel %d1,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
...
0004c544 <mq_timedreceive>:
char *msg_ptr,
size_t msg_len,
unsigned int *msg_prio,
const struct timespec *abstime
)
{
4c544: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
* * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
4c548: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c54c: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4c550: 4eb9 0004 c660 jsr 4c660 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
return _POSIX_Message_queue_Receive_support(
4c556: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c55a: 7203 moveq #3,%d1 <== NOT EXECUTED 4c55c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4c55e: 57c0 seq %d0 <== NOT EXECUTED 4c560: 49c0 extbl %d0 <== NOT EXECUTED 4c562: 4480 negl %d0 <== NOT EXECUTED 4c564: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c566: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4c56a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c56e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c572: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c576: 4eb9 0004 c1c0 jsr 4c1c0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED
msg_len,
msg_prio,
do_wait,
ticks
);
}
4c57c: 4e5e unlk %fp <== NOT EXECUTED
0004c580 <mq_timedsend>:
const char *msg_ptr,
size_t msg_len,
unsigned int msg_prio,
const struct timespec *abstime
)
{
4c580: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
* * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
4c584: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c588: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4c58c: 4eb9 0004 c660 jsr 4c660 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
return _POSIX_Message_queue_Send_support(
4c592: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c596: 7203 moveq #3,%d1 <== NOT EXECUTED 4c598: b280 cmpl %d0,%d1 <== NOT EXECUTED 4c59a: 57c0 seq %d0 <== NOT EXECUTED 4c59c: 49c0 extbl %d0 <== NOT EXECUTED 4c59e: 4480 negl %d0 <== NOT EXECUTED 4c5a0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c5a2: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4c5a6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c5aa: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c5ae: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c5b2: 4eb9 0004 c34c jsr 4c34c <_POSIX_Message_queue_Send_support><== NOT EXECUTED
msg_len,
msg_prio,
do_wait,
ticks
);
}
4c5b8: 4e5e unlk %fp <== NOT EXECUTED
0004c5d4 <mq_unlink>:
*/
int mq_unlink(
const char *name
)
{
4c5d4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4c5d8: 2039 0006 9a38 movel 69a38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4c5de: 5280 addql #1,%d0 <== NOT EXECUTED 4c5e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c5e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c5e4: 23c0 0006 9a38 movel %d0,69a38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
register POSIX_Message_queue_Control *the_mq;
Objects_Id the_mq_id;
_Thread_Disable_dispatch();
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
4c5ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4c5ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c5f2: 4eb9 0005 334c jsr 5334c <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED
if ( status != 0 ) {
4c5f8: 508f addql #8,%sp <== NOT EXECUTED
register POSIX_Message_queue_Control *the_mq;
Objects_Id the_mq_id;
_Thread_Disable_dispatch();
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
4c5fa: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( status != 0 ) {
4c5fc: 6644 bnes 4c642 <mq_unlink+0x6e> <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
4c5fe: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( status );
}
the_mq = (POSIX_Message_queue_Control *) _Objects_Get_local_object(
4c600: 2079 0006 9d00 moveal 69d00 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED 4c606: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED 4c60a: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED
&_POSIX_Message_queue_Information,
_Objects_Get_index( the_mq_id )
);
the_mq->linked = false;
4c60e: 4200 clrb %d0 <== NOT EXECUTED 4c610: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Namespace_remove (
POSIX_Message_queue_Control *the_mq
)
{
_Objects_Namespace_remove(
4c614: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c616: 4879 0006 9ce8 pea 69ce8 <_POSIX_Message_queue_Information><== NOT EXECUTED 4c61c: 4eb9 0004 f830 jsr 4f830 <_Objects_Namespace_remove> <== NOT EXECUTED
_POSIX_Message_queue_Namespace_remove( the_mq ); _POSIX_Message_queue_Delete( the_mq );
4c622: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c624: 4eb9 0004 be08 jsr 4be08 <_POSIX_Message_queue_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
4c62a: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
4c630: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
the_mq->linked = false;
_POSIX_Message_queue_Namespace_remove( the_mq );
_POSIX_Message_queue_Delete( the_mq );
_Thread_Enable_dispatch();
return 0;
4c634: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c638: 4280 clrl %d0 <== NOT EXECUTED
}
4c63a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4c63e: 4e5e unlk %fp <== NOT EXECUTED 4c640: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
if ( status != 0 ) {
_Thread_Enable_dispatch();
4c642: 4eb9 0004 ffc6 jsr 4ffc6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( status );
4c648: 4eb9 0005 69f8 jsr 569f8 <__errno> <== NOT EXECUTED
_POSIX_Message_queue_Namespace_remove( the_mq );
_POSIX_Message_queue_Delete( the_mq );
_Thread_Enable_dispatch();
return 0;
}
4c64e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Thread_Disable_dispatch();
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
if ( status != 0 ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( status );
4c652: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c654: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c656: 2082 movel %d2,%a0@ <== NOT EXECUTED
_POSIX_Message_queue_Namespace_remove( the_mq );
_POSIX_Message_queue_Delete( the_mq );
_Thread_Enable_dispatch();
return 0;
}
4c658: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4c65c: 4e5e unlk %fp <== NOT EXECUTED
0005cb40 <nanosleep>:
int nanosleep(
const struct timespec *rqtp,
struct timespec *rmtp
)
{
5cb40: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5cb44: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5cb46: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 5cb4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cb4c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
* Return EINVAL if the delay interval is negative. * * NOTE: This behavior is beyond the POSIX specification. * FSU and GNU/Linux pthreads shares this behavior. */ if ( !_Timespec_Is_valid( rqtp ) )
5cb50: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cb52: 4eb9 0005 cca4 jsr 5cca4 <_Timespec_Is_valid> <== NOT EXECUTED 5cb58: 588f addql #4,%sp <== NOT EXECUTED 5cb5a: 4a00 tstb %d0 <== NOT EXECUTED 5cb5c: 6700 00ee beqw 5cc4c <nanosleep+0x10c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
ticks = _Timespec_To_ticks( rqtp );
5cb60: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cb62: 4eb9 0004 d1f4 jsr 4d1f4 <_Timespec_To_ticks> <== NOT EXECUTED
* A nanosleep for zero time is implemented as a yield.
* This behavior is also beyond the POSIX specification but is
* consistent with the RTEMS API and yields desirable behavior.
*/
if ( !ticks ) {
5cb68: 588f addql #4,%sp <== NOT EXECUTED
* FSU and GNU/Linux pthreads shares this behavior.
*/
if ( !_Timespec_Is_valid( rqtp ) )
rtems_set_errno_and_return_minus_one( EINVAL );
ticks = _Timespec_To_ticks( rqtp );
5cb6a: 2400 movel %d0,%d2 <== NOT EXECUTED
* A nanosleep for zero time is implemented as a yield.
* This behavior is also beyond the POSIX specification but is
* consistent with the RTEMS API and yields desirable behavior.
*/
if ( !ticks ) {
5cb6c: 6634 bnes 5cba2 <nanosleep+0x62> <== NOT EXECUTED 5cb6e: 2039 0006 0c04 movel 60c04 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5cb74: 5280 addql #1,%d0 <== NOT EXECUTED 5cb76: 23c0 0006 0c04 movel %d0,60c04 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Yield_processor();
5cb7c: 4eb9 0004 9920 jsr 49920 <_Thread_Yield_processor> <== NOT EXECUTED
_Thread_Enable_dispatch();
5cb82: 4eb9 0004 8af2 jsr 48af2 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( rmtp ) {
5cb88: 4a8a tstl %a2 <== NOT EXECUTED 5cb8a: 6700 0098 beqw 5cc24 <nanosleep+0xe4> <== NOT EXECUTED
rmtp->tv_sec = 0;
5cb8e: 4292 clrl %a2@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cb90: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( rmtp ) {
rmtp->tv_sec = 0;
rmtp->tv_nsec = 0;
}
return 0;
5cb94: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Yield_processor();
_Thread_Enable_dispatch();
if ( rmtp ) {
rmtp->tv_sec = 0;
rmtp->tv_nsec = 0;
5cb96: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cb9a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cb9e: 4e5e unlk %fp <== NOT EXECUTED 5cba0: 4e75 rts <== NOT EXECUTED 5cba2: 2039 0006 0c04 movel 60c04 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5cba8: 5280 addql #1,%d0 <== NOT EXECUTED 5cbaa: 23c0 0006 0c04 movel %d0,60c04 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Block for the desired amount of time
*/
_Thread_Disable_dispatch();
_Thread_Set_state(
5cbb0: 2f3c 1000 0008 movel #268435464,%sp@- <== NOT EXECUTED 5cbb6: 2f39 0006 1094 movel 61094 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 5cbbc: 4eb9 0004 94b4 jsr 494b4 <_Thread_Set_state> <== NOT EXECUTED
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
5cbc2: 2079 0006 1094 moveal 61094 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
5cbc8: 203c 0004 894c movel #297292,%d0 <== NOT EXECUTED 5cbce: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Set_state(
_Thread_Executing,
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Watchdog_Initialize(
5cbd2: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
5cbd6: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id;
5cbda: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
5cbde: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
5cbe2: 2142 0054 movel %d2,%a0@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
5cbe6: 4868 0048 pea %a0@(72) <== NOT EXECUTED 5cbea: 4879 0006 0cc6 pea 60cc6 <_Watchdog_Ticks_chain> <== NOT EXECUTED 5cbf0: 4eb9 0004 9d8c jsr 49d8c <_Watchdog_Insert> <== NOT EXECUTED
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
_Thread_Enable_dispatch();
5cbf6: 4eb9 0004 8af2 jsr 48af2 <_Thread_Enable_dispatch> <== NOT EXECUTED
/* calculate time remaining */
if ( rmtp ) {
5cbfc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5cc00: 4a8a tstl %a2 <== NOT EXECUTED 5cc02: 6720 beqs 5cc24 <nanosleep+0xe4> <== NOT EXECUTED
ticks -=
_Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time;
5cc04: 2079 0006 1094 moveal 61094 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 5cc0a: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED 5cc0e: 90a8 0060 subl %a0@(96),%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
/* calculate time remaining */
if ( rmtp ) {
ticks -=
5cc12: d480 addl %d0,%d2 <== NOT EXECUTED
_Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time;
_Timespec_From_ticks( ticks, rmtp );
5cc14: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5cc16: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cc18: 4eb9 0005 cc68 jsr 5cc68 <_Timespec_From_ticks> <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
/*
* If there is time remaining, then we were interrupted by a signal.
*/
if ( ticks )
5cc1e: 508f addql #8,%sp <== NOT EXECUTED 5cc20: 4a82 tstl %d2 <== NOT EXECUTED 5cc22: 660e bnes 5cc32 <nanosleep+0xf2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cc24: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( ticks )
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
5cc28: 4280 clrl %d0 <== NOT EXECUTED
}
5cc2a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cc2e: 4e5e unlk %fp <== NOT EXECUTED 5cc30: 4e75 rts <== NOT EXECUTED
#if defined(RTEMS_POSIX_API)
/*
* If there is time remaining, then we were interrupted by a signal.
*/
if ( ticks )
rtems_set_errno_and_return_minus_one( EINTR );
5cc32: 4eb9 0004 edd0 jsr 4edd0 <__errno> <== NOT EXECUTED
#endif
}
return 0;
}
5cc38: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#if defined(RTEMS_POSIX_API)
/*
* If there is time remaining, then we were interrupted by a signal.
*/
if ( ticks )
rtems_set_errno_and_return_minus_one( EINTR );
5cc3c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5cc3e: 7204 moveq #4,%d1 <== NOT EXECUTED 5cc40: 70ff moveq #-1,%d0 <== NOT EXECUTED
#endif
}
return 0;
}
5cc42: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cc46: 4e5e unlk %fp <== NOT EXECUTED
#if defined(RTEMS_POSIX_API)
/*
* If there is time remaining, then we were interrupted by a signal.
*/
if ( ticks )
rtems_set_errno_and_return_minus_one( EINTR );
5cc48: 2081 movel %d1,%a0@ <== NOT EXECUTED
#endif
}
return 0;
}
5cc4a: 4e75 rts <== NOT EXECUTED
*
* NOTE: This behavior is beyond the POSIX specification.
* FSU and GNU/Linux pthreads shares this behavior.
*/
if ( !_Timespec_Is_valid( rqtp ) )
rtems_set_errno_and_return_minus_one( EINVAL );
5cc4c: 4eb9 0004 edd0 jsr 4edd0 <__errno> <== NOT EXECUTED 5cc52: 7416 moveq #22,%d2 <== NOT EXECUTED 5cc54: 2040 moveal %d0,%a0 <== NOT EXECUTED 5cc56: 70ff moveq #-1,%d0 <== NOT EXECUTED 5cc58: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cc5a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5cc5e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cc62: 4e5e unlk %fp <== NOT EXECUTED
...
00043680 <newlib_create_hook>:
*/
bool newlib_create_hook(
rtems_tcb *current_task __attribute__((unused)),
rtems_tcb *creating_task
)
{
43680: 4e56 0000 linkw %fp,#0 43684: 2f0a movel %a2,%sp@-
struct _reent *ptr;
if (_Thread_libc_reent == 0)
43686: 4ab9 0005 fd12 tstl 5fd12 <_Thread_libc_reent> 4368c: 6700 018e beqw 4381c <newlib_create_hook+0x19c>
ptr = (struct _reent *) calloc(1, sizeof(struct _reent));
#else
/* It is OK to allocate from the workspace because these
* hooks run with thread dispatching disabled.
*/
ptr = (struct _reent *) _Workspace_Allocate(sizeof(struct _reent));
43690: 4878 0422 pea 422 <DBL_MAX_EXP+0x21> 43694: 4eb9 0004 9bb6 jsr 49bb6 <_Workspace_Allocate>
#endif
if (ptr) {
4369a: 588f addql #4,%sp
ptr = (struct _reent *) calloc(1, sizeof(struct _reent));
#else
/* It is OK to allocate from the workspace because these
* hooks run with thread dispatching disabled.
*/
ptr = (struct _reent *) _Workspace_Allocate(sizeof(struct _reent));
4369c: 2440 moveal %d0,%a2
#endif
if (ptr) {
4369e: 4a80 tstl %d0 436a0: 6700 0170 beqw 43812 <newlib_create_hook+0x192>
_REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
436a4: 42aa 0078 clrl %a2@(120) 436a8: 41ea 007c lea %a2@(124),%a0 436ac: 4298 clrl %a0@+ 436ae: 43ea 02ea lea %a2@(746),%a1 436b2: 4298 clrl %a0@+ 436b4: 203c 0005 d3e4 movel #381924,%d0 436ba: 4298 clrl %a0@+ 436bc: 4201 clrb %d1 436be: 4298 clrl %a0@+ 436c0: 1541 002c moveb %d1,%a2@(44) 436c4: 4298 clrl %a0@+ 436c6: 1541 005e moveb %d1,%a2@(94) 436ca: 2549 0004 movel %a1,%a2@(4) 436ce: 43ea 0352 lea %a2@(850),%a1 436d2: 4298 clrl %a0@+ 436d4: 2549 0008 movel %a1,%a2@(8) 436d8: 43ea 03ba lea %a2@(954),%a1 436dc: 2540 0032 movel %d0,%a2@(50) 436e0: 4280 clrl %d0 436e2: 7201 moveq #1,%d1 436e4: 2549 000c movel %a1,%a2@(12) 436e8: 327c 1234 moveaw #4660,%a1 436ec: 4298 clrl %a0@+ 436ee: 4292 clrl %a2@ 436f0: 42aa 0010 clrl %a2@(16) 436f4: 42aa 0014 clrl %a2@(20) 436f8: 42aa 0018 clrl %a2@(24) 436fc: 42aa 001c clrl %a2@(28) 43700: 42aa 0020 clrl %a2@(32) 43704: 42aa 0024 clrl %a2@(36) 43708: 42aa 0028 clrl %a2@(40) 4370c: 42aa 002e clrl %a2@(46) 43710: 42aa 0036 clrl %a2@(54) 43714: 42aa 003a clrl %a2@(58) 43718: 42aa 003e clrl %a2@(62) 4371c: 42aa 0042 clrl %a2@(66) 43720: 42aa 0046 clrl %a2@(70) 43724: 42aa 004a clrl %a2@(74) 43728: 42aa 004e clrl %a2@(78) 4372c: 42aa 0052 clrl %a2@(82) 43730: 42aa 0056 clrl %a2@(86) 43734: 42aa 005a clrl %a2@(90) 43738: 4290 clrl %a0@ 4373a: 2540 00a0 movel %d0,%a2@(160) 4373e: 2541 00a4 movel %d1,%a2@(164) 43742: 323c 330e movew #13070,%d1 43746: 303c e66d movew #-6547,%d0 4374a: 307c abcd moveaw #-21555,%a0 4374e: 42aa 009c clrl %a2@(156) 43752: 3541 00a8 movew %d1,%a2@(168) 43756: 3540 00ae movew %d0,%a2@(174) 4375a: 42aa 00b6 clrl %a2@(182) 4375e: 323c deec movew #-8468,%d1 43762: 7005 moveq #5,%d0 43764: 42aa 00ba clrl %a2@(186) 43768: 3541 00b0 movew %d1,%a2@(176) 4376c: 3540 00b2 movew %d0,%a2@(178) 43770: 42aa 00be clrl %a2@(190) 43774: 4200 clrb %d0 43776: 720b moveq #11,%d1 43778: 42aa 00c2 clrl %a2@(194) 4377c: 42aa 00c6 clrl %a2@(198) 43780: 3548 00aa movew %a0,%a2@(170) 43784: 42aa 00ca clrl %a2@(202) 43788: 3549 00ac movew %a1,%a2@(172) 4378c: 42aa 00f2 clrl %a2@(242) 43790: 42aa 00f6 clrl %a2@(246) 43794: 3541 00b4 movew %d1,%a2@(180) 43798: 42aa 00fa clrl %a2@(250) 4379c: 1540 00ce moveb %d0,%a2@(206) 437a0: 42aa 00fe clrl %a2@(254) 437a4: 42aa 0102 clrl %a2@(258) 437a8: 1540 00d6 moveb %d0,%a2@(214) 437ac: 42aa 0106 clrl %a2@(262) 437b0: 42aa 010a clrl %a2@(266) 437b4: 42aa 010e clrl %a2@(270) 437b8: 42aa 0112 clrl %a2@(274) 437bc: 42aa 0116 clrl %a2@(278) 437c0: 42aa 00ee clrl %a2@(238) 437c4: 42aa 0146 clrl %a2@(326) 437c8: 42aa 014a clrl %a2@(330) 437cc: 42aa 014e clrl %a2@(334) 437d0: 42aa 0152 clrl %a2@(338) 437d4: 42aa 02d2 clrl %a2@(722) 437d8: 42aa 01d2 clrl %a2@(466) 437dc: 42aa 02da clrl %a2@(730) 437e0: 42aa 02de clrl %a2@(734) 437e4: 42aa 02e2 clrl %a2@(738) 437e8: 42aa 02e6 clrl %a2@(742) 437ec: 4878 0138 pea 138 <DBL_MANT_DIG+0x103> 437f0: 42a7 clrl %sp@- 437f2: 486a 02ea pea %a2@(746) 437f6: 4eb9 0004 f228 jsr 4f228 <memset>
creating_task->libc_reent = ptr;
437fc: 206e 000c moveal %fp@(12),%a0
return TRUE;
43800: 4fef 000c lea %sp@(12),%sp
ptr = (struct _reent *) _Workspace_Allocate(sizeof(struct _reent));
#endif
if (ptr) {
_REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
creating_task->libc_reent = ptr;
43804: 214a 0106 movel %a2,%a0@(262)
return TRUE;
}
return FALSE;
}
43808: 246e fffc moveal %fp@(-4),%a2 4380c: 4e5e unlk %fp
#endif
if (ptr) {
_REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
creating_task->libc_reent = ptr;
return TRUE;
4380e: 7001 moveq #1,%d0
}
return FALSE;
}
43810: 4e75 rts
43812: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 43816: 4e5e unlk %fp <== NOT EXECUTED
_REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
creating_task->libc_reent = ptr;
return TRUE;
}
return FALSE;
43818: 4200 clrb %d0 <== NOT EXECUTED
}
4381a: 4e75 rts <== NOT EXECUTED
{
struct _reent *ptr;
if (_Thread_libc_reent == 0)
{
_REENT = _global_impure_ptr;
4381c: 41f9 0005 db2e lea 5db2e <_global_impure_ptr>,%a0
RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent (
struct _reent **libc_reent
)
{
_Thread_libc_reent = libc_reent;
43822: 43f9 0005 e610 lea 5e610 <_impure_ptr>,%a1 43828: 23d0 0005 e610 movel %a0@,5e610 <_impure_ptr> 4382e: 23c9 0005 fd12 movel %a1,5fd12 <_Thread_libc_reent> 43834: 6000 fe5a braw 43690 <newlib_create_hook+0x10>
00043838 <newlib_delete_hook>:
void newlib_delete_hook(
rtems_tcb *current_task,
rtems_tcb *deleted_task
)
{
43838: 4e56 fff4 linkw %fp,#-12 4383c: 48d7 040c moveml %d2-%d3/%a2,%sp@ 43840: 262e 0008 movel %fp@(8),%d3 43844: 246e 000c moveal %fp@(12),%a2
/*
* The reentrancy structure was allocated by newlib using malloc()
*/
if (current_task == deleted_task) {
43848: b5c3 cmpal %d3,%a2
4384a: 674c beqs 43898 <newlib_delete_hook+0x60> <== ALWAYS TAKEN
ptr = _REENT;
} else {
ptr = deleted_task->libc_reent;
4384c: 242a 0106 movel %a2@(262),%d2 <== NOT EXECUTED
}
if (ptr && ptr != _global_impure_ptr) {
43850: 4a82 tstl %d2
43852: 6722 beqs 43876 <newlib_delete_hook+0x3e> <== NEVER TAKEN
43854: b4b9 0005 db2e cmpl 5db2e <_global_impure_ptr>,%d2
4385a: 671a beqs 43876 <newlib_delete_hook+0x3e>
_reclaim_reent(ptr);
*/
/*
* Just in case there are some buffers lying around.
*/
_fwalk(ptr, newlib_free_buffers);
4385c: 4879 0004 3620 pea 43620 <newlib_free_buffers> 43862: 2f02 movel %d2,%sp@- 43864: 4eb9 0004 f0c0 jsr 4f0c0 <_fwalk>
#if REENT_MALLOCED
free(ptr);
#else
_Workspace_Free(ptr);
4386a: 2f02 movel %d2,%sp@- 4386c: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Free> 43872: 4fef 000c lea %sp@(12),%sp
#endif
}
deleted_task->libc_reent = NULL;
43876: 42aa 0106 clrl %a2@(262)
/*
* Require the switch back to another task to install its own
*/
if ( current_task == deleted_task ) {
4387a: b5c3 cmpal %d3,%a2
4387c: 670a beqs 43888 <newlib_delete_hook+0x50> <== ALWAYS TAKEN
_REENT = 0;
}
}
4387e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 43884: 4e5e unlk %fp <== NOT EXECUTED 43886: 4e75 rts <== NOT EXECUTED
/*
* Require the switch back to another task to install its own
*/
if ( current_task == deleted_task ) {
_REENT = 0;
43888: 42b9 0005 e610 clrl 5e610 <_impure_ptr>
} }
4388e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 43894: 4e5e unlk %fp 43896: 4e75 rts
/*
* The reentrancy structure was allocated by newlib using malloc()
*/
if (current_task == deleted_task) {
ptr = _REENT;
43898: 2439 0005 e610 movel 5e610 <_impure_ptr>,%d2 4389e: 60b0 bras 43850 <newlib_delete_hook+0x18>
00043620 <newlib_free_buffers>:
*/
int newlib_free_buffers(
FILE *fp
)
{
43620: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43624: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43626: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
switch ( fileno(fp) ) {
4362a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4362c: 4eb9 0004 ecac jsr 4ecac <fileno> <== NOT EXECUTED 43632: 588f addql #4,%sp <== NOT EXECUTED 43634: 7202 moveq #2,%d1 <== NOT EXECUTED 43636: b280 cmpl %d0,%d1 <== NOT EXECUTED 43638: 6414 bccs 4364e <newlib_free_buffers+0x2e> <== NOT EXECUTED
fp->_flags &= ~__SMBF;
fp->_bf._base = fp->_p = (unsigned char *) NULL;
}
break;
default:
fclose(fp);
4363a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4363c: 4eb9 0004 ea5a jsr 4ea5a <fclose> <== NOT EXECUTED 43642: 588f addql #4,%sp <== NOT EXECUTED
} return 0; }
43644: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 43648: 4280 clrl %d0 <== NOT EXECUTED 4364a: 4e5e unlk %fp <== NOT EXECUTED 4364c: 4e75 rts <== NOT EXECUTED
{
switch ( fileno(fp) ) {
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
4364e: 302a 000c movew %a2@(12),%d0 <== NOT EXECUTED 43652: 48c0 extl %d0 <== NOT EXECUTED 43654: 4a00 tstb %d0 <== NOT EXECUTED 43656: 6cec bges 43644 <newlib_free_buffers+0x24> <== NOT EXECUTED
free( fp->_bf._base );
43658: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4365c: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
fp->_flags &= ~__SMBF;
fp->_bf._base = fp->_p = (unsigned char *) NULL;
43662: 588f addql #4,%sp <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
43664: 302a 000c movew %a2@(12),%d0 <== NOT EXECUTED
fp->_bf._base = fp->_p = (unsigned char *) NULL;
43668: 4292 clrl %a2@ <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
4366a: 0880 0007 bclr #7,%d0 <== NOT EXECUTED
fp->_bf._base = fp->_p = (unsigned char *) NULL;
4366e: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
43672: 3540 000c movew %d0,%a2@(12) <== NOT EXECUTED
break;
default:
fclose(fp);
}
return 0;
}
43676: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4367a: 4280 clrl %d0 <== NOT EXECUTED 4367c: 4e5e unlk %fp <== NOT EXECUTED
0004278a <null_close>:
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
return NULL_SUCCESSFUL;
}
4278a: 4280 clrl %d0 <== NOT EXECUTED
rtems_device_driver null_close(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
4278c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return NULL_SUCCESSFUL; }
42790: 4e5e unlk %fp <== NOT EXECUTED
000427b6 <null_control>:
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
return NULL_SUCCESSFUL;
}
427b6: 4280 clrl %d0 <== NOT EXECUTED
rtems_device_driver null_control(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
427b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return NULL_SUCCESSFUL; }
427bc: 4e5e unlk %fp <== NOT EXECUTED
0004272c <null_initialize>:
rtems_device_driver null_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
4272c: 4e56 0000 linkw %fp,#0 42730: 2f02 movel %d2,%sp@- 42732: 242e 0008 movel %fp@(8),%d2
rtems_device_driver status;
if ( !initialized ) {
42736: 4a39 0005 cbd8 tstb 5cbd8 <initialized>
4273c: 670a beqs 42748 <null_initialize+0x1c> <== ALWAYS TAKEN
NULL_major = major;
}
return RTEMS_SUCCESSFUL;
}
4273e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 42742: 4280 clrl %d0 <== NOT EXECUTED 42744: 4e5e unlk %fp <== NOT EXECUTED 42746: 4e75 rts <== NOT EXECUTED
rtems_device_driver status;
if ( !initialized ) {
initialized = 1;
status = rtems_io_register_name(
42748: 42a7 clrl %sp@-
)
{
rtems_device_driver status;
if ( !initialized ) {
initialized = 1;
4274a: 7001 moveq #1,%d0
status = rtems_io_register_name(
4274c: 2f02 movel %d2,%sp@- 4274e: 4879 0005 a50e pea 5a50e <_rodata_start+0x21e>
)
{
rtems_device_driver status;
if ( !initialized ) {
initialized = 1;
42754: 13c0 0005 cbd8 moveb %d0,5cbd8 <initialized>
status = rtems_io_register_name(
4275a: 4eb9 0004 28f4 jsr 428f4 <rtems_io_register_name>
"/dev/null",
major,
(rtems_device_minor_number) 0
);
if (status != RTEMS_SUCCESSFUL)
42760: 4fef 000c lea %sp@(12),%sp 42764: 4a80 tstl %d0
42766: 6610 bnes 42778 <null_initialize+0x4c>
rtems_fatal_error_occurred(status);
NULL_major = major;
42768: 23c2 0005 d3d0 movel %d2,5d3d0 <NULL_major>
}
return RTEMS_SUCCESSFUL;
}
4276e: 242e fffc movel %fp@(-4),%d2 42772: 4280 clrl %d0 42774: 4e5e unlk %fp 42776: 4e75 rts
major,
(rtems_device_minor_number) 0
);
if (status != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred(status);
42778: 2f00 movel %d0,%sp@- 4277a: 4eb9 0004 6c5c jsr 46c5c <rtems_fatal_error_occurred>
00042780 <null_open>:
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
return NULL_SUCCESSFUL;
}
42780: 4280 clrl %d0 <== NOT EXECUTED
rtems_device_driver null_open(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
42782: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return NULL_SUCCESSFUL; }
42786: 4e5e unlk %fp <== NOT EXECUTED
00042794 <null_read>:
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
return NULL_SUCCESSFUL;
}
42794: 4280 clrl %d0 <== NOT EXECUTED
rtems_device_driver null_read(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
42796: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return NULL_SUCCESSFUL; }
4279a: 4e5e unlk %fp <== NOT EXECUTED
0004279e <null_write>:
rtems_device_driver null_write(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void *pargp
)
{
4279e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 427a2: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) pargp;
if ( rw_args )
427a6: 4a88 tstl %a0 <== NOT EXECUTED 427a8: 6706 beqs 427b0 <null_write+0x12> <== NOT EXECUTED
rw_args->bytes_moved = rw_args->count;
427aa: 2168 0010 0018 movel %a0@(16),%a0@(24) <== NOT EXECUTED
return NULL_SUCCESSFUL;
}
427b0: 4280 clrl %d0 <== NOT EXECUTED 427b2: 4e5e unlk %fp <== NOT EXECUTED
00043914 <open>:
int open(
const char *pathname,
int flags,
...
)
{
43914: 4e56 ffcc linkw %fp,#-52 43918: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ 4391c: 242e 000c movel %fp@(12),%d2
/*
* Set the Evaluation flags
*/
eval_flags = 0;
status = flags + 1;
43920: 2002 movel %d2,%d0 43922: 5280 addql #1,%d0
int open(
const char *pathname,
int flags,
...
)
{
43924: 262e 0008 movel %fp@(8),%d3
/* * Set the Evaluation flags */ eval_flags = 0; status = flags + 1; if ( ( status & _FREAD ) == _FREAD )
43928: 0800 0000 btst #0,%d0 4392c: 6700 00cc beqw 439fa <open+0xe6>
eval_flags |= RTEMS_LIBIO_PERMS_READ;
43930: 7804 moveq #4,%d4
if ( ( status & _FWRITE ) == _FWRITE )
43932: 0800 0001 btst #1,%d0
43936: 6704 beqs 4393c <open+0x28>
eval_flags |= RTEMS_LIBIO_PERMS_WRITE;
43938: 7002 moveq #2,%d0 4393a: 8880 orl %d0,%d4
va_start(ap, flags);
mode = va_arg( ap, int );
4393c: 2a2e 0010 movel %fp@(16),%d5
* code does not require changes here since network file
* descriptors are obtained using socket(), not open().
*/
/* allocate a file control block */
iop = rtems_libio_allocate();
43940: 4eb9 0004 b10e jsr 4b10e <rtems_libio_allocate> 43946: 2440 moveal %d0,%a2
if ( iop == 0 ) {
43948: 4a80 tstl %d0 4394a: 6700 00b4 beqw 43a00 <open+0xec>
}
/*
* See if the file exists.
*/
status = rtems_filesystem_evaluate_path(
4394e: 2f03 movel %d3,%sp@- 43950: 4bf9 0004 fd64 lea 4fd64 <strlen>,%a5 43956: 4e95 jsr %a5@ 43958: 47ee ffec lea %fp@(-20),%a3 4395c: 7201 moveq #1,%d1 4395e: 49f9 0004 2c04 lea 42c04 <rtems_filesystem_evaluate_path>,%a4 43964: 2e81 movel %d1,%sp@ 43966: 2f0b movel %a3,%sp@- 43968: 2f04 movel %d4,%sp@- 4396a: 2f00 movel %d0,%sp@- 4396c: 2f03 movel %d3,%sp@- 4396e: 4e94 jsr %a4@
pathname, strlen( pathname ), eval_flags, &loc, true );
if ( status == -1 ) {
43970: 4fef 0014 lea %sp@(20),%sp 43974: 72ff moveq #-1,%d1 43976: b280 cmpl %d0,%d1 43978: 6700 0162 beqw 43adc <open+0x1c8>
if ( status != 0 ) { /* The file did not exist */
rc = EACCES;
goto done;
}
} else if ((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) {
4397c: 2002 movel %d2,%d0 4397e: 0280 0000 0a00 andil #2560,%d0 43984: 0c80 0000 0a00 cmpil #2560,%d0 4398a: 6700 0090 beqw 43a1c <open+0x108>
/*
* Fill in the file control block based on the loc structure
* returned by successful path evaluation.
*/
iop->flags |= rtems_libio_fcntl_flags( flags );
4398e: 282a 0014 movel %a2@(20),%d4 43992: 2f02 movel %d2,%sp@- 43994: 4eb9 0004 b080 jsr 4b080 <rtems_libio_fcntl_flags>
iop->pathinfo = loc;
4399a: 256e fff4 0020 movel %fp@(-12),%a2@(32) 439a0: 256e fff0 001c movel %fp@(-16),%a2@(28) 439a6: 256e fff8 0024 movel %fp@(-8),%a2@(36) 439ac: 256e fffc 0028 movel %fp@(-4),%a2@(40) 439b2: 2553 0018 movel %a3@,%a2@(24)
rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
439b6: 206a 0020 moveal %a2@(32),%a0
/*
* Fill in the file control block based on the loc structure
* returned by successful path evaluation.
*/
iop->flags |= rtems_libio_fcntl_flags( flags );
439ba: 8084 orl %d4,%d0 439bc: 2540 0014 movel %d0,%a2@(20)
iop->pathinfo = loc;
rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
439c0: 2f05 movel %d5,%sp@- 439c2: 2f02 movel %d2,%sp@- 439c4: 2f03 movel %d3,%sp@- 439c6: 2f0a movel %a2,%sp@- 439c8: 2050 moveal %a0@,%a0 439ca: 4e90 jsr %a0@
if ( rc ) {
439cc: 4fef 0014 lea %sp@(20),%sp 439d0: 4a80 tstl %d0 439d2: 6600 00f4 bnew 43ac8 <open+0x1b4>
}
/*
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
439d6: 0802 000a btst #10,%d2
439da: 6670 bnes 43a4c <open+0x138> <== NEVER TAKEN
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
rtems_set_errno_and_return_minus_one( rc );
}
return iop - rtems_libio_iops;
439dc: 200a movel %a2,%d0 439de: 90b9 0005 fb34 subl 5fb34 <rtems_libio_iops>,%d0 439e4: 223c b6db 6db7 movel #-1227133513,%d1 439ea: e680 asrl #3,%d0 439ec: 4c01 0800 mulsl %d1,%d0
}
439f0: 4cee 3c3c ffcc moveml %fp@(-52),%d2-%d5/%a2-%a5 439f6: 4e5e unlk %fp 439f8: 4e75 rts
int eval_flags;
/*
* Set the Evaluation flags
*/
eval_flags = 0;
439fa: 4284 clrl %d4 439fc: 6000 ff34 braw 43932 <open+0x1e>
*/
/* allocate a file control block */
iop = rtems_libio_allocate();
if ( iop == 0 ) {
rc = ENFILE;
43a00: 7417 moveq #23,%d2 43a02: 283c 0004 e90c movel #321804,%d4
if ( rc ) {
if ( iop )
rtems_libio_free( iop );
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
rtems_set_errno_and_return_minus_one( rc );
43a08: 2044 moveal %d4,%a0 43a0a: 4e90 jsr %a0@ 43a0c: 2040 moveal %d0,%a0 43a0e: 70ff moveq #-1,%d0 43a10: 2082 movel %d2,%a0@
}
return iop - rtems_libio_iops;
}
43a12: 4cee 3c3c ffcc moveml %fp@(-52),%d2-%d5/%a2-%a5 43a18: 4e5e unlk %fp 43a1a: 4e75 rts
goto done;
}
} else if ((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) {
/* We were trying to create a file that already exists */
rc = EEXIST;
43a1c: 7411 moveq #17,%d2 <== NOT EXECUTED 43a1e: 283c 0004 e90c movel #321804,%d4 <== NOT EXECUTED
*/
done:
va_end(ap);
if ( rc ) {
if ( iop )
43a24: 4a8a tstl %a2
43a26: 670a beqs 43a32 <open+0x11e> <== NEVER TAKEN
rtems_libio_free( iop );
43a28: 2f0a movel %a2,%sp@- 43a2a: 4eb9 0004 b1d2 jsr 4b1d2 <rtems_libio_free> 43a30: 588f addql #4,%sp
if ( loc_to_free )
43a32: 4a8b tstl %a3
43a34: 67d2 beqs 43a08 <open+0xf4>
rtems_filesystem_freenode( loc_to_free );
43a36: 2f0b movel %a3,%sp@- <== NOT EXECUTED 43a38: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode> <== NOT EXECUTED 43a3e: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( rc );
43a40: 2044 moveal %d4,%a0 <== NOT EXECUTED 43a42: 4e90 jsr %a0@ <== NOT EXECUTED 43a44: 2040 moveal %d0,%a0 <== NOT EXECUTED 43a46: 70ff moveq #-1,%d0 <== NOT EXECUTED 43a48: 2082 movel %d2,%a0@ <== NOT EXECUTED 43a4a: 60c6 bras 43a12 <open+0xfe> <== NOT EXECUTED
/*
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
43a4c: 200a movel %a2,%d0 <== NOT EXECUTED 43a4e: 90b9 0005 fb34 subl 5fb34 <rtems_libio_iops>,%d0 <== NOT EXECUTED 43a54: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED 43a5a: e680 asrl #3,%d0 <== NOT EXECUTED 43a5c: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED 43a60: 42a7 clrl %sp@- <== NOT EXECUTED 43a62: 42a7 clrl %sp@- <== NOT EXECUTED 43a64: 2f01 movel %d1,%sp@- <== NOT EXECUTED 43a66: 4eb9 0004 af8c jsr 4af8c <ftruncate> <== NOT EXECUTED
if ( rc ) {
43a6c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
43a70: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( rc ) {
43a72: 6700 ff68 beqw 439dc <open+0xc8> <== NOT EXECUTED
if(errno) rc = errno;
43a76: 283c 0004 e90c movel #321804,%d4 <== NOT EXECUTED 43a7c: 2044 moveal %d4,%a0 <== NOT EXECUTED 43a7e: 4e90 jsr %a0@ <== NOT EXECUTED 43a80: 2040 moveal %d0,%a0 <== NOT EXECUTED 43a82: 4a90 tstl %a0@ <== NOT EXECUTED 43a84: 6600 0086 bnew 43b0c <open+0x1f8> <== NOT EXECUTED
close( iop - rtems_libio_iops );
43a88: 200a movel %a2,%d0 <== NOT EXECUTED 43a8a: 90b9 0005 fb34 subl 5fb34 <rtems_libio_iops>,%d0 <== NOT EXECUTED 43a90: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED 43a96: e680 asrl #3,%d0 <== NOT EXECUTED 43a98: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
/* those are released by close(): */
iop = 0;
loc_to_free = NULL;
43a9c: 97cb subal %a3,%a3 <== NOT EXECUTED
rc = ftruncate( iop - rtems_libio_iops, 0 );
if ( rc ) {
if(errno) rc = errno;
close( iop - rtems_libio_iops );
/* those are released by close(): */
iop = 0;
43a9e: 95ca subal %a2,%a2 <== NOT EXECUTED
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
if ( rc ) {
if(errno) rc = errno;
close( iop - rtems_libio_iops );
43aa0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 43aa2: 4eb9 0004 af04 jsr 4af04 <close> <== NOT EXECUTED 43aa8: 588f addql #4,%sp <== NOT EXECUTED
* Single exit and clean up path.
*/
done:
va_end(ap);
if ( rc ) {
43aaa: 4a82 tstl %d2 <== NOT EXECUTED 43aac: 6600 ff76 bnew 43a24 <open+0x110> <== NOT EXECUTED
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
rtems_set_errno_and_return_minus_one( rc );
}
return iop - rtems_libio_iops;
43ab0: 200a movel %a2,%d0 <== NOT EXECUTED 43ab2: 90b9 0005 fb34 subl 5fb34 <rtems_libio_iops>,%d0 <== NOT EXECUTED 43ab8: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED 43abe: e680 asrl #3,%d0 <== NOT EXECUTED 43ac0: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 43ac4: 6000 ff2a braw 439f0 <open+0xdc> <== NOT EXECUTED
iop->flags |= rtems_libio_fcntl_flags( flags );
iop->pathinfo = loc;
rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
if ( rc ) {
rc = errno;
43ac8: 283c 0004 e90c movel #321804,%d4 <== NOT EXECUTED 43ace: 2044 moveal %d4,%a0 <== NOT EXECUTED 43ad0: 4e90 jsr %a0@ <== NOT EXECUTED 43ad2: 2040 moveal %d0,%a0 <== NOT EXECUTED 43ad4: 2410 movel %a0@,%d2 <== NOT EXECUTED
* Single exit and clean up path.
*/
done:
va_end(ap);
if ( rc ) {
43ad6: 67d8 beqs 43ab0 <open+0x19c> <== NOT EXECUTED 43ad8: 6000 ff4a braw 43a24 <open+0x110> <== NOT EXECUTED
*/
status = rtems_filesystem_evaluate_path(
pathname, strlen( pathname ), eval_flags, &loc, true );
if ( status == -1 ) {
if ( errno != ENOENT ) {
43adc: 283c 0004 e90c movel #321804,%d4 43ae2: 2044 moveal %d4,%a0 43ae4: 4e90 jsr %a0@ 43ae6: 7202 moveq #2,%d1 43ae8: 2040 moveal %d0,%a0 43aea: b290 cmpl %a0@,%d1
43aec: 6710 beqs 43afe <open+0x1ea> <== ALWAYS TAKEN
}
/* Create the node for the new regular file */
rc = mknod( pathname, S_IFREG | mode, 0LL );
if ( rc ) {
rc = errno;
43aee: 2044 moveal %d4,%a0 <== NOT EXECUTED
int mode; int rc; rtems_libio_t *iop = 0; int status; rtems_filesystem_location_info_t loc; rtems_filesystem_location_info_t *loc_to_free = NULL;
43af0: 97cb subal %a3,%a3 <== NOT EXECUTED
}
/* Create the node for the new regular file */
rc = mknod( pathname, S_IFREG | mode, 0LL );
if ( rc ) {
rc = errno;
43af2: 4e90 jsr %a0@ <== NOT EXECUTED 43af4: 2040 moveal %d0,%a0 <== NOT EXECUTED 43af6: 2410 movel %a0@,%d2 <== NOT EXECUTED
* Single exit and clean up path.
*/
done:
va_end(ap);
if ( rc ) {
43af8: 67b6 beqs 43ab0 <open+0x19c> <== NOT EXECUTED 43afa: 6000 ff28 braw 43a24 <open+0x110> <== NOT EXECUTED
rc = errno;
goto done;
}
/* If the file does not exist and we are not trying to create it--> error */
if ( !(flags & O_CREAT) ) {
43afe: 0802 0009 btst #9,%d2
43b02: 6636 bnes 43b3a <open+0x226> <== NEVER TAKEN
int mode; int rc; rtems_libio_t *iop = 0; int status; rtems_filesystem_location_info_t loc; rtems_filesystem_location_info_t *loc_to_free = NULL;
43b04: 97cb subal %a3,%a3
goto done;
}
/* If the file does not exist and we are not trying to create it--> error */
if ( !(flags & O_CREAT) ) {
rc = ENOENT;
43b06: 7402 moveq #2,%d2 43b08: 6000 ff1a braw 43a24 <open+0x110>
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
if ( rc ) {
if(errno) rc = errno;
43b0c: 2044 moveal %d4,%a0 <== NOT EXECUTED
close( iop - rtems_libio_iops );
/* those are released by close(): */
iop = 0;
loc_to_free = NULL;
43b0e: 97cb subal %a3,%a3 <== NOT EXECUTED
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
if ( rc ) {
if(errno) rc = errno;
43b10: 4e90 jsr %a0@ <== NOT EXECUTED
close( iop - rtems_libio_iops );
43b12: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
if ( rc ) {
if(errno) rc = errno;
43b18: 2040 moveal %d0,%a0 <== NOT EXECUTED
close( iop - rtems_libio_iops );
43b1a: 200a movel %a2,%d0 <== NOT EXECUTED 43b1c: 90b9 0005 fb34 subl 5fb34 <rtems_libio_iops>,%d0 <== NOT EXECUTED
/* those are released by close(): */
iop = 0;
43b22: 95ca subal %a2,%a2 <== NOT EXECUTED
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
if ( rc ) {
if(errno) rc = errno;
close( iop - rtems_libio_iops );
43b24: e680 asrl #3,%d0 <== NOT EXECUTED 43b26: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
if ( rc ) {
if(errno) rc = errno;
43b2a: 2410 movel %a0@,%d2 <== NOT EXECUTED
close( iop - rtems_libio_iops );
43b2c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 43b2e: 4eb9 0004 af04 jsr 4af04 <close> <== NOT EXECUTED 43b34: 588f addql #4,%sp <== NOT EXECUTED 43b36: 6000 ff72 braw 43aaa <open+0x196> <== NOT EXECUTED
rc = ENOENT;
goto done;
}
/* Create the node for the new regular file */
rc = mknod( pathname, S_IFREG | mode, 0LL );
43b3a: 42a7 clrl %sp@- <== NOT EXECUTED 43b3c: 2005 movel %d5,%d0 <== NOT EXECUTED 43b3e: 42a7 clrl %sp@- <== NOT EXECUTED 43b40: 08c0 000f bset #15,%d0 <== NOT EXECUTED 43b44: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43b46: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43b48: 4eb9 0004 311c jsr 4311c <mknod> <== NOT EXECUTED
if ( rc ) {
43b4e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 43b52: 4a80 tstl %d0 <== NOT EXECUTED 43b54: 6698 bnes 43aee <open+0x1da> <== NOT EXECUTED
/*
* After we do the mknod(), we have to evaluate the path to get the
* "loc" structure needed to actually have the file itself open.
* So we created it, and then we need to have "look it up."
*/
status = rtems_filesystem_evaluate_path(
43b56: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43b58: 4e95 jsr %a5@ <== NOT EXECUTED 43b5a: 7201 moveq #1,%d1 <== NOT EXECUTED 43b5c: 2e81 movel %d1,%sp@ <== NOT EXECUTED 43b5e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 43b60: 42a7 clrl %sp@- <== NOT EXECUTED 43b62: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43b64: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43b66: 4e94 jsr %a4@ <== NOT EXECUTED
pathname, strlen( pathname ), 0x0, &loc, true );
if ( status != 0 ) { /* The file did not exist */
43b68: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43b6c: 4a80 tstl %d0 <== NOT EXECUTED 43b6e: 6700 fe1e beqw 4398e <open+0x7a> <== NOT EXECUTED
int mode; int rc; rtems_libio_t *iop = 0; int status; rtems_filesystem_location_info_t loc; rtems_filesystem_location_info_t *loc_to_free = NULL;
43b72: 97cb subal %a3,%a3 <== NOT EXECUTED
* So we created it, and then we need to have "look it up."
*/
status = rtems_filesystem_evaluate_path(
pathname, strlen( pathname ), 0x0, &loc, true );
if ( status != 0 ) { /* The file did not exist */
rc = EACCES;
43b74: 740d moveq #13,%d2 <== NOT EXECUTED 43b76: 6000 feac braw 43a24 <open+0x110> <== NOT EXECUTED
000438a0 <open_dev_console>:
/*
* This is a replaceable stub which opens the console, if present.
*/
void open_dev_console(void)
{
438a0: 4e56 0000 linkw %fp,#0 438a4: 2f0a movel %a2,%sp@-
int stderr_fd;
/*
* Attempt to open /dev/console.
*/
if ((stdin_fd = open("/dev/console", O_RDONLY, 0)) == -1) {
438a6: 45f9 0004 3914 lea 43914 <open>,%a2 438ac: 42a7 clrl %sp@- 438ae: 42a7 clrl %sp@- 438b0: 4879 0005 ce22 pea 5ce22 <CSWTCH.55+0x100> 438b6: 4e92 jsr %a2@ 438b8: 4fef 000c lea %sp@(12),%sp 438bc: 72ff moveq #-1,%d1 438be: b280 cmpl %d0,%d1
438c0: 6730 beqs 438f2 <open_dev_console+0x52>
/*
* 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)
438c2: 42a7 clrl %sp@- 438c4: 4878 0001 pea 1 <ADD> 438c8: 4879 0005 ce22 pea 5ce22 <CSWTCH.55+0x100> 438ce: 4e92 jsr %a2@ 438d0: 4fef 000c lea %sp@(12),%sp 438d4: 72ff moveq #-1,%d1 438d6: b280 cmpl %d0,%d1
438d8: 672c beqs 43906 <open_dev_console+0x66>
rtems_fatal_error_occurred( 0x55544431 ); /* error STD1 */
if ((stderr_fd = open("/dev/console", O_WRONLY, 0)) == -1)
438da: 42a7 clrl %sp@- 438dc: 4878 0001 pea 1 <ADD> 438e0: 4879 0005 ce22 pea 5ce22 <CSWTCH.55+0x100> 438e6: 4e92 jsr %a2@ 438e8: 4fef 000c lea %sp@(12),%sp 438ec: 72ff moveq #-1,%d1 438ee: b280 cmpl %d0,%d1
438f0: 6708 beqs 438fa <open_dev_console+0x5a>
rtems_fatal_error_occurred( 0x55544432 ); /* error STD2 */
}
438f2: 246e fffc moveal %fp@(-4),%a2 438f6: 4e5e unlk %fp 438f8: 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 */
438fa: 2f3c 5554 4432 movel #1431585842,%sp@- 43900: 4eb9 0004 6bc0 jsr 46bc0 <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 */
43906: 2f3c 5554 4431 movel #1431585841,%sp@- 4390c: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred>
...
0004483a <oproc>:
/*
* Handle output processing
*/
static void
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
4483a: 4e56 fff0 linkw %fp,#-16 4483e: 202e 0008 movel %fp@(8),%d0 44842: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 44846: 246e 000c moveal %fp@(12),%a2
int i;
if (tty->termios.c_oflag & OPOST) {
4484a: 222a 0034 movel %a2@(52),%d1
/*
* Handle output processing
*/
static void
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
4484e: 1d40 fffe moveb %d0,%fp@(-2)
int i;
if (tty->termios.c_oflag & OPOST) {
44852: 0801 0000 btst #0,%d1 44856: 6700 0092 beqw 448ea <oproc+0xb0>
switch (c) {
4485a: 7409 moveq #9,%d2 4485c: 0280 0000 00ff andil #255,%d0 44862: b480 cmpl %d0,%d2 44864: 6700 0118 beqw 4497e <oproc+0x144>
44868: 6450 bccs 448ba <oproc+0x80> <== NEVER TAKEN
4486a: 740a moveq #10,%d2 4486c: b480 cmpl %d0,%d2 4486e: 6700 0092 beqw 44902 <oproc+0xc8> 44872: 143c 000d moveb #13,%d2 44876: b480 cmpl %d0,%d2 44878: 6700 00c6 beqw 44940 <oproc+0x106>
if (tty->column > 0)
tty->column--;
break;
default:
if (tty->termios.c_oflag & OLCUC)
4487c: 0801 0001 btst #1,%d1 44880: 6600 0138 bnew 449ba <oproc+0x180> 44884: 2079 0005 e60c moveal 5e60c <__ctype_ptr__>,%a0 4488a: 47f9 0004 4736 lea 44736 <rtems_termios_puts>,%a3
c = toupper(c);
if (!iscntrl(c))
44890: 1030 0801 moveb %a0@(00000001,%d0:l),%d0 44894: 49c0 extbl %d0 44896: 0800 0005 btst #5,%d0
4489a: 6604 bnes 448a0 <oproc+0x66> <== NEVER TAKEN
tty->column++;
4489c: 52aa 0028 addql #1,%a2@(40)
break;
}
}
rtems_termios_puts (&c, 1, tty);
448a0: 2f0a movel %a2,%sp@- 448a2: 4878 0001 pea 1 <ADD> 448a6: 486e fffe pea %fp@(-2) 448aa: 4e93 jsr %a3@
448ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
448b0: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 448b6: 4e5e unlk %fp <== NOT EXECUTED 448b8: 4e75 rts <== NOT EXECUTED
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
int i;
if (tty->termios.c_oflag & OPOST) {
switch (c) {
448ba: 143c 0008 moveb #8,%d2 <== NOT EXECUTED 448be: b480 cmpl %d0,%d2 <== NOT EXECUTED 448c0: 66ba bnes 4487c <oproc+0x42> <== NOT EXECUTED
}
tty->column += i;
break;
case '\b':
if (tty->column > 0)
448c2: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED 448c6: 47f9 0004 4736 lea 44736 <rtems_termios_puts>,%a3 <== NOT EXECUTED 448cc: 6fd2 bles 448a0 <oproc+0x66> <== NOT EXECUTED
tty->column--;
448ce: 5380 subql #1,%d0 <== NOT EXECUTED 448d0: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
448d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 448d6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 448da: 486e fffe pea %fp@(-2) <== NOT EXECUTED 448de: 4e93 jsr %a3@ <== NOT EXECUTED 448e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 448e4: 60ca bras 448b0 <oproc+0x76> <== NOT EXECUTED
c = '\n';
if (tty->termios.c_oflag & ONLRET)
tty->column = 0;
break;
}
tty->column = 0;
448e6: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
448ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 448ec: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 448f0: 47f9 0004 4736 lea 44736 <rtems_termios_puts>,%a3 <== NOT EXECUTED 448f6: 486e fffe pea %fp@(-2) <== NOT EXECUTED 448fa: 4e93 jsr %a3@ <== NOT EXECUTED 448fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 44900: 60ae bras 448b0 <oproc+0x76> <== NOT EXECUTED
int i;
if (tty->termios.c_oflag & OPOST) {
switch (c) {
case '\n':
if (tty->termios.c_oflag & ONLRET)
44902: 0801 0005 btst #5,%d1
44906: 6704 beqs 4490c <oproc+0xd2> <== ALWAYS TAKEN
tty->column = 0;
44908: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
4490c: 47f9 0004 4736 lea 44736 <rtems_termios_puts>,%a3
if (tty->termios.c_oflag & ONLCR) {
44912: 44c1 movew %d1,%ccr
44914: 668a bnes 448a0 <oproc+0x66> <== NEVER TAKEN
rtems_termios_puts ("\r", 1, tty);
44916: 2f0a movel %a2,%sp@- 44918: 4878 0001 pea 1 <ADD> 4491c: 4879 0005 d45a pea 5d45a <rtems_filesystem_default_pathconf+0xa6> 44922: 4e93 jsr %a3@
tty->column = 0;
44924: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 44928: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
4492c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4492e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44932: 486e fffe pea %fp@(-2) <== NOT EXECUTED 44936: 4e93 jsr %a3@ <== NOT EXECUTED 44938: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4493c: 6000 ff72 braw 448b0 <oproc+0x76> <== NOT EXECUTED
tty->column = 0;
}
break;
case '\r':
if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))
44940: 0801 0004 btst #4,%d1 <== NOT EXECUTED 44944: 6708 beqs 4494e <oproc+0x114> <== NOT EXECUTED 44946: 4aaa 0028 tstl %a2@(40) <== NOT EXECUTED 4494a: 6700 ff64 beqw 448b0 <oproc+0x76> <== NOT EXECUTED
return;
if (tty->termios.c_oflag & OCRNL) {
4494e: 44c1 movew %d1,%ccr <== NOT EXECUTED 44950: 6a94 bpls 448e6 <oproc+0xac> <== NOT EXECUTED 44952: 47f9 0004 4736 lea 44736 <rtems_termios_puts>,%a3 <== NOT EXECUTED
c = '\n';
44958: 700a moveq #10,%d0 <== NOT EXECUTED 4495a: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
if (tty->termios.c_oflag & ONLRET)
4495e: 0801 0005 btst #5,%d1 <== NOT EXECUTED 44962: 6700 ff3c beqw 448a0 <oproc+0x66> <== NOT EXECUTED
tty->column = 0;
44966: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
4496a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4496c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44970: 486e fffe pea %fp@(-2) <== NOT EXECUTED 44974: 4e93 jsr %a3@ <== NOT EXECUTED 44976: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4497a: 6000 ff34 braw 448b0 <oproc+0x76> <== NOT EXECUTED
}
tty->column = 0;
break;
case '\t':
i = 8 - (tty->column & 7);
4497e: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED 44982: 7407 moveq #7,%d2 <== NOT EXECUTED 44984: 307c 0008 moveaw #8,%a0 <== NOT EXECUTED 44988: c480 andl %d0,%d2 <== NOT EXECUTED
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
4498a: 0281 0000 1800 andil #6144,%d1 <== NOT EXECUTED
}
tty->column = 0;
break;
case '\t':
i = 8 - (tty->column & 7);
44990: 91c2 subal %d2,%a0 <== NOT EXECUTED
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
44992: 0c81 0000 1800 cmpil #6144,%d1 <== NOT EXECUTED 44998: 675a beqs 449f4 <oproc+0x1ba> <== NOT EXECUTED
tty->column += i;
rtems_termios_puts ( " ", i, tty);
return;
}
tty->column += i;
4499a: d1c0 addal %d0,%a0 <== NOT EXECUTED 4499c: 47f9 0004 4736 lea 44736 <rtems_termios_puts>,%a3 <== NOT EXECUTED 449a2: 2548 0028 movel %a0,%a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
449a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 449a8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 449ac: 486e fffe pea %fp@(-2) <== NOT EXECUTED 449b0: 4e93 jsr %a3@ <== NOT EXECUTED 449b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 449b6: 6000 fef8 braw 448b0 <oproc+0x76> <== NOT EXECUTED
tty->column--;
break;
default:
if (tty->termios.c_oflag & OLCUC)
c = toupper(c);
449ba: 2079 0005 e60c moveal 5e60c <__ctype_ptr__>,%a0 <== NOT EXECUTED 449c0: 7403 moveq #3,%d2 <== NOT EXECUTED 449c2: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED 449c6: 49c1 extbl %d1 <== NOT EXECUTED 449c8: c282 andl %d2,%d1 <== NOT EXECUTED 449ca: 143c 0002 moveb #2,%d2 <== NOT EXECUTED 449ce: b481 cmpl %d1,%d2 <== NOT EXECUTED 449d0: 670e beqs 449e0 <oproc+0x1a6> <== NOT EXECUTED 449d2: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED 449d6: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 449dc: 6000 feac braw 4488a <oproc+0x50> <== NOT EXECUTED 449e0: 0680 ffff ffe0 addil #-32,%d0 <== NOT EXECUTED 449e6: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED 449ea: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 449f0: 6000 fe98 braw 4488a <oproc+0x50> <== NOT EXECUTED
case '\t':
i = 8 - (tty->column & 7);
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
tty->column += i;
rtems_termios_puts ( " ", i, tty);
449f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
break;
case '\t':
i = 8 - (tty->column & 7);
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
tty->column += i;
449f6: d088 addl %a0,%d0 <== NOT EXECUTED 449f8: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
rtems_termios_puts ( " ", i, tty);
449fc: 2f08 movel %a0,%sp@- <== NOT EXECUTED 449fe: 4879 0005 d45c pea 5d45c <rtems_filesystem_default_pathconf+0xa8><== NOT EXECUTED 44a04: 4eb9 0004 4736 jsr 44736 <rtems_termios_puts> <== NOT EXECUTED
return;
44a0a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
}
44a0e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 44a14: 4e5e unlk %fp <== NOT EXECUTED
00044fb8 <pathconf>:
long pathconf(
const char *path,
int name
)
{
44fb8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44fbc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44fbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_RDONLY );
44fc0: 42a7 clrl %sp@- <== NOT EXECUTED 44fc2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 44fc6: 4eb9 0004 4d30 jsr 44d30 <open> <== NOT EXECUTED
if ( fd == -1 )
44fcc: 508f addql #8,%sp <== NOT EXECUTED
)
{
int status;
int fd;
fd = open( path, O_RDONLY );
44fce: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( fd == -1 )
44fd0: 70ff moveq #-1,%d0 <== NOT EXECUTED 44fd2: b082 cmpl %d2,%d0 <== NOT EXECUTED 44fd4: 6728 beqs 44ffe <pathconf+0x46> <== NOT EXECUTED
return -1;
status = fpathconf( fd, name );
44fd6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 44fda: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44fdc: 4eb9 0004 3a60 jsr 43a60 <fpathconf> <== NOT EXECUTED 44fe2: 2600 movel %d0,%d3 <== NOT EXECUTED
(void) close( fd );
44fe4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44fe6: 4eb9 0004 3320 jsr 43320 <close> <== NOT EXECUTED
return status;
}
44fec: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44ff0: 2003 movel %d3,%d0 <== NOT EXECUTED
status = fpathconf( fd, name );
(void) close( fd );
return status;
44ff2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
44ff6: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 44ffa: 4e5e unlk %fp <== NOT EXECUTED 44ffc: 4e75 rts <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_RDONLY );
if ( fd == -1 )
return -1;
44ffe: 76ff moveq #-1,%d3 <== NOT EXECUTED
status = fpathconf( fd, name );
(void) close( fd );
return status;
}
45000: 2003 movel %d3,%d0 <== NOT EXECUTED 45002: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45006: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4500a: 4e5e unlk %fp <== NOT EXECUTED
...
00048564 <pause>:
/*
* 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 81
*/
int pause( void )
{
48564: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48568: 2f02 movel %d2,%sp@- <== NOT EXECUTED
sigset_t all_signals;
int status;
(void) sigfillset( &all_signals );
4856a: 240e movel %fp,%d2 <== NOT EXECUTED 4856c: 5982 subql #4,%d2 <== NOT EXECUTED 4856e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48570: 4eb9 0004 93f0 jsr 493f0 <sigfillset> <== NOT EXECUTED
status = sigtimedwait( &all_signals, NULL, NULL );
48576: 42a7 clrl %sp@- <== NOT EXECUTED 48578: 42a7 clrl %sp@- <== NOT EXECUTED 4857a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4857c: 4eb9 0004 956c jsr 4956c <sigtimedwait> <== NOT EXECUTED
return status;
}
48582: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48586: 4e5e unlk %fp <== NOT EXECUTED
...
00045280 <pipe>:
extern int pipe_create(int filsdes[2]);
int pipe(
int filsdes[2]
)
{
45280: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45284: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if (filsdes == NULL)
45288: 670c beqs 45296 <pipe+0x16> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
return pipe_create(filsdes);
4528a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
4528e: 4e5e unlk %fp <== NOT EXECUTED
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
return pipe_create(filsdes);
45290: 4ef9 0004 c158 jmp 4c158 <pipe_create> <== NOT EXECUTED
int pipe(
int filsdes[2]
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
45296: 4eb9 0005 078c jsr 5078c <__errno> <== NOT EXECUTED 4529c: 720e moveq #14,%d1 <== NOT EXECUTED 4529e: 2040 moveal %d0,%a0 <== NOT EXECUTED
return pipe_create(filsdes);
}
452a0: 70ff moveq #-1,%d0 <== NOT EXECUTED 452a2: 4e5e unlk %fp <== NOT EXECUTED
int pipe(
int filsdes[2]
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
452a4: 2081 movel %d1,%a0@ <== NOT EXECUTED
return pipe_create(filsdes);
}
0004c158 <pipe_create>:
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4c158: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4c15c: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
rtems_libio_t *iop;
int err = 0;
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
4c160: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED 4c164: 4879 0005 f210 pea 5f210 <_CPU_m68k_BFFFO_table+0x100> <== NOT EXECUTED
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4c16a: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_libio_t *iop;
int err = 0;
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
4c16e: 4eb9 0004 dacc jsr 4dacc <rtems_mkdir> <== NOT EXECUTED 4c174: 508f addql #8,%sp <== NOT EXECUTED 4c176: 4a80 tstl %d0 <== NOT EXECUTED 4c178: 670c beqs 4c186 <pipe_create+0x2e> <== NOT EXECUTED
return -1;
4c17a: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4c17c: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED 4c182: 4e5e unlk %fp <== NOT EXECUTED 4c184: 4e75 rts <== NOT EXECUTED
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4c186: 45ee fff1 lea %fp@(-15),%a2 <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c18a: 3039 0006 0f08 movew 60f08 <rtems_pipe_no>,%d0 <== NOT EXECUTED
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4c190: 24bc 2f74 6d70 movel #796159344,%a2@ <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c196: 2200 movel %d0,%d1 <== NOT EXECUTED 4c198: 5281 addql #1,%d1 <== NOT EXECUTED 4c19a: 3f00 movew %d0,%sp@- <== NOT EXECUTED
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4c19c: 203c 2f2e 6669 movel #791570025,%d0 <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c1a2: 4267 clrw %sp@- <== NOT EXECUTED
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4c1a4: 307c 666f moveaw #26223,%a0 <== NOT EXECUTED 4c1a8: 2d40 fff5 movel %d0,%fp@(-11) <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c1ac: 4879 0005 f215 pea 5f215 <_CPU_m68k_BFFFO_table+0x105> <== NOT EXECUTED 4c1b2: 486e fffb pea %fp@(-5) <== NOT EXECUTED
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4c1b6: 3d48 fff9 movew %a0,%fp@(-7) <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c1ba: 33c1 0006 0f08 movew %d1,60f08 <rtems_pipe_no> <== NOT EXECUTED 4c1c0: 4eb9 0005 14b0 jsr 514b0 <sprintf> <== NOT EXECUTED
/* Try creating FIFO file until find an available file name */
while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {
4c1c6: 4878 0180 pea 180 <DBL_MANT_DIG+0x14b> <== NOT EXECUTED 4c1ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c1cc: 4eb9 0004 d7f8 jsr 4d7f8 <mkfifo> <== NOT EXECUTED 4c1d2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4c1d6: 4a80 tstl %d0 <== NOT EXECUTED 4c1d8: 6600 009a bnew 4c274 <pipe_create+0x11c> <== NOT EXECUTED
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);
4c1dc: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED 4c1e0: 49f9 0004 4ff8 lea 44ff8 <open>,%a4 <== NOT EXECUTED 4c1e6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c1e8: 4e94 jsr %a4@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4c1ea: 508f addql #8,%sp <== NOT EXECUTED
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);
4c1ec: 2680 movel %d0,%a3@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4c1ee: 6d4e blts 4c23e <pipe_create+0xe6> <== NOT EXECUTED
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]);
4c1f0: b0b9 0005 fdd4 cmpl 5fdd4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 4c1f6: 6442 bccs 4c23a <pipe_create+0xe2> <== NOT EXECUTED 4c1f8: 2200 movel %d0,%d1 <== NOT EXECUTED 4c1fa: ed88 lsll #6,%d0 <== NOT EXECUTED 4c1fc: e789 lsll #3,%d1 <== NOT EXECUTED 4c1fe: 2079 0006 15fc moveal 615fc <rtems_libio_iops>,%a0 <== NOT EXECUTED 4c204: 9081 subl %d1,%d0 <== NOT EXECUTED 4c206: d1c0 addal %d0,%a0 <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
4c208: 70fe moveq #-2,%d0 <== NOT EXECUTED 4c20a: c1a8 0014 andl %d0,%a0@(20) <== NOT EXECUTED
filsdes[1] = open(fifopath, O_WRONLY);
4c20e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4c212: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c214: 4e94 jsr %a4@ <== NOT EXECUTED
if (filsdes[1] < 0) {
4c216: 508f addql #8,%sp <== NOT EXECUTED
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);
4c218: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
if (filsdes[1] < 0) {
4c21c: 6d36 blts 4c254 <pipe_create+0xfc> <== NOT EXECUTED
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4c21e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
int pipe_create(
int filsdes[2]
)
{
rtems_libio_t *iop;
int err = 0;
4c220: 99cc subal %a4,%a4 <== NOT EXECUTED
if (filsdes[1] < 0) {
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4c222: 4eb9 0004 7118 jsr 47118 <unlink> <== NOT EXECUTED 4c228: 588f addql #4,%sp <== NOT EXECUTED
} if(err != 0)
4c22a: 4a8c tstl %a4 <== NOT EXECUTED 4c22c: 6658 bnes 4c286 <pipe_create+0x12e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(err);
return 0;
4c22e: 4280 clrl %d0 <== NOT EXECUTED
}
4c230: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED 4c236: 4e5e unlk %fp <== NOT EXECUTED 4c238: 4e75 rts <== NOT EXECUTED
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]);
4c23a: 91c8 subal %a0,%a0 <== NOT EXECUTED 4c23c: 60ca bras 4c208 <pipe_create+0xb0> <== NOT EXECUTED
}
/* Non-blocking open to avoid waiting for writers */
filsdes[0] = open(fifopath, O_RDONLY | O_NONBLOCK);
if (filsdes[0] < 0) {
err = errno;
4c23e: 4eb9 0005 078c jsr 5078c <__errno> <== NOT EXECUTED 4c244: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c246: 2850 moveal %a0@,%a4 <== NOT EXECUTED
/* 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);
4c248: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c24a: 4eb9 0004 7118 jsr 47118 <unlink> <== NOT EXECUTED 4c250: 588f addql #4,%sp <== NOT EXECUTED 4c252: 60d6 bras 4c22a <pipe_create+0xd2> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
filsdes[1] = open(fifopath, O_WRONLY);
if (filsdes[1] < 0) {
err = errno;
4c254: 4eb9 0005 078c jsr 5078c <__errno> <== NOT EXECUTED 4c25a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c25c: 2850 moveal %a0@,%a4 <== NOT EXECUTED
close(filsdes[0]);
4c25e: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 4c260: 4eb9 0004 3c78 jsr 43c78 <close> <== NOT EXECUTED 4c266: 588f addql #4,%sp <== NOT EXECUTED
}
unlink(fifopath);
4c268: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c26a: 4eb9 0004 7118 jsr 47118 <unlink> <== NOT EXECUTED 4c270: 588f addql #4,%sp <== NOT EXECUTED 4c272: 60b6 bras 4c22a <pipe_create+0xd2> <== NOT EXECUTED
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){
4c274: 4eb9 0005 078c jsr 5078c <__errno> <== NOT EXECUTED
return -1;
4c27a: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4c27c: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED 4c282: 4e5e unlk %fp <== NOT EXECUTED 4c284: 4e75 rts <== NOT EXECUTED
close(filsdes[0]);
}
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
4c286: 4eb9 0005 078c jsr 5078c <__errno> <== NOT EXECUTED 4c28c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c28e: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c290: 208c movel %a4,%a0@ <== NOT EXECUTED
return 0; }
4c292: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED 4c298: 4e5e unlk %fp <== NOT EXECUTED
0004d884 <pipe_ioctl>:
pipe_control_t *pipe,
uint32_t cmd,
void *buffer,
rtems_libio_t *iop
)
{
4d884: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (cmd == FIONREAD) {
4d888: 203c 4004 667f movel #1074030207,%d0 <== NOT EXECUTED 4d88e: b0ae 000c cmpl %fp@(12),%d0 <== NOT EXECUTED 4d892: 6706 beqs 4d89a <pipe_ioctl+0x16> <== NOT EXECUTED
*(unsigned int *)buffer = pipe->Length;
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
4d894: 70ea moveq #-22,%d0 <== NOT EXECUTED
}
4d896: 4e5e unlk %fp <== NOT EXECUTED 4d898: 4e75 rts <== NOT EXECUTED
void *buffer,
rtems_libio_t *iop
)
{
if (cmd == FIONREAD) {
if (buffer == NULL)
4d89a: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 4d89e: 6606 bnes 4d8a6 <pipe_ioctl+0x22> <== NOT EXECUTED
return -EFAULT;
4d8a0: 70f2 moveq #-14,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4d8a2: 4e5e unlk %fp <== NOT EXECUTED 4d8a4: 4e75 rts <== NOT EXECUTED
{
if (cmd == FIONREAD) {
if (buffer == NULL)
return -EFAULT;
if (! PIPE_LOCK(pipe))
4d8a6: 42a7 clrl %sp@- <== NOT EXECUTED 4d8a8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d8ac: 42a7 clrl %sp@- <== NOT EXECUTED 4d8ae: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED 4d8b2: 4eb9 0004 8804 jsr 48804 <rtems_semaphore_obtain> <== NOT EXECUTED 4d8b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d8bc: 4a80 tstl %d0 <== NOT EXECUTED 4d8be: 6706 beqs 4d8c6 <pipe_ioctl+0x42> <== NOT EXECUTED
return -EINTR;
4d8c0: 70fc moveq #-4,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4d8c2: 4e5e unlk %fp <== NOT EXECUTED 4d8c4: 4e75 rts <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
/* Return length of pipe */
*(unsigned int *)buffer = pipe->Length;
4d8c6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d8ca: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 4d8ce: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d8d2: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED 4d8d6: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
4d8dc: 588f addql #4,%sp <== NOT EXECUTED 4d8de: 4280 clrl %d0 <== NOT EXECUTED
}
return -EINVAL;
}
4d8e0: 4e5e unlk %fp <== NOT EXECUTED
0004d8e4 <pipe_lseek>:
rtems_libio_t *iop
)
{
/* Seek on pipe is not supported */
return -ESPIPE;
}
4d8e4: 70e3 moveq #-29,%d0 <== NOT EXECUTED
pipe_control_t *pipe,
off_t offset,
int whence,
rtems_libio_t *iop
)
{
4d8e6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Seek on pipe is not supported */ return -ESPIPE; }
4d8ea: 4e5e unlk %fp <== NOT EXECUTED
...
0004d470 <pipe_read>:
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d470: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4d474: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d478: 42a7 clrl %sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d47a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d47e: 47f9 0004 8804 lea 48804 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED 4d484: 42a7 clrl %sp@- <== NOT EXECUTED 4d486: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d48a: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 4d48e: 2a6e 0014 moveal %fp@(20),%a5 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d492: 4e93 jsr %a3@ <== NOT EXECUTED 4d494: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d498: 4a80 tstl %d0 <== NOT EXECUTED 4d49a: 6600 00ac bnew 4d548 <pipe_read+0xd8> <== NOT EXECUTED
return -EINTR;
while (read < count) {
4d49e: 4a84 tstl %d4 <== NOT EXECUTED 4d4a0: 6700 01ac beqw 4d64e <pipe_read+0x1de> <== NOT EXECUTED 4d4a4: 4285 clrl %d5 <== NOT EXECUTED 4d4a6: 4283 clrl %d3 <== NOT EXECUTED 4d4a8: 49f9 0004 8944 lea 48944 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
4d4ae: 243c 0004 f014 movel #323604,%d2 <== NOT EXECUTED
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
pipe->Start = 0;
if (pipe->waitingWriters > 0)
PIPE_WAKEUPWRITERS(pipe);
4d4b4: 2e3c 0004 ef9c movel #323484,%d7 <== 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);
4d4ba: 2c3c 0005 1e5c movel #335452,%d6 <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
4d4c0: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 4d4c4: 6600 0090 bnew 4d556 <pipe_read+0xe6> <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
4d4c8: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4d4cc: 6700 010a beqw 4d5d8 <pipe_read+0x168> <== NOT EXECUTED
goto out_locked;
if (LIBIO_NODELAY(iop)) {
4d4d0: 7001 moveq #1,%d0 <== NOT EXECUTED 4d4d2: c0ad 0014 andl %a5@(20),%d0 <== NOT EXECUTED 4d4d6: 6600 0110 bnew 4d5e8 <pipe_read+0x178> <== NOT EXECUTED
goto out_locked;
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
4d4da: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
ret = -EAGAIN;
goto out_locked;
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
4d4de: 52aa 0018 addql #1,%a2@(24) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d4e2: 4e94 jsr %a4@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4d4e4: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d4e6: 42a7 clrl %sp@- <== NOT EXECUTED 4d4e8: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d4ec: 4e90 jsr %a0@ <== NOT EXECUTED 4d4ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d4f2: 4a80 tstl %d0 <== NOT EXECUTED 4d4f4: 663a bnes 4d530 <pipe_read+0xc0> <== NOT EXECUTED 4d4f6: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4d4fa: 42a7 clrl %sp@- <== NOT EXECUTED 4d4fc: 42a7 clrl %sp@- <== NOT EXECUTED 4d4fe: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d502: 4e93 jsr %a3@ <== NOT EXECUTED 4d504: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d508: 4a80 tstl %d0 <== NOT EXECUTED 4d50a: 6600 00ee bnew 4d5fa <pipe_read+0x18a> <== NOT EXECUTED
/* WARN waitingReaders not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingReaders --;
4d50e: 53aa 0018 subql #1,%a2@(24) <== NOT EXECUTED
if (ret != 0)
4d512: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 4d516: 67a8 beqs 4d4c0 <pipe_read+0x50> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d518: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d51c: 4e94 jsr %a4@ <== NOT EXECUTED 4d51e: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
if (read > 0)
4d520: 4a83 tstl %d3 <== NOT EXECUTED 4d522: 6f14 bles 4d538 <pipe_read+0xc8> <== NOT EXECUTED
return read;
return ret;
}
4d524: 2003 movel %d3,%d0 <== NOT EXECUTED 4d526: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d52c: 4e5e unlk %fp <== NOT EXECUTED 4d52e: 4e75 rts <== NOT EXECUTED
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
ret = -EINTR;
4d530: 70fc moveq #-4,%d0 <== NOT EXECUTED 4d532: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 4d536: 60c2 bras 4d4fa <pipe_read+0x8a> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
return read;
return ret;
4d538: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
}
4d53c: 2003 movel %d3,%d0 <== NOT EXECUTED 4d53e: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d544: 4e5e unlk %fp <== NOT EXECUTED 4d546: 4e75 rts <== NOT EXECUTED
)
{
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4d548: 76fc moveq #-4,%d3 <== NOT EXECUTED
out_nolock:
if (read > 0)
return read;
return ret;
}
4d54a: 2003 movel %d3,%d0 <== NOT EXECUTED 4d54c: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d552: 4e5e unlk %fp <== NOT EXECUTED 4d554: 4e75 rts <== NOT EXECUTED
if (ret != 0)
goto out_locked;
}
/* Read chunk bytes */
chunk = MIN(count - read, pipe->Length);
4d556: 2004 movel %d4,%d0 <== NOT EXECUTED 4d558: 9085 subl %d5,%d0 <== NOT EXECUTED 4d55a: b081 cmpl %d1,%d0 <== NOT EXECUTED 4d55c: 6402 bccs 4d560 <pipe_read+0xf0> <== NOT EXECUTED 4d55e: 2200 movel %d0,%d1 <== NOT EXECUTED
chunk1 = pipe->Size - pipe->Start;
4d560: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 4d564: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 4d568: 91c0 subal %d0,%a0 <== NOT EXECUTED
if (chunk > chunk1) {
4d56a: b1c1 cmpal %d1,%a0 <== NOT EXECUTED 4d56c: 6d00 009c bltw 4d60a <pipe_read+0x19a> <== NOT EXECUTED
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);
4d570: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d572: d092 addl %a2@,%d0 <== NOT EXECUTED 4d574: 2246 moveal %d6,%a1 <== NOT EXECUTED 4d576: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4d57a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d57c: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED 4d580: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 4d584: 4e91 jsr %a1@ <== NOT EXECUTED 4d586: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d58a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Start += chunk;
4d58e: 2041 moveal %d1,%a0 <== NOT EXECUTED 4d590: d1ea 0008 addal %a2@(8),%a0 <== NOT EXECUTED
pipe->Start %= pipe->Size;
4d594: 2008 movel %a0,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4d596: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED 4d59a: 93c1 subal %d1,%a1 <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4d59c: 4c6a 0005 0004 remul %a2@(4),%d5,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4d5a2: 2549 000c movel %a1,%a2@(12) <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4d5a6: 2545 0008 movel %d5,%a2@(8) <== NOT EXECUTED
pipe->Length -= chunk;
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
4d5aa: 4a89 tstl %a1 <== NOT EXECUTED 4d5ac: 6604 bnes 4d5b2 <pipe_read+0x142> <== NOT EXECUTED
pipe->Start = 0;
4d5ae: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
if (pipe->waitingWriters > 0)
4d5b2: 4aaa 001c tstl %a2@(28) <== NOT EXECUTED 4d5b6: 6716 beqs 4d5ce <pipe_read+0x15e> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
4d5b8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d5bc: 2047 moveal %d7,%a0 <== NOT EXECUTED 4d5be: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d5c2: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 4d5c6: 4e90 jsr %a0@ <== NOT EXECUTED 4d5c8: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d5cc: 508f addql #8,%sp <== NOT EXECUTED
read += chunk;
4d5ce: d681 addl %d1,%d3 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4d5d0: 2a03 movel %d3,%d5 <== NOT EXECUTED 4d5d2: b883 cmpl %d3,%d4 <== NOT EXECUTED 4d5d4: 6200 feea bhiw 4d4c0 <pipe_read+0x50> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5d8: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
/* Not an error */
if (pipe->Writers == 0)
4d5dc: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5e0: 4e94 jsr %a4@ <== NOT EXECUTED 4d5e2: 588f addql #4,%sp <== NOT EXECUTED 4d5e4: 6000 ff3a braw 4d520 <pipe_read+0xb0> <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d5e8: 70f5 moveq #-11,%d0 <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5ea: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d5ee: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5f2: 4e94 jsr %a4@ <== NOT EXECUTED 4d5f4: 588f addql #4,%sp <== NOT EXECUTED 4d5f6: 6000 ff28 braw 4d520 <pipe_read+0xb0> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingReaders not restored! */
ret = -EINTR;
4d5fa: 7afc moveq #-4,%d5 <== NOT EXECUTED 4d5fc: 2d45 fff8 movel %d5,%fp@(-8) <== NOT EXECUTED
out_locked:
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
4d600: 4a83 tstl %d3 <== NOT EXECUTED 4d602: 6e00 ff20 bgtw 4d524 <pipe_read+0xb4> <== NOT EXECUTED 4d606: 6000 ff30 braw 4d538 <pipe_read+0xc8> <== NOT EXECUTED
/* Read chunk bytes */
chunk = MIN(count - read, pipe->Length);
chunk1 = pipe->Size - pipe->Start;
if (chunk > chunk1) {
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);
4d60a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d60c: d092 addl %a2@,%d0 <== NOT EXECUTED 4d60e: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d612: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d614: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED 4d618: 2246 moveal %d6,%a1 <== NOT EXECUTED 4d61a: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 4d61e: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED 4d622: 4e91 jsr %a1@ <== NOT EXECUTED
memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);
4d624: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d628: 2001 movel %d1,%d0 <== NOT EXECUTED 4d62a: 2246 moveal %d6,%a1 <== NOT EXECUTED 4d62c: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED 4d630: 9088 subl %a0,%d0 <== NOT EXECUTED 4d632: da88 addl %a0,%d5 <== NOT EXECUTED 4d634: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d636: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4d638: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4d63c: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED 4d640: 4e91 jsr %a1@ <== NOT EXECUTED 4d642: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d646: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4d64a: 6000 ff42 braw 4d58e <pipe_read+0x11e> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d64e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d652: 49f9 0004 8944 lea 48944 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4d658: 4283 clrl %d3 <== NOT EXECUTED 4d65a: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d65e: 4e94 jsr %a4@ <== NOT EXECUTED 4d660: 588f addql #4,%sp <== NOT EXECUTED 4d662: 6000 febc braw 4d520 <pipe_read+0xb0> <== NOT EXECUTED
0004cefa <pipe_release>:
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cefa: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4cefe: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cf02: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4cf06: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4cf0a: 7406 moveq #6,%d2 <== NOT EXECUTED
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
pipe_control_t *pipe = *pipep;
4cf0c: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4cf0e: c4a8 0014 andl %a0@(20),%d2 <== NOT EXECUTED
if (mode & LIBIO_FLAGS_READ)
4cf12: 0802 0001 btst #1,%d2 <== NOT EXECUTED 4cf16: 6704 beqs 4cf1c <pipe_release+0x22> <== NOT EXECUTED
pipe->Readers --;
4cf18: 53aa 0010 subql #1,%a2@(16) <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
4cf1c: 44c2 movew %d2,%ccr <== NOT EXECUTED 4cf1e: 6604 bnes 4cf24 <pipe_release+0x2a> <== NOT EXECUTED
pipe->Writers --;
4cf20: 53aa 0014 subql #1,%a2@(20) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4cf24: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4cf28: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED
if (pipe->Readers == 0 && pipe->Writers == 0) {
4cf2e: 588f addql #4,%sp <== NOT EXECUTED 4cf30: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4cf34: 672a beqs 4cf60 <pipe_release+0x66> <== NOT EXECUTED
*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)
4cf36: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4cf3a: 6616 bnes 4cf52 <pipe_release+0x58> <== NOT EXECUTED 4cf3c: 7002 moveq #2,%d0 <== NOT EXECUTED 4cf3e: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cf40: 6710 beqs 4cf52 <pipe_release+0x58> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4cf42: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cf46: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4cf4a: 4eb9 0004 ef9c jsr 4ef9c <rtems_barrier_release> <== NOT EXECUTED 4cf50: 508f addql #8,%sp <== NOT EXECUTED
pipe_unlock();
4cf52: 4eba ff90 jsr %pc@(4cee4 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cf56: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED 4cf5c: 4e5e unlk %fp <== NOT EXECUTED 4cf5e: 4e75 rts <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
pipe->Writers --;
PIPE_UNLOCK(pipe);
if (pipe->Readers == 0 && pipe->Writers == 0) {
4cf60: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4cf64: 6724 beqs 4cf8a <pipe_release+0x90> <== NOT EXECUTED
delfile = TRUE;
#endif
pipe_free(pipe);
*pipep = NULL;
}
else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)
4cf66: 7004 moveq #4,%d0 <== NOT EXECUTED 4cf68: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cf6a: 67e6 beqs 4cf52 <pipe_release+0x58> <== NOT EXECUTED
/* Notify waiting Writers that all their partners left */
PIPE_WAKEUPWRITERS(pipe);
4cf6c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cf70: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4cf74: 4eb9 0004 ef9c jsr 4ef9c <rtems_barrier_release> <== NOT EXECUTED 4cf7a: 508f addql #8,%sp <== NOT EXECUTED
else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)
PIPE_WAKEUPREADERS(pipe);
pipe_unlock();
4cf7c: 4eba ff66 jsr %pc@(4cee4 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cf80: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED 4cf86: 4e5e unlk %fp <== NOT EXECUTED 4cf88: 4e75 rts <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4cf8a: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4cf8e: 4bf9 0004 eefc lea 4eefc <rtems_barrier_delete>,%a5 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier); rtems_semaphore_delete(pipe->Semaphore); free(pipe->Buffer);
4cf94: 49f9 0004 4a90 lea 44a90 <free>,%a4 <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4cf9a: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4cf9c: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4cfa0: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4cfa2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4cfa6: 4eb9 0004 872c jsr 4872c <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4cfac: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4cfae: 4e94 jsr %a4@ <== NOT EXECUTED
free(pipe);
4cfb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cfb2: 4e94 jsr %a4@ <== NOT EXECUTED
/* To delete an anonymous pipe file when all users closed it */
if (pipe->Anonymous)
delfile = TRUE;
#endif
pipe_free(pipe);
*pipep = NULL;
4cfb4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4cfb8: 4293 clrl %a3@ <== NOT EXECUTED
/* Notify waiting Writers that all their partners left */
PIPE_WAKEUPWRITERS(pipe);
else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)
PIPE_WAKEUPREADERS(pipe);
pipe_unlock();
4cfba: 4eba ff28 jsr %pc@(4cee4 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cfbe: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED 4cfc4: 4e5e unlk %fp <== NOT EXECUTED
0004cee4 <pipe_unlock>:
return -ENOMEM;
}
}
static void pipe_unlock(void)
{
4cee4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_semaphore_release(pipe_semaphore);
4cee8: 2f39 0006 1e08 movel 61e08 <pipe_semaphore>,%sp@- <== NOT EXECUTED 4ceee: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED 4cef4: 588f addql #4,%sp <== NOT EXECUTED
#ifdef RTEMS_DEBUG
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
}
#endif
}
4cef6: 4e5e unlk %fp <== NOT EXECUTED
0004d666 <pipe_write>:
pipe_control_t *pipe,
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d666: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 4d66a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4d66e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4d672: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
int chunk, chunk1, written = 0, ret = 0;
/* Write nothing */
if (count == 0)
4d676: 660e bnes 4d686 <pipe_write+0x20> <== NOT EXECUTED
return 0;
4d678: 4282 clrl %d2 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4d67a: 2002 movel %d2,%d0 <== NOT EXECUTED 4d67c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d682: 4e5e unlk %fp <== NOT EXECUTED 4d684: 4e75 rts <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
4d686: 42a7 clrl %sp@- <== NOT EXECUTED 4d688: 47f9 0004 8804 lea 48804 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED 4d68e: 42a7 clrl %sp@- <== NOT EXECUTED 4d690: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d694: 4e93 jsr %a3@ <== NOT EXECUTED 4d696: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d69a: 4a80 tstl %d0 <== NOT EXECUTED 4d69c: 6600 00ca bnew 4d768 <pipe_write+0x102> <== NOT EXECUTED
return -EINTR;
if (pipe->Readers == 0) {
4d6a0: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d6a4: 6700 00fe beqw 4d7a4 <pipe_write+0x13e> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
4d6a8: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4d6ac: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d6ae: 6500 00d8 bcsw 4d788 <pipe_write+0x122> <== NOT EXECUTED 4d6b2: 2803 movel %d3,%d4 <== NOT EXECUTED 4d6b4: 4285 clrl %d5 <== NOT EXECUTED 4d6b6: 4282 clrl %d2 <== NOT EXECUTED 4d6b8: 49f9 0004 8944 lea 48944 <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))
4d6be: 4bf9 0004 f014 lea 4f014 <rtems_barrier_wait>,%a5 <== 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);
4d6c4: 2c3c 0005 1e5c movel #335452,%d6 <== NOT EXECUTED
/* 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) {
4d6ca: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 4d6ce: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d6d0: 91c1 subal %d1,%a0 <== NOT EXECUTED 4d6d2: b888 cmpl %a0,%d4 <== NOT EXECUTED 4d6d4: 6300 00e8 blsw 4d7be <pipe_write+0x158> <== NOT EXECUTED
if (LIBIO_NODELAY(iop)) {
4d6d8: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4d6dc: 7001 moveq #1,%d0 <== NOT EXECUTED 4d6de: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED 4d6e2: 6600 0168 bnew 4d84c <pipe_write+0x1e6> <== NOT EXECUTED
goto out_locked;
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
4d6e6: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
ret = -EAGAIN;
goto out_locked;
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
4d6ea: 52aa 001c addql #1,%a2@(28) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d6ee: 4e94 jsr %a4@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4d6f0: 42a7 clrl %sp@- <== NOT EXECUTED 4d6f2: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d6f6: 4e95 jsr %a5@ <== NOT EXECUTED 4d6f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d6fc: 4a80 tstl %d0 <== NOT EXECUTED 4d6fe: 662a bnes 4d72a <pipe_write+0xc4> <== NOT EXECUTED 4d700: 4287 clrl %d7 <== NOT EXECUTED
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4d702: 42a7 clrl %sp@- <== NOT EXECUTED 4d704: 42a7 clrl %sp@- <== NOT EXECUTED 4d706: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d70a: 4e93 jsr %a3@ <== NOT EXECUTED 4d70c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d710: 4a80 tstl %d0 <== NOT EXECUTED 4d712: 6600 0132 bnew 4d846 <pipe_write+0x1e0> <== NOT EXECUTED
/* WARN waitingWriters not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingWriters --;
4d716: 53aa 001c subql #1,%a2@(28) <== NOT EXECUTED
if (ret != 0)
4d71a: 4a87 tstl %d7 <== NOT EXECUTED 4d71c: 6612 bnes 4d730 <pipe_write+0xca> <== NOT EXECUTED
goto out_locked;
if (pipe->Readers == 0) {
4d71e: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d722: 6752 beqs 4d776 <pipe_write+0x110> <== NOT EXECUTED 4d724: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4d728: 60a0 bras 4d6ca <pipe_write+0x64> <== NOT EXECUTED
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
4d72a: 7efc moveq #-4,%d7 <== NOT EXECUTED 4d72c: 60d4 bras 4d702 <pipe_write+0x9c> <== NOT EXECUTED
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
4d72e: 4287 clrl %d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d730: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d734: 4e94 jsr %a4@ <== NOT EXECUTED 4d736: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d738: 70e0 moveq #-32,%d0 <== NOT EXECUTED 4d73a: b087 cmpl %d7,%d0 <== NOT EXECUTED 4d73c: 6714 beqs 4d752 <pipe_write+0xec> <== NOT EXECUTED
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
4d73e: 4a82 tstl %d2 <== NOT EXECUTED 4d740: 6e00 ff38 bgtw 4d67a <pipe_write+0x14> <== NOT EXECUTED 4d744: 2407 movel %d7,%d2 <== NOT EXECUTED
return written;
return ret;
}
4d746: 2002 movel %d2,%d0 <== NOT EXECUTED 4d748: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d74e: 4e5e unlk %fp <== NOT EXECUTED 4d750: 4e75 rts <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
kill(getpid(), SIGPIPE);
4d752: 4eb9 0004 e1cc jsr 4e1cc <getpid> <== NOT EXECUTED 4d758: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED 4d75c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d75e: 4eb9 0004 e4fc jsr 4e4fc <kill> <== NOT EXECUTED 4d764: 508f addql #8,%sp <== NOT EXECUTED 4d766: 60d6 bras 4d73e <pipe_write+0xd8> <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4d768: 74fc moveq #-4,%d2 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4d76a: 2002 movel %d2,%d0 <== NOT EXECUTED 4d76c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d772: 4e5e unlk %fp <== NOT EXECUTED 4d774: 4e75 rts <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d776: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe->waitingWriters --;
if (ret != 0)
goto out_locked;
if (pipe->Readers == 0) {
ret = -EPIPE;
4d77a: 7ee0 moveq #-32,%d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d77c: 4e94 jsr %a4@ <== NOT EXECUTED 4d77e: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d780: 70e0 moveq #-32,%d0 <== NOT EXECUTED 4d782: b087 cmpl %d7,%d0 <== NOT EXECUTED 4d784: 66b8 bnes 4d73e <pipe_write+0xd8> <== NOT EXECUTED 4d786: 60ca bras 4d752 <pipe_write+0xec> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
4d788: 7801 moveq #1,%d4 <== NOT EXECUTED 4d78a: 4285 clrl %d5 <== NOT EXECUTED 4d78c: 4282 clrl %d2 <== NOT EXECUTED 4d78e: 49f9 0004 8944 lea 48944 <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))
4d794: 4bf9 0004 f014 lea 4f014 <rtems_barrier_wait>,%a5 <== 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);
4d79a: 2c3c 0005 1e5c movel #335452,%d6 <== NOT EXECUTED 4d7a0: 6000 ff28 braw 4d6ca <pipe_write+0x64> <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d7a4: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d7a8: 49f9 0004 8944 lea 48944 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
if (pipe->Readers == 0) {
ret = -EPIPE;
4d7ae: 7ee0 moveq #-32,%d7 <== NOT EXECUTED
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
int chunk, chunk1, written = 0, ret = 0;
4d7b0: 4282 clrl %d2 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d7b2: 4e94 jsr %a4@ <== NOT EXECUTED 4d7b4: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d7b6: 70e0 moveq #-32,%d0 <== NOT EXECUTED 4d7b8: b087 cmpl %d7,%d0 <== NOT EXECUTED 4d7ba: 6682 bnes 4d73e <pipe_write+0xd8> <== NOT EXECUTED 4d7bc: 6094 bras 4d752 <pipe_write+0xec> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
}
chunk = MIN(count - written, PIPE_SPACE(pipe));
4d7be: 2243 moveal %d3,%a1 <== NOT EXECUTED 4d7c0: 93c5 subal %d5,%a1 <== NOT EXECUTED 4d7c2: 2808 movel %a0,%d4 <== NOT EXECUTED 4d7c4: b3c8 cmpal %a0,%a1 <== NOT EXECUTED 4d7c6: 6402 bccs 4d7ca <pipe_write+0x164> <== NOT EXECUTED 4d7c8: 2809 movel %a1,%d4 <== NOT EXECUTED
chunk1 = pipe->Size - PIPE_WSTART(pipe);
4d7ca: 2241 moveal %d1,%a1 <== NOT EXECUTED 4d7cc: d3ea 0008 addal %a2@(8),%a1 <== NOT EXECUTED 4d7d0: 2209 movel %a1,%d1 <== NOT EXECUTED 4d7d2: 4c40 1007 remul %d0,%d7,%d1 <== NOT EXECUTED 4d7d6: 2200 movel %d0,%d1 <== NOT EXECUTED 4d7d8: 2047 moveal %d7,%a0 <== NOT EXECUTED 4d7da: 9287 subl %d7,%d1 <== NOT EXECUTED
if (chunk > chunk1) {
4d7dc: b284 cmpl %d4,%d1 <== NOT EXECUTED 4d7de: 6c00 0082 bgew 4d862 <pipe_write+0x1fc> <== NOT EXECUTED
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
4d7e2: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d7e6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d7e8: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED 4d7ec: d1d2 addal %a2@,%a0 <== NOT EXECUTED 4d7ee: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 4d7f2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d7f4: 2046 moveal %d6,%a0 <== NOT EXECUTED 4d7f6: 4e90 jsr %a0@ <== NOT EXECUTED
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
4d7f8: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d7fc: 2004 movel %d4,%d0 <== NOT EXECUTED 4d7fe: 9081 subl %d1,%d0 <== NOT EXECUTED 4d800: da81 addl %d1,%d5 <== NOT EXECUTED 4d802: 2246 moveal %d6,%a1 <== NOT EXECUTED 4d804: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4d808: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d80a: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED 4d80e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4d810: 4e91 jsr %a1@ <== NOT EXECUTED 4d812: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
4d816: d9aa 000c addl %d4,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4d81a: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 4d81e: 6614 bnes 4d834 <pipe_write+0x1ce> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
written += chunk;
4d820: d484 addl %d4,%d2 <== NOT EXECUTED
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
4d822: 2a02 movel %d2,%d5 <== NOT EXECUTED 4d824: b483 cmpl %d3,%d2 <== NOT EXECUTED 4d826: 6400 ff06 bccw 4d72e <pipe_write+0xc8> <== NOT EXECUTED 4d82a: 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;
4d82e: 7801 moveq #1,%d4 <== NOT EXECUTED 4d830: 6000 fe98 braw 4d6ca <pipe_write+0x64> <== NOT EXECUTED
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
if (pipe->waitingReaders > 0)
PIPE_WAKEUPREADERS(pipe);
4d834: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d838: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d83c: 4eb9 0004 ef9c jsr 4ef9c <rtems_barrier_release> <== NOT EXECUTED 4d842: 508f addql #8,%sp <== NOT EXECUTED 4d844: 60da bras 4d820 <pipe_write+0x1ba> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingWriters not restored! */
ret = -EINTR;
4d846: 7efc moveq #-4,%d7 <== NOT EXECUTED 4d848: 6000 fef4 braw 4d73e <pipe_write+0xd8> <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d84c: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
while (PIPE_SPACE(pipe) < chunk) {
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d850: 7ef5 moveq #-11,%d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d852: 4e94 jsr %a4@ <== NOT EXECUTED 4d854: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d856: 70e0 moveq #-32,%d0 <== NOT EXECUTED 4d858: b087 cmpl %d7,%d0 <== NOT EXECUTED 4d85a: 6600 fee2 bnew 4d73e <pipe_write+0xd8> <== NOT EXECUTED 4d85e: 6000 fef2 braw 4d752 <pipe_write+0xec> <== 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);
4d862: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d866: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d868: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED 4d86c: d1d2 addal %a2@,%a0 <== NOT EXECUTED 4d86e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d870: 2046 moveal %d6,%a0 <== NOT EXECUTED 4d872: 4e90 jsr %a0@ <== NOT EXECUTED 4d874: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Length += chunk;
4d878: d9aa 000c addl %d4,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4d87c: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 4d880: 679e beqs 4d820 <pipe_write+0x1ba> <== NOT EXECUTED 4d882: 60b0 bras 4d834 <pipe_write+0x1ce> <== NOT EXECUTED
00047acc <posix_memalign>:
int posix_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
47acc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47ad0: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
47ad4: 2001 movel %d1,%d0 <== NOT EXECUTED 47ad6: 5380 subql #1,%d0 <== NOT EXECUTED
)
{
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
47ad8: 52b9 0006 5f70 addql #1,65f70 <rtems_malloc_statistics+0x8><== NOT EXECUTED
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
47ade: c081 andl %d1,%d0 <== NOT EXECUTED 47ae0: 6608 bnes 47aea <posix_memalign+0x1e> <== NOT EXECUTED 47ae2: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 47ae6: b081 cmpl %d1,%d0 <== NOT EXECUTED 47ae8: 6506 bcss 47af0 <posix_memalign+0x24> <== NOT EXECUTED
/* * rtems_memalign does all of the error checking work EXCEPT * for adding restrictionso on the alignment. */ return rtems_memalign( pointer, alignment, size ); }
47aea: 7016 moveq #22,%d0 <== NOT EXECUTED 47aec: 4e5e unlk %fp <== NOT EXECUTED 47aee: 4e75 rts <== NOT EXECUTED 47af0: 4e5e unlk %fp <== NOT EXECUTED
/*
* rtems_memalign does all of the error checking work EXCEPT
* for adding restrictionso on the alignment.
*/
return rtems_memalign( pointer, alignment, size );
47af2: 4ef9 0004 7ca4 jmp 47ca4 <rtems_memalign> <== NOT EXECUTED
00044ed4 <printk_plugin>:
int printk_plugin(
void *ignored __attribute__((unused)),
const char *format,
...
)
{
44ed4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
va_list arg_pointer;
va_start (arg_pointer, format);
vprintk( format, arg_pointer );
44ed8: 486e 0010 pea %fp@(16) <== NOT EXECUTED 44edc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 44ee0: 4eb9 0004 6cf0 jsr 46cf0 <vprintk> <== NOT EXECUTED
va_end(arg_pointer); /* clean up when done */
return 0;
}
44ee6: 4280 clrl %d0 <== NOT EXECUTED 44ee8: 4e5e unlk %fp <== NOT EXECUTED
00046230 <pthread_atfork>:
int pthread_atfork(
void (*prepare)(void) __attribute__((unused)),
void (*parent)(void) __attribute__((unused)),
void (*child)(void) __attribute__((unused))
)
{
46230: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46234: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 4623a: 7258 moveq #88,%d1 <== NOT EXECUTED 4623c: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
4623e: 70ff moveq #-1,%d0 <== NOT EXECUTED 46240: 4e5e unlk %fp <== NOT EXECUTED
void (*prepare)(void) __attribute__((unused)),
void (*parent)(void) __attribute__((unused)),
void (*child)(void) __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
46242: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
0004afac <pthread_attr_destroy>:
#include <rtems/system.h>
int pthread_attr_destroy(
pthread_attr_t *attr
)
{
4afac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4afb0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4afb4: 4a88 tstl %a0 <== NOT EXECUTED 4afb6: 670c beqs 4afc4 <pthread_attr_destroy+0x18> <== NOT EXECUTED 4afb8: 4a90 tstl %a0@ <== NOT EXECUTED 4afba: 6708 beqs 4afc4 <pthread_attr_destroy+0x18> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
4afbc: 4280 clrl %d0 <== NOT EXECUTED
}
4afbe: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->is_initialized = false;
4afc0: 4290 clrl %a0@ <== NOT EXECUTED
return 0; }
4afc2: 4e75 rts <== NOT EXECUTED
int pthread_attr_destroy(
pthread_attr_t *attr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4afc4: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
4afc6: 4e5e unlk %fp <== NOT EXECUTED
...
0004b720 <pthread_attr_getcputime>:
int pthread_attr_getcputime(
pthread_attr_t *attr,
int *clock_allowed
)
{
4b720: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b724: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b728: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !clock_allowed )
4b72c: 4a88 tstl %a0 <== NOT EXECUTED 4b72e: 6712 beqs 4b742 <pthread_attr_getcputime+0x22> <== NOT EXECUTED 4b730: 4a90 tstl %a0@ <== NOT EXECUTED 4b732: 670e beqs 4b742 <pthread_attr_getcputime+0x22> <== NOT EXECUTED 4b734: 4a89 tstl %a1 <== NOT EXECUTED 4b736: 670a beqs 4b742 <pthread_attr_getcputime+0x22> <== NOT EXECUTED
return EINVAL;
*clock_allowed = attr->cputime_clock_allowed;
4b738: 22a8 0038 movel %a0@(56),%a1@ <== NOT EXECUTED
return 0;
4b73c: 4280 clrl %d0 <== NOT EXECUTED
}
4b73e: 4e5e unlk %fp <== NOT EXECUTED 4b740: 4e75 rts <== NOT EXECUTED
pthread_attr_t *attr,
int *clock_allowed
)
{
if ( !attr || !attr->is_initialized || !clock_allowed )
return EINVAL;
4b742: 7016 moveq #22,%d0 <== NOT EXECUTED
*clock_allowed = attr->cputime_clock_allowed;
return 0;
}
4b744: 4e5e unlk %fp <== NOT EXECUTED
0004afcc <pthread_attr_getdetachstate>:
int pthread_attr_getdetachstate(
const pthread_attr_t *attr,
int *detachstate
)
{
4afcc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4afd0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4afd4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !detachstate )
4afd8: 4a88 tstl %a0 <== NOT EXECUTED 4afda: 6712 beqs 4afee <pthread_attr_getdetachstate+0x22><== NOT EXECUTED 4afdc: 4a90 tstl %a0@ <== NOT EXECUTED 4afde: 670e beqs 4afee <pthread_attr_getdetachstate+0x22><== NOT EXECUTED 4afe0: 4a89 tstl %a1 <== NOT EXECUTED 4afe2: 670a beqs 4afee <pthread_attr_getdetachstate+0x22><== NOT EXECUTED
return EINVAL;
*detachstate = attr->detachstate;
4afe4: 22a8 003c movel %a0@(60),%a1@ <== NOT EXECUTED
return 0;
4afe8: 4280 clrl %d0 <== NOT EXECUTED
}
4afea: 4e5e unlk %fp <== NOT EXECUTED 4afec: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
int *detachstate
)
{
if ( !attr || !attr->is_initialized || !detachstate )
return EINVAL;
4afee: 7016 moveq #22,%d0 <== NOT EXECUTED
*detachstate = attr->detachstate;
return 0;
}
4aff0: 4e5e unlk %fp <== NOT EXECUTED
0004aff4 <pthread_attr_getguardsize>:
int pthread_attr_getguardsize(
const pthread_attr_t *attr,
size_t *guardsize
)
{
4aff4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4aff8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4affc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !guardsize )
4b000: 4a88 tstl %a0 <== NOT EXECUTED 4b002: 6712 beqs 4b016 <pthread_attr_getguardsize+0x22> <== NOT EXECUTED 4b004: 4a90 tstl %a0@ <== NOT EXECUTED 4b006: 670e beqs 4b016 <pthread_attr_getguardsize+0x22> <== NOT EXECUTED 4b008: 4a89 tstl %a1 <== NOT EXECUTED 4b00a: 670a beqs 4b016 <pthread_attr_getguardsize+0x22> <== NOT EXECUTED
return EINVAL;
*guardsize = attr->guardsize;
4b00c: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED
return 0;
4b010: 4280 clrl %d0 <== NOT EXECUTED
}
4b012: 4e5e unlk %fp <== NOT EXECUTED 4b014: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
size_t *guardsize
)
{
if ( !attr || !attr->is_initialized || !guardsize )
return EINVAL;
4b016: 7016 moveq #22,%d0 <== NOT EXECUTED
*guardsize = attr->guardsize;
return 0;
}
4b018: 4e5e unlk %fp <== NOT EXECUTED
0004b01c <pthread_attr_getinheritsched>:
int pthread_attr_getinheritsched(
const pthread_attr_t *attr,
int *inheritsched
)
{
4b01c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b020: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b024: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !inheritsched )
4b028: 4a88 tstl %a0 <== NOT EXECUTED 4b02a: 6712 beqs 4b03e <pthread_attr_getinheritsched+0x22><== NOT EXECUTED 4b02c: 4a90 tstl %a0@ <== NOT EXECUTED 4b02e: 670e beqs 4b03e <pthread_attr_getinheritsched+0x22><== NOT EXECUTED 4b030: 4a89 tstl %a1 <== NOT EXECUTED 4b032: 670a beqs 4b03e <pthread_attr_getinheritsched+0x22><== NOT EXECUTED
return EINVAL;
*inheritsched = attr->inheritsched;
4b034: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED
return 0;
4b038: 4280 clrl %d0 <== NOT EXECUTED
}
4b03a: 4e5e unlk %fp <== NOT EXECUTED 4b03c: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
int *inheritsched
)
{
if ( !attr || !attr->is_initialized || !inheritsched )
return EINVAL;
4b03e: 7016 moveq #22,%d0 <== NOT EXECUTED
*inheritsched = attr->inheritsched;
return 0;
}
4b040: 4e5e unlk %fp <== NOT EXECUTED
0004b044 <pthread_attr_getschedparam>:
int pthread_attr_getschedparam(
const pthread_attr_t *attr,
struct sched_param *param
)
{
4b044: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b048: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4b04c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !param )
4b050: 4a89 tstl %a1 <== NOT EXECUTED 4b052: 672a beqs 4b07e <pthread_attr_getschedparam+0x3a><== NOT EXECUTED 4b054: 4a91 tstl %a1@ <== NOT EXECUTED 4b056: 6726 beqs 4b07e <pthread_attr_getschedparam+0x3a><== NOT EXECUTED 4b058: 4a88 tstl %a0 <== NOT EXECUTED 4b05a: 6722 beqs 4b07e <pthread_attr_getschedparam+0x3a><== NOT EXECUTED
return EINVAL;
*param = attr->schedparam;
4b05c: 20e9 0018 movel %a1@(24),%a0@+ <== NOT EXECUTED
return 0;
4b060: 4280 clrl %d0 <== NOT EXECUTED
}
4b062: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
*param = attr->schedparam;
4b064: 20e9 001c movel %a1@(28),%a0@+ <== NOT EXECUTED 4b068: 20e9 0020 movel %a1@(32),%a0@+ <== NOT EXECUTED 4b06c: 20e9 0024 movel %a1@(36),%a0@+ <== NOT EXECUTED 4b070: 20e9 0028 movel %a1@(40),%a0@+ <== NOT EXECUTED 4b074: 20e9 002c movel %a1@(44),%a0@+ <== NOT EXECUTED 4b078: 20a9 0030 movel %a1@(48),%a0@ <== NOT EXECUTED
return 0; }
4b07c: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
struct sched_param *param
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
4b07e: 7016 moveq #22,%d0 <== NOT EXECUTED
*param = attr->schedparam;
return 0;
}
4b080: 4e5e unlk %fp <== NOT EXECUTED
0004b084 <pthread_attr_getschedpolicy>:
int pthread_attr_getschedpolicy(
const pthread_attr_t *attr,
int *policy
)
{
4b084: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b088: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b08c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !policy )
4b090: 4a88 tstl %a0 <== NOT EXECUTED 4b092: 6712 beqs 4b0a6 <pthread_attr_getschedpolicy+0x22><== NOT EXECUTED 4b094: 4a90 tstl %a0@ <== NOT EXECUTED 4b096: 670e beqs 4b0a6 <pthread_attr_getschedpolicy+0x22><== NOT EXECUTED 4b098: 4a89 tstl %a1 <== NOT EXECUTED 4b09a: 670a beqs 4b0a6 <pthread_attr_getschedpolicy+0x22><== NOT EXECUTED
return EINVAL;
*policy = attr->schedpolicy;
4b09c: 22a8 0014 movel %a0@(20),%a1@ <== NOT EXECUTED
return 0;
4b0a0: 4280 clrl %d0 <== NOT EXECUTED
}
4b0a2: 4e5e unlk %fp <== NOT EXECUTED 4b0a4: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
int *policy
)
{
if ( !attr || !attr->is_initialized || !policy )
return EINVAL;
4b0a6: 7016 moveq #22,%d0 <== NOT EXECUTED
*policy = attr->schedpolicy;
return 0;
}
4b0a8: 4e5e unlk %fp <== NOT EXECUTED
0004b0ac <pthread_attr_getscope>:
int pthread_attr_getscope(
const pthread_attr_t *attr,
int *contentionscope
)
{
4b0ac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b0b0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b0b4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !contentionscope )
4b0b8: 4a88 tstl %a0 <== NOT EXECUTED 4b0ba: 6712 beqs 4b0ce <pthread_attr_getscope+0x22> <== NOT EXECUTED 4b0bc: 4a90 tstl %a0@ <== NOT EXECUTED 4b0be: 670e beqs 4b0ce <pthread_attr_getscope+0x22> <== NOT EXECUTED 4b0c0: 4a89 tstl %a1 <== NOT EXECUTED 4b0c2: 670a beqs 4b0ce <pthread_attr_getscope+0x22> <== NOT EXECUTED
return EINVAL;
*contentionscope = attr->contentionscope;
4b0c4: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
return 0;
4b0c8: 4280 clrl %d0 <== NOT EXECUTED
}
4b0ca: 4e5e unlk %fp <== NOT EXECUTED 4b0cc: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
int *contentionscope
)
{
if ( !attr || !attr->is_initialized || !contentionscope )
return EINVAL;
4b0ce: 7016 moveq #22,%d0 <== NOT EXECUTED
*contentionscope = attr->contentionscope;
return 0;
}
4b0d0: 4e5e unlk %fp <== NOT EXECUTED
0004b0fc <pthread_attr_getstack>:
int pthread_attr_getstack(
const pthread_attr_t *attr,
void **stackaddr,
size_t *stacksize
)
{
4b0fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b100: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b104: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b106: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4b10a: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
4b10e: 4a88 tstl %a0 <== NOT EXECUTED 4b110: 671c beqs 4b12e <pthread_attr_getstack+0x32> <== NOT EXECUTED 4b112: 4a90 tstl %a0@ <== NOT EXECUTED 4b114: 6718 beqs 4b12e <pthread_attr_getstack+0x32> <== NOT EXECUTED 4b116: 4a89 tstl %a1 <== NOT EXECUTED 4b118: 6714 beqs 4b12e <pthread_attr_getstack+0x32> <== NOT EXECUTED 4b11a: 4a8a tstl %a2 <== NOT EXECUTED 4b11c: 6710 beqs 4b12e <pthread_attr_getstack+0x32> <== NOT EXECUTED
return EINVAL;
*stackaddr = attr->stackaddr;
4b11e: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
*stacksize = attr->stacksize; return 0;
4b122: 4280 clrl %d0 <== NOT EXECUTED
{
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
return EINVAL;
*stackaddr = attr->stackaddr;
*stacksize = attr->stacksize;
4b124: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return 0; }
4b128: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4b12a: 4e5e unlk %fp <== NOT EXECUTED 4b12c: 4e75 rts <== NOT EXECUTED 4b12e: 245f moveal %sp@+,%a2 <== NOT EXECUTED
void **stackaddr,
size_t *stacksize
)
{
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
return EINVAL;
4b130: 7016 moveq #22,%d0 <== NOT EXECUTED
*stackaddr = attr->stackaddr;
*stacksize = attr->stacksize;
return 0;
}
4b132: 4e5e unlk %fp <== NOT EXECUTED
...
0004b0d4 <pthread_attr_getstackaddr>:
int pthread_attr_getstackaddr(
const pthread_attr_t *attr,
void **stackaddr
)
{
4b0d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b0d8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b0dc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stackaddr )
4b0e0: 4a88 tstl %a0 <== NOT EXECUTED 4b0e2: 6712 beqs 4b0f6 <pthread_attr_getstackaddr+0x22> <== NOT EXECUTED 4b0e4: 4a90 tstl %a0@ <== NOT EXECUTED 4b0e6: 670e beqs 4b0f6 <pthread_attr_getstackaddr+0x22> <== NOT EXECUTED 4b0e8: 4a89 tstl %a1 <== NOT EXECUTED 4b0ea: 670a beqs 4b0f6 <pthread_attr_getstackaddr+0x22> <== NOT EXECUTED
return EINVAL;
*stackaddr = attr->stackaddr;
4b0ec: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
4b0f0: 4280 clrl %d0 <== NOT EXECUTED
}
4b0f2: 4e5e unlk %fp <== NOT EXECUTED 4b0f4: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
void **stackaddr
)
{
if ( !attr || !attr->is_initialized || !stackaddr )
return EINVAL;
4b0f6: 7016 moveq #22,%d0 <== NOT EXECUTED
*stackaddr = attr->stackaddr;
return 0;
}
4b0f8: 4e5e unlk %fp <== NOT EXECUTED
0004b138 <pthread_attr_getstacksize>:
int pthread_attr_getstacksize(
const pthread_attr_t *attr,
size_t *stacksize
)
{
4b138: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b13c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b140: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stacksize )
4b144: 4a88 tstl %a0 <== NOT EXECUTED 4b146: 6712 beqs 4b15a <pthread_attr_getstacksize+0x22> <== NOT EXECUTED 4b148: 4a90 tstl %a0@ <== NOT EXECUTED 4b14a: 670e beqs 4b15a <pthread_attr_getstacksize+0x22> <== NOT EXECUTED 4b14c: 4a89 tstl %a1 <== NOT EXECUTED 4b14e: 670a beqs 4b15a <pthread_attr_getstacksize+0x22> <== NOT EXECUTED
return EINVAL;
*stacksize = attr->stacksize;
4b150: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
return 0;
4b154: 4280 clrl %d0 <== NOT EXECUTED
}
4b156: 4e5e unlk %fp <== NOT EXECUTED 4b158: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
size_t *stacksize
)
{
if ( !attr || !attr->is_initialized || !stacksize )
return EINVAL;
4b15a: 7016 moveq #22,%d0 <== NOT EXECUTED
*stacksize = attr->stacksize;
return 0;
}
4b15c: 4e5e unlk %fp <== NOT EXECUTED
0004d224 <pthread_attr_init>:
#include <rtems/posix/pthread.h>
int pthread_attr_init(
pthread_attr_t *attr
)
{
4d224: 4e56 0000 linkw %fp,#0 4d228: 202e 0008 movel %fp@(8),%d0
if ( !attr )
4d22c: 671c beqs 4d24a <pthread_attr_init+0x26> <== NEVER TAKEN
return EINVAL;
*attr = _POSIX_Threads_Default_attributes;
4d22e: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> 4d232: 4879 0005 e8d6 pea 5e8d6 <_POSIX_Threads_Default_attributes> 4d238: 2f00 movel %d0,%sp@- 4d23a: 4eb9 0005 01b8 jsr 501b8 <memcpy>
return 0;
4d240: 4fef 000c lea %sp@(12),%sp 4d244: 4280 clrl %d0
}
4d246: 4e5e unlk %fp 4d248: 4e75 rts
int pthread_attr_init(
pthread_attr_t *attr
)
{
if ( !attr )
return EINVAL;
4d24a: 7016 moveq #22,%d0 <== NOT EXECUTED
*attr = _POSIX_Threads_Default_attributes;
return 0;
}
4d24c: 4e5e unlk %fp <== NOT EXECUTED
0004bca0 <pthread_attr_setcputime>:
int pthread_attr_setcputime(
pthread_attr_t *attr,
int clock_allowed
)
{
4bca0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4bca4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4bca8: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4bcac: 4a88 tstl %a0 <== NOT EXECUTED 4bcae: 670a beqs 4bcba <pthread_attr_setcputime+0x1a> <== NOT EXECUTED 4bcb0: 4a90 tstl %a0@ <== NOT EXECUTED 4bcb2: 6706 beqs 4bcba <pthread_attr_setcputime+0x1a> <== NOT EXECUTED
return EINVAL;
switch ( clock_allowed ) {
4bcb4: 7201 moveq #1,%d1 <== NOT EXECUTED 4bcb6: b280 cmpl %d0,%d1 <== NOT EXECUTED 4bcb8: 6406 bccs 4bcc0 <pthread_attr_setcputime+0x20> <== NOT EXECUTED
case CLOCK_DISABLED:
attr->cputime_clock_allowed = clock_allowed;
return 0;
default:
return EINVAL;
4bcba: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
4bcbc: 4e5e unlk %fp <== NOT EXECUTED 4bcbe: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( clock_allowed ) {
case CLOCK_ENABLED:
case CLOCK_DISABLED:
attr->cputime_clock_allowed = clock_allowed;
4bcc0: 2140 0038 movel %d0,%a0@(56) <== NOT EXECUTED
return 0;
4bcc4: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
4bcc6: 4e5e unlk %fp <== NOT EXECUTED
...
0004b18c <pthread_attr_setdetachstate>:
int pthread_attr_setdetachstate(
pthread_attr_t *attr,
int detachstate
)
{
4b18c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b190: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b194: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b198: 4a88 tstl %a0 <== NOT EXECUTED 4b19a: 670a beqs 4b1a6 <pthread_attr_setdetachstate+0x1a><== NOT EXECUTED 4b19c: 4a90 tstl %a0@ <== NOT EXECUTED 4b19e: 6706 beqs 4b1a6 <pthread_attr_setdetachstate+0x1a><== NOT EXECUTED
return EINVAL;
switch ( detachstate ) {
4b1a0: 7201 moveq #1,%d1 <== NOT EXECUTED 4b1a2: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b1a4: 6406 bccs 4b1ac <pthread_attr_setdetachstate+0x20><== NOT EXECUTED
case PTHREAD_CREATE_JOINABLE:
attr->detachstate = detachstate;
return 0;
default:
return EINVAL;
4b1a6: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
4b1a8: 4e5e unlk %fp <== NOT EXECUTED 4b1aa: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( detachstate ) {
case PTHREAD_CREATE_DETACHED:
case PTHREAD_CREATE_JOINABLE:
attr->detachstate = detachstate;
4b1ac: 2140 003c movel %d0,%a0@(60) <== NOT EXECUTED
return 0;
4b1b0: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
4b1b2: 4e5e unlk %fp <== NOT EXECUTED
...
0004b1b8 <pthread_attr_setguardsize>:
int pthread_attr_setguardsize(
pthread_attr_t *attr,
size_t guardsize
)
{
4b1b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b1bc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b1c0: 4a88 tstl %a0 <== NOT EXECUTED 4b1c2: 6710 beqs 4b1d4 <pthread_attr_setguardsize+0x1c> <== NOT EXECUTED 4b1c4: 4a90 tstl %a0@ <== NOT EXECUTED 4b1c6: 670c beqs 4b1d4 <pthread_attr_setguardsize+0x1c> <== NOT EXECUTED
return EINVAL;
attr->guardsize = guardsize;
return 0;
4b1c8: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->guardsize = guardsize;
4b1ca: 216e 000c 0034 movel %fp@(12),%a0@(52) <== NOT EXECUTED
return 0; }
4b1d0: 4e5e unlk %fp <== NOT EXECUTED 4b1d2: 4e75 rts <== NOT EXECUTED
pthread_attr_t *attr,
size_t guardsize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b1d4: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->guardsize = guardsize;
return 0;
}
4b1d6: 4e5e unlk %fp <== NOT EXECUTED
...
0004d250 <pthread_attr_setinheritsched>:
int pthread_attr_setinheritsched(
pthread_attr_t *attr,
int inheritsched
)
{
4d250: 4e56 0000 linkw %fp,#0 4d254: 206e 0008 moveal %fp@(8),%a0 4d258: 222e 000c movel %fp@(12),%d1 4d25c: 2f02 movel %d2,%sp@-
if ( !attr || !attr->is_initialized )
4d25e: 4a88 tstl %a0
4d260: 6726 beqs 4d288 <pthread_attr_setinheritsched+0x38><== NEVER TAKEN
4d262: 4a90 tstl %a0@
4d264: 6722 beqs 4d288 <pthread_attr_setinheritsched+0x38><== NEVER TAKEN
return EINVAL;
switch ( inheritsched ) {
4d266: 2241 moveal %d1,%a1 4d268: 5389 subql #1,%a1
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
return 0;
default:
return ENOTSUP;
4d26a: 203c 0000 0086 movel #134,%d0
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( inheritsched ) {
4d270: 7401 moveq #1,%d2 4d272: b489 cmpl %a1,%d2
4d274: 6406 bccs 4d27c <pthread_attr_setinheritsched+0x2c><== ALWAYS TAKEN
return 0;
default:
return ENOTSUP;
}
}
4d276: 241f movel %sp@+,%d2 <== NOT EXECUTED 4d278: 4e5e unlk %fp <== NOT EXECUTED 4d27a: 4e75 rts <== NOT EXECUTED
4d27c: 241f movel %sp@+,%d2
switch ( inheritsched ) {
case PTHREAD_INHERIT_SCHED:
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
return 0;
4d27e: 4200 clrb %d0
default:
return ENOTSUP;
}
}
4d280: 4e5e unlk %fp
return EINVAL;
switch ( inheritsched ) {
case PTHREAD_INHERIT_SCHED:
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
4d282: 2141 0010 movel %d1,%a0@(16)
return 0;
default:
return ENOTSUP;
}
}
4d286: 4e75 rts
4d288: 241f movel %sp@+,%d2 <== NOT EXECUTED
pthread_attr_t *attr,
int inheritsched
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4d28a: 7016 moveq #22,%d0 <== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4d28c: 4e5e unlk %fp <== NOT EXECUTED
0004b21c <pthread_attr_setschedparam>:
int pthread_attr_setschedparam(
pthread_attr_t *attr,
const struct sched_param *param
)
{
4b21c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b220: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4b224: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !param )
4b228: 4a89 tstl %a1 <== NOT EXECUTED 4b22a: 672a beqs 4b256 <pthread_attr_setschedparam+0x3a><== NOT EXECUTED 4b22c: 4a91 tstl %a1@ <== NOT EXECUTED 4b22e: 6726 beqs 4b256 <pthread_attr_setschedparam+0x3a><== NOT EXECUTED 4b230: 4a88 tstl %a0 <== NOT EXECUTED 4b232: 6722 beqs 4b256 <pthread_attr_setschedparam+0x3a><== NOT EXECUTED
return EINVAL;
attr->schedparam = *param;
4b234: 2358 0018 movel %a0@+,%a1@(24) <== NOT EXECUTED
return 0;
4b238: 4280 clrl %d0 <== NOT EXECUTED
}
4b23a: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
attr->schedparam = *param;
4b23c: 2358 001c movel %a0@+,%a1@(28) <== NOT EXECUTED 4b240: 2358 0020 movel %a0@+,%a1@(32) <== NOT EXECUTED 4b244: 2358 0024 movel %a0@+,%a1@(36) <== NOT EXECUTED 4b248: 2358 0028 movel %a0@+,%a1@(40) <== NOT EXECUTED 4b24c: 2358 002c movel %a0@+,%a1@(44) <== NOT EXECUTED 4b250: 2350 0030 movel %a0@,%a1@(48) <== NOT EXECUTED
return 0; }
4b254: 4e75 rts <== NOT EXECUTED
pthread_attr_t *attr,
const struct sched_param *param
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
4b256: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->schedparam = *param;
return 0;
}
4b258: 4e5e unlk %fp <== NOT EXECUTED
0004b25c <pthread_attr_setschedpolicy>:
int pthread_attr_setschedpolicy(
pthread_attr_t *attr,
int policy
)
{
4b25c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b260: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b264: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4b268: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b26a: 4a88 tstl %a0 <== NOT EXECUTED 4b26c: 672e beqs 4b29c <pthread_attr_setschedpolicy+0x40><== NOT EXECUTED 4b26e: 4a90 tstl %a0@ <== NOT EXECUTED 4b270: 672a beqs 4b29c <pthread_attr_setschedpolicy+0x40><== NOT EXECUTED
return EINVAL;
switch ( policy ) {
4b272: 7204 moveq #4,%d1 <== NOT EXECUTED 4b274: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b276: 640c bccs 4b284 <pthread_attr_setschedpolicy+0x28><== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4b278: 241f movel %sp@+,%d2 <== NOT EXECUTED
case SCHED_SPORADIC:
attr->schedpolicy = policy;
return 0;
default:
return ENOTSUP;
4b27a: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED
} }
4b280: 4e5e unlk %fp <== NOT EXECUTED 4b282: 4e75 rts <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( policy ) {
4b284: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 4b288: 7417 moveq #23,%d2 <== NOT EXECUTED 4b28a: e1a9 lsll %d0,%d1 <== NOT EXECUTED 4b28c: c282 andl %d2,%d1 <== NOT EXECUTED 4b28e: 67e8 beqs 4b278 <pthread_attr_setschedpolicy+0x1c><== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4b290: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b292: 4e5e unlk %fp <== NOT EXECUTED
switch ( policy ) {
case SCHED_OTHER:
case SCHED_FIFO:
case SCHED_RR:
case SCHED_SPORADIC:
attr->schedpolicy = policy;
4b294: 2140 0014 movel %d0,%a0@(20) <== NOT EXECUTED
return 0;
4b298: 4280 clrl %d0 <== NOT EXECUTED
default:
return ENOTSUP;
}
}
4b29a: 4e75 rts <== NOT EXECUTED 4b29c: 241f movel %sp@+,%d2 <== NOT EXECUTED
pthread_attr_t *attr,
int policy
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b29e: 7016 moveq #22,%d0 <== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4b2a0: 4e5e unlk %fp <== NOT EXECUTED
0004b2a4 <pthread_attr_setscope>:
int pthread_attr_setscope(
pthread_attr_t *attr,
int contentionscope
)
{
4b2a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b2a8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b2ac: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 4b2b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b2b2: 4a88 tstl %a0 <== NOT EXECUTED 4b2b4: 6720 beqs 4b2d6 <pthread_attr_setscope+0x32> <== NOT EXECUTED 4b2b6: 4a90 tstl %a0@ <== NOT EXECUTED 4b2b8: 671c beqs 4b2d6 <pthread_attr_setscope+0x32> <== NOT EXECUTED
return EINVAL;
switch ( contentionscope ) {
4b2ba: 4a81 tstl %d1 <== NOT EXECUTED 4b2bc: 660c bnes 4b2ca <pthread_attr_setscope+0x26> <== NOT EXECUTED
case PTHREAD_SCOPE_PROCESS:
attr->contentionscope = contentionscope;
4b2be: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
return 0;
4b2c2: 4280 clrl %d0 <== NOT EXECUTED
return ENOTSUP;
default:
return EINVAL;
}
}
4b2c4: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b2c6: 4e5e unlk %fp <== NOT EXECUTED 4b2c8: 4e75 rts <== NOT EXECUTED
case PTHREAD_SCOPE_PROCESS:
attr->contentionscope = contentionscope;
return 0;
case PTHREAD_SCOPE_SYSTEM:
return ENOTSUP;
4b2ca: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( contentionscope ) {
4b2d0: 7401 moveq #1,%d2 <== NOT EXECUTED 4b2d2: b481 cmpl %d1,%d2 <== NOT EXECUTED 4b2d4: 67ee beqs 4b2c4 <pthread_attr_setscope+0x20> <== NOT EXECUTED
return ENOTSUP;
default:
return EINVAL;
}
}
4b2d6: 241f movel %sp@+,%d2 <== NOT EXECUTED
case PTHREAD_SCOPE_SYSTEM:
return ENOTSUP;
default:
return EINVAL;
4b2d8: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
4b2da: 4e5e unlk %fp <== NOT EXECUTED
...
0004b304 <pthread_attr_setstack>:
int pthread_attr_setstack(
pthread_attr_t *attr,
void *stackaddr,
size_t stacksize
)
{
4b304: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b308: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b30c: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b310: 4a88 tstl %a0 <== NOT EXECUTED 4b312: 672e beqs 4b342 <pthread_attr_setstack+0x3e> <== NOT EXECUTED 4b314: 4a90 tstl %a0@ <== NOT EXECUTED 4b316: 672a beqs 4b342 <pthread_attr_setstack+0x3e> <== NOT EXECUTED
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
4b318: 2039 0006 7202 movel 67202 <rtems_minimum_stack_size>,%d0 <== NOT EXECUTED 4b31e: d080 addl %d0,%d0 <== NOT EXECUTED 4b320: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b322: 6410 bccs 4b334 <pthread_attr_setstack+0x30> <== NOT EXECUTED
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
4b324: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
return 0;
4b328: 4280 clrl %d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
4b32a: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED
return 0; }
4b330: 4e5e unlk %fp <== NOT EXECUTED 4b332: 4e75 rts <== NOT EXECUTED
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
4b334: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
attr->stackaddr = stackaddr;
return 0;
4b338: 4280 clrl %d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
4b33a: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED 4b340: 60ee bras 4b330 <pthread_attr_setstack+0x2c> <== NOT EXECUTED
void *stackaddr,
size_t stacksize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b342: 7016 moveq #22,%d0 <== NOT EXECUTED
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
return 0;
}
4b344: 4e5e unlk %fp <== NOT EXECUTED
0004b2e0 <pthread_attr_setstackaddr>:
int pthread_attr_setstackaddr(
pthread_attr_t *attr,
void *stackaddr
)
{
4b2e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b2e4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b2e8: 4a88 tstl %a0 <== NOT EXECUTED 4b2ea: 6710 beqs 4b2fc <pthread_attr_setstackaddr+0x1c> <== NOT EXECUTED 4b2ec: 4a90 tstl %a0@ <== NOT EXECUTED 4b2ee: 670c beqs 4b2fc <pthread_attr_setstackaddr+0x1c> <== NOT EXECUTED
return EINVAL;
attr->stackaddr = stackaddr;
return 0;
4b2f0: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->stackaddr = stackaddr;
4b2f2: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED
return 0; }
4b2f8: 4e5e unlk %fp <== NOT EXECUTED 4b2fa: 4e75 rts <== NOT EXECUTED
pthread_attr_t *attr,
void *stackaddr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b2fc: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->stackaddr = stackaddr;
return 0;
}
4b2fe: 4e5e unlk %fp <== NOT EXECUTED
...
0004d290 <pthread_attr_setstacksize>:
int pthread_attr_setstacksize(
pthread_attr_t *attr,
size_t stacksize
)
{
4d290: 4e56 0000 linkw %fp,#0 4d294: 206e 0008 moveal %fp@(8),%a0 4d298: 222e 000c movel %fp@(12),%d1
if ( !attr || !attr->is_initialized )
4d29c: 4a88 tstl %a0
4d29e: 6724 beqs 4d2c4 <pthread_attr_setstacksize+0x34> <== NEVER TAKEN
4d2a0: 4a90 tstl %a0@
4d2a2: 6720 beqs 4d2c4 <pthread_attr_setstacksize+0x34> <== NEVER TAKEN
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
4d2a4: 2039 0005 f862 movel 5f862 <rtems_minimum_stack_size>,%d0 4d2aa: d080 addl %d0,%d0 4d2ac: b280 cmpl %d0,%d1
4d2ae: 650a bcss 4d2ba <pthread_attr_setstacksize+0x2a>
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
return 0;
4d2b0: 4280 clrl %d0
}
4d2b2: 4e5e unlk %fp
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
4d2b4: 2141 0008 movel %d1,%a0@(8)
return 0; }
4d2b8: 4e75 rts
{
if ( !attr || !attr->is_initialized )
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
4d2ba: 2140 0008 movel %d0,%a0@(8)
else
attr->stacksize = stacksize;
return 0;
4d2be: 4280 clrl %d0
}
4d2c0: 4e5e unlk %fp 4d2c2: 4e75 rts
pthread_attr_t *attr,
size_t stacksize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4d2c4: 7016 moveq #22,%d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
return 0;
}
4d2c6: 4e5e unlk %fp <== NOT EXECUTED
...
00046804 <pthread_barrier_destroy>:
*/
int pthread_barrier_destroy(
pthread_barrier_t *barrier
)
{
46804: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 46808: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_Barrier_Control *the_barrier = NULL;
Objects_Locations location;
if ( !barrier )
4680c: 4a88 tstl %a0 <== NOT EXECUTED 4680e: 6730 beqs 46840 <pthread_barrier_destroy+0x3c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get (
pthread_barrier_t *barrier,
Objects_Locations *location
)
{
return (POSIX_Barrier_Control *) _Objects_Get(
46810: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46814: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 46816: 4879 0006 1864 pea 61864 <_POSIX_Barrier_Information> <== NOT EXECUTED 4681c: 4eb9 0004 9150 jsr 49150 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_barrier = _POSIX_Barrier_Get( barrier, &location );
switch ( location ) {
46822: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46826: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4682a: 6614 bnes 46840 <pthread_barrier_destroy+0x3c> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_barrier->Barrier.number_of_waiting_threads != 0 ) {
4682c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4682e: 4aa8 0058 tstl %a0@(88) <== NOT EXECUTED 46832: 6712 beqs 46846 <pthread_barrier_destroy+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
46834: 4eb9 0004 99de jsr 499de <_Thread_Enable_dispatch> <== NOT EXECUTED
return EBUSY;
4683a: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4683c: 4e5e unlk %fp <== NOT EXECUTED 4683e: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46840: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46842: 4e5e unlk %fp <== NOT EXECUTED 46844: 4e75 rts <== NOT EXECUTED
if ( the_barrier->Barrier.number_of_waiting_threads != 0 ) {
_Thread_Enable_dispatch();
return EBUSY;
}
_Objects_Close( &_POSIX_Barrier_Information, &the_barrier->Object );
46846: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46848: 4879 0006 1864 pea 61864 <_POSIX_Barrier_Information> <== NOT EXECUTED 4684e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 46852: 4eb9 0004 8d20 jsr 48d20 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Barrier_Free (
POSIX_Barrier_Control *the_barrier
)
{
_Objects_Free( &_POSIX_Barrier_Information, &the_barrier->Object );
46858: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4685c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4685e: 4879 0006 1864 pea 61864 <_POSIX_Barrier_Information> <== NOT EXECUTED 46864: 4eb9 0004 8fe4 jsr 48fe4 <_Objects_Free> <== NOT EXECUTED
_POSIX_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4686a: 4eb9 0004 99de jsr 499de <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46870: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46874: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46876: 4e5e unlk %fp <== NOT EXECUTED
...
0004687c <pthread_barrier_init>:
int pthread_barrier_init(
pthread_barrier_t *barrier,
const pthread_barrierattr_t *attr,
unsigned int count
)
{
4687c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 46880: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 46884: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46888: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4688c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
const pthread_barrierattr_t *the_attr;
/*
* Error check parameters
*/
if ( !barrier )
46890: 4a8a tstl %a2 <== NOT EXECUTED 46892: 677a beqs 4690e <pthread_barrier_init+0x92> <== NOT EXECUTED
return EINVAL;
if ( count == 0 )
46894: 4a82 tstl %d2 <== NOT EXECUTED 46896: 6776 beqs 4690e <pthread_barrier_init+0x92> <== NOT EXECUTED
return EINVAL;
/*
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
46898: 4a83 tstl %d3 <== NOT EXECUTED 4689a: 6700 0090 beqw 4692c <pthread_barrier_init+0xb0> <== NOT EXECUTED 4689e: 2043 moveal %d3,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
468a0: 4a90 tstl %a0@ <== NOT EXECUTED 468a2: 676a beqs 4690e <pthread_barrier_init+0x92> <== NOT EXECUTED
return EINVAL;
switch ( the_attr->process_shared ) {
468a4: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 468a8: 6664 bnes 4690e <pthread_barrier_init+0x92> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
468aa: 2039 0006 1540 movel 61540 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 468b0: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* Convert from POSIX attributes to Core Barrier attributes
*/
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
468b2: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
the_attributes.maximum_count = count;
468b6: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED 468ba: 23c0 0006 1540 movel %d0,61540 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free barrier control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void )
{
return (POSIX_Barrier_Control *)
_Objects_Allocate( &_POSIX_Barrier_Information );
468c0: 4879 0006 1864 pea 61864 <_POSIX_Barrier_Information> <== NOT EXECUTED 468c6: 4eb9 0004 8c90 jsr 48c90 <_Objects_Allocate> <== NOT EXECUTED
*/
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _POSIX_Barrier_Allocate();
if ( !the_barrier ) {
468cc: 588f addql #4,%sp <== NOT EXECUTED 468ce: 2640 moveal %d0,%a3 <== NOT EXECUTED 468d0: 4a80 tstl %d0 <== NOT EXECUTED 468d2: 6746 beqs 4691a <pthread_barrier_init+0x9e> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EAGAIN;
}
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
468d4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 468d8: 486b 0010 pea %a3@(16) <== NOT EXECUTED 468dc: 4eb9 0004 8228 jsr 48228 <_CORE_barrier_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
468e2: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
468e6: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
468e8: 2079 0006 187c moveal 6187c <_POSIX_Barrier_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
468ee: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
468f0: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
468f4: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
);
/*
* Exit the critical section and return the user an operational barrier
*/
*barrier = the_barrier->Object.id;
468f8: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
468fa: 4eb9 0004 99de jsr 499de <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46900: 508f addql #8,%sp <== NOT EXECUTED 46902: 4280 clrl %d0 <== NOT EXECUTED
}
46904: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4690a: 4e5e unlk %fp <== NOT EXECUTED 4690c: 4e75 rts <== NOT EXECUTED
switch ( the_attr->process_shared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
4690e: 7016 moveq #22,%d0 <== NOT EXECUTED
* Exit the critical section and return the user an operational barrier */ *barrier = the_barrier->Object.id; _Thread_Enable_dispatch(); return 0; }
46910: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED 46916: 4e5e unlk %fp <== NOT EXECUTED 46918: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _POSIX_Barrier_Allocate();
if ( !the_barrier ) {
_Thread_Enable_dispatch();
4691a: 4eb9 0004 99de jsr 499de <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
46920: 700b moveq #11,%d0 <== NOT EXECUTED
* Exit the critical section and return the user an operational barrier */ *barrier = the_barrier->Object.id; _Thread_Enable_dispatch(); return 0; }
46922: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED 46928: 4e5e unlk %fp <== NOT EXECUTED 4692a: 4e75 rts <== NOT EXECUTED
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
the_attr = attr;
} else {
(void) pthread_barrierattr_init( &my_attr );
4692c: 260e movel %fp,%d3 <== NOT EXECUTED 4692e: 0683 ffff fff0 addil #-16,%d3 <== NOT EXECUTED 46934: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46936: 4eb9 0004 67b8 jsr 467b8 <pthread_barrierattr_init> <== NOT EXECUTED 4693c: 588f addql #4,%sp <== NOT EXECUTED
the_attr = &my_attr;
4693e: 2043 moveal %d3,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
46940: 4a90 tstl %a0@ <== NOT EXECUTED 46942: 6600 ff60 bnew 468a4 <pthread_barrier_init+0x28> <== NOT EXECUTED 46946: 60c6 bras 4690e <pthread_barrier_init+0x92> <== NOT EXECUTED
00046948 <pthread_barrier_wait>:
*/
int pthread_barrier_wait(
pthread_barrier_t *barrier
)
{
46948: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4694c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_Barrier_Control *the_barrier = NULL;
Objects_Locations location;
if ( !barrier )
46950: 4a88 tstl %a0 <== NOT EXECUTED 46952: 6752 beqs 469a6 <pthread_barrier_wait+0x5e> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get (
pthread_barrier_t *barrier,
Objects_Locations *location
)
{
return (POSIX_Barrier_Control *) _Objects_Get(
46954: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46958: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4695a: 4879 0006 1864 pea 61864 <_POSIX_Barrier_Information> <== NOT EXECUTED 46960: 4eb9 0004 9150 jsr 49150 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_barrier = _POSIX_Barrier_Get( barrier, &location );
switch ( location ) {
46966: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4696a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4696e: 6636 bnes 469a6 <pthread_barrier_wait+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
46970: 42a7 clrl %sp@- <== NOT EXECUTED 46972: 2040 moveal %d0,%a0 <== NOT EXECUTED 46974: 42a7 clrl %sp@- <== NOT EXECUTED 46976: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4697a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4697e: 4868 0010 pea %a0@(16) <== NOT EXECUTED 46982: 4eb9 0004 8264 jsr 48264 <_CORE_barrier_Wait> <== NOT EXECUTED
the_barrier->Object.id,
true,
0,
NULL
);
_Thread_Enable_dispatch();
46988: 4eb9 0004 99de jsr 499de <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4698e: 2079 0006 19d0 moveal 619d0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_Barrier_Translate_core_barrier_return_code(
46994: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 46998: 4eb9 0004 cc4c jsr 4cc4c <_POSIX_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED 4699e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
469a2: 4e5e unlk %fp <== NOT EXECUTED 469a4: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
469a6: 7016 moveq #22,%d0 <== NOT EXECUTED
}
469a8: 4e5e unlk %fp <== NOT EXECUTED
00046774 <pthread_barrierattr_destroy>:
*/
int pthread_barrierattr_destroy(
pthread_barrierattr_t *attr
)
{
46774: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46778: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
4677c: 4a88 tstl %a0 <== NOT EXECUTED 4677e: 670c beqs 4678c <pthread_barrierattr_destroy+0x18><== NOT EXECUTED 46780: 4a90 tstl %a0@ <== NOT EXECUTED 46782: 6708 beqs 4678c <pthread_barrierattr_destroy+0x18><== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
46784: 4280 clrl %d0 <== NOT EXECUTED
}
46786: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
attr->is_initialized = false;
46788: 4290 clrl %a0@ <== NOT EXECUTED
return 0; }
4678a: 4e75 rts <== NOT EXECUTED
int pthread_barrierattr_destroy(
pthread_barrierattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
4678c: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
4678e: 4e5e unlk %fp <== NOT EXECUTED
...
00046794 <pthread_barrierattr_getpshared>:
int pthread_barrierattr_getpshared(
const pthread_barrierattr_t *attr,
int *pshared
)
{
46794: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46798: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
4679c: 4a88 tstl %a0 <== NOT EXECUTED 4679e: 6712 beqs 467b2 <pthread_barrierattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
467a0: 4a90 tstl %a0@ <== NOT EXECUTED 467a2: 670e beqs 467b2 <pthread_barrierattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
467a4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
467a8: 4280 clrl %d0 <== NOT EXECUTED
}
467aa: 4e5e unlk %fp <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
*pshared = attr->process_shared;
467ac: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0; }
467b0: 4e75 rts <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
467b2: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
467b4: 4e5e unlk %fp <== NOT EXECUTED
000467b8 <pthread_barrierattr_init>:
*/
int pthread_barrierattr_init(
pthread_barrierattr_t *attr
)
{
467b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 467bc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
467c0: 4a88 tstl %a0 <== NOT EXECUTED 467c2: 670e beqs 467d2 <pthread_barrierattr_init+0x1a> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = true;
467c4: 7001 moveq #1,%d0 <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; }
467c6: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
467c8: 2080 movel %d0,%a0@ <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0;
467ca: 4280 clrl %d0 <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
467cc: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
return 0; }
467d0: 4e75 rts <== NOT EXECUTED
int pthread_barrierattr_init(
pthread_barrierattr_t *attr
)
{
if ( !attr )
return EINVAL;
467d2: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
467d4: 4e5e unlk %fp <== NOT EXECUTED
000467d8 <pthread_barrierattr_setpshared>:
int pthread_barrierattr_setpshared(
pthread_barrierattr_t *attr,
int pshared
)
{
467d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 467dc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 467e0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
467e4: 4a88 tstl %a0 <== NOT EXECUTED 467e6: 670a beqs 467f2 <pthread_barrierattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
467e8: 4a90 tstl %a0@ <== NOT EXECUTED 467ea: 6706 beqs 467f2 <pthread_barrierattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
467ec: 7201 moveq #1,%d1 <== NOT EXECUTED 467ee: b280 cmpl %d0,%d1 <== NOT EXECUTED 467f0: 6406 bccs 467f8 <pthread_barrierattr_setpshared+0x20><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
467f2: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
467f4: 4e5e unlk %fp <== NOT EXECUTED 467f6: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
467f8: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
467fc: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
467fe: 4e5e unlk %fp <== NOT EXECUTED
...
00045ec8 <pthread_cancel>:
*/
int pthread_cancel(
pthread_t thread
)
{
45ec8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
/*
* Don't even think about deleting a resource from an ISR.
*/
if ( _ISR_Is_in_progress() )
45ecc: 4ab9 0006 091c tstl 6091c <_Per_CPU_Information+0x8> <== NOT EXECUTED 45ed2: 6706 beqs 45eda <pthread_cancel+0x12> <== NOT EXECUTED
return EPROTO;
45ed4: 7047 moveq #71,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
45ed6: 4e5e unlk %fp <== NOT EXECUTED 45ed8: 4e75 rts <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
45eda: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45ede: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45ee2: 4879 0006 0658 pea 60658 <_POSIX_Threads_Information> <== NOT EXECUTED 45ee8: 4eb9 0004 81bc jsr 481bc <_Objects_Get> <== NOT EXECUTED
if ( _ISR_Is_in_progress() )
return EPROTO;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
45eee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45ef2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45ef6: 661c bnes 45f14 <pthread_cancel+0x4c> <== NOT EXECUTED
case OBJECTS_LOCAL:
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
thread_support->cancelation_requested = 1;
45ef8: 2240 moveal %d0,%a1 <== NOT EXECUTED 45efa: 7201 moveq #1,%d1 <== NOT EXECUTED 45efc: 2069 010e moveal %a1@(270),%a0 <== NOT EXECUTED 45f00: 2141 00e0 movel %d1,%a0@(224) <== NOT EXECUTED
/* This enables dispatch implicitly */
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( the_thread );
45f04: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45f06: 4eb9 0004 b9c8 jsr 4b9c8 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
return 0;
45f0c: 588f addql #4,%sp <== NOT EXECUTED 45f0e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
45f10: 4e5e unlk %fp <== NOT EXECUTED 45f12: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
45f14: 7016 moveq #22,%d0 <== NOT EXECUTED
}
45f16: 4e5e unlk %fp <== NOT EXECUTED
...
00045d3c <pthread_cleanup_pop>:
*/
void pthread_cleanup_pop(
int execute
)
{
45d3c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45d40: 2039 0006 00a4 movel 600a4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45d46: 5280 addql #1,%d0 <== NOT EXECUTED
POSIX_Cancel_Handler_control tmp_handler;
Chain_Control *handler_stack;
POSIX_API_Control *thread_support;
ISR_Level level;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
45d48: 2079 0006 0534 moveal 60534 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
void pthread_cleanup_pop(
int execute
)
{
45d4e: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 45d52: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
POSIX_Cancel_Handler_control tmp_handler;
Chain_Control *handler_stack;
POSIX_API_Control *thread_support;
ISR_Level level;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
45d56: 2068 010e moveal %a0@(270),%a0 <== NOT EXECUTED 45d5a: 23c0 0006 00a4 movel %d0,600a4 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* ensure that we do not get prempted and deleted while we are holding
* memory that needs to be freed.
*/
_Thread_Disable_dispatch();
_ISR_Disable( level );
45d60: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45d66: 40c2 movew %sr,%d2 <== NOT EXECUTED 45d68: 8082 orl %d2,%d0 <== NOT EXECUTED 45d6a: 46c0 movew %d0,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
45d6c: 43e8 00e8 lea %a0@(232),%a1 <== NOT EXECUTED
if ( _Chain_Is_empty( handler_stack ) ) {
45d70: b3e8 00e4 cmpal %a0@(228),%a1 <== NOT EXECUTED 45d74: 6748 beqs 45dbe <pthread_cleanup_pop+0x82> <== NOT EXECUTED
_Thread_Enable_dispatch();
_ISR_Enable( level );
return;
}
handler = (POSIX_Cancel_Handler_control *)
45d76: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
45d7a: 2450 moveal %a0@,%a2 <== NOT EXECUTED
previous = the_node->previous;
45d7c: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
next->previous = previous;
45d80: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous->next = next;
45d84: 228a movel %a2,%a1@ <== NOT EXECUTED
_Chain_Tail( handler_stack )->previous;
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
45d86: 46c2 movew %d2,%sr <== NOT EXECUTED 45d88: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED 45d8c: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
tmp_handler = *handler;
_Workspace_Free( handler );
45d90: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45d92: 4eb9 0004 9c0e jsr 49c0e <_Workspace_Free> <== NOT EXECUTED
_Thread_Enable_dispatch();
45d98: 4eb9 0004 8722 jsr 48722 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( execute )
45d9e: 588f addql #4,%sp <== NOT EXECUTED 45da0: 4a83 tstl %d3 <== NOT EXECUTED 45da2: 660a bnes 45dae <pthread_cleanup_pop+0x72> <== NOT EXECUTED
(*tmp_handler.routine)( tmp_handler.arg );
}
45da4: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45daa: 4e5e unlk %fp <== NOT EXECUTED 45dac: 4e75 rts <== NOT EXECUTED
_Workspace_Free( handler );
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
45dae: 2244 moveal %d4,%a1 <== NOT EXECUTED 45db0: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
45db4: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45dba: 4e5e unlk %fp <== NOT EXECUTED
_Workspace_Free( handler );
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
45dbc: 4ed1 jmp %a1@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
if ( _Chain_Is_empty( handler_stack ) ) {
_Thread_Enable_dispatch();
45dbe: 4eb9 0004 8722 jsr 48722 <_Thread_Enable_dispatch> <== NOT EXECUTED
_ISR_Enable( level );
45dc4: 46c2 movew %d2,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
}
45dc6: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45dcc: 4e5e unlk %fp <== NOT EXECUTED
000462c0 <pthread_cleanup_push>:
void pthread_cleanup_push(
void (*routine)( void * ),
void *arg
)
{
462c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 462c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 462c6: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 462ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 462cc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/* * The POSIX standard does not address what to do when the routine * is NULL. It also does not address what happens when we cannot * allocate memory or anything else bad happens. */ if ( !routine )
462d0: 6754 beqs 46326 <pthread_cleanup_push+0x66> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
462d2: 2039 0006 0ea8 movel 60ea8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 462d8: 5280 addql #1,%d0 <== NOT EXECUTED 462da: 23c0 0006 0ea8 movel %d0,60ea8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return;
_Thread_Disable_dispatch();
handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
462e0: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 462e4: 4eb9 0004 a9d2 jsr 4a9d2 <_Workspace_Allocate> <== NOT EXECUTED
if ( handler ) {
462ea: 588f addql #4,%sp <== NOT EXECUTED 462ec: 4a80 tstl %d0 <== NOT EXECUTED 462ee: 6726 beqs 46316 <pthread_cleanup_push+0x56> <== NOT EXECUTED
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
462f0: 2079 0006 1338 moveal 61338 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
handler_stack = &thread_support->Cancellation_Handlers;
462f6: 2228 010e movel %a0@(270),%d1 <== NOT EXECUTED
handler->routine = routine;
462fa: 2040 moveal %d0,%a0 <== NOT EXECUTED
handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
if ( handler ) {
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
handler_stack = &thread_support->Cancellation_Handlers;
462fc: 0681 0000 00e4 addil #228,%d1 <== NOT EXECUTED
handler->routine = routine;
46302: 2142 0008 movel %d2,%a0@(8) <== NOT EXECUTED
handler->arg = arg;
46306: 2143 000c movel %d3,%a0@(12) <== NOT EXECUTED
_Chain_Append( handler_stack, &handler->Node );
4630a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4630c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4630e: 4eb9 0004 7cdc jsr 47cdc <_Chain_Append> <== NOT EXECUTED 46314: 508f addql #8,%sp <== NOT EXECUTED
} _Thread_Enable_dispatch(); }
46316: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4631a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4631e: 4e5e unlk %fp <== NOT EXECUTED
handler->routine = routine;
handler->arg = arg;
_Chain_Append( handler_stack, &handler->Node );
}
_Thread_Enable_dispatch();
46320: 4ef9 0004 945e jmp 4945e <_Thread_Enable_dispatch> <== NOT EXECUTED
}
46326: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4632a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4632e: 4e5e unlk %fp <== NOT EXECUTED
...
0004707c <pthread_cond_broadcast>:
*/
int pthread_cond_broadcast(
pthread_cond_t *cond
)
{
4707c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Signal_support( cond, true );
47080: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 47084: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47088: 4eb9 0004 7258 jsr 47258 <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED
}
4708e: 4e5e unlk %fp <== NOT EXECUTED
...
00047094 <pthread_cond_destroy>:
*/
int pthread_cond_destroy(
pthread_cond_t *cond
)
{
47094: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47098: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
4709a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4709e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 470a2: 4eb9 0004 710c jsr 4710c <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
470a8: 508f addql #8,%sp <== NOT EXECUTED
)
{
POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
470aa: 2440 moveal %d0,%a2 <== NOT EXECUTED
switch ( location ) {
470ac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 470b0: 6620 bnes 470d2 <pthread_cond_destroy+0x3e> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_queue_First( &the_cond->Wait_queue ) ) {
470b2: 486a 0018 pea %a2@(24) <== NOT EXECUTED 470b6: 4eb9 0004 b07c jsr 4b07c <_Thread_queue_First> <== NOT EXECUTED 470bc: 588f addql #4,%sp <== NOT EXECUTED 470be: 4a80 tstl %d0 <== NOT EXECUTED 470c0: 671a beqs 470dc <pthread_cond_destroy+0x48> <== NOT EXECUTED
_Thread_Enable_dispatch();
470c2: 4eb9 0004 a8aa jsr 4a8aa <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
470c8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_queue_First( &the_cond->Wait_queue ) ) {
_Thread_Enable_dispatch();
return EBUSY;
470cc: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
470ce: 4e5e unlk %fp <== NOT EXECUTED 470d0: 4e75 rts <== NOT EXECUTED 470d2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
470d6: 7016 moveq #22,%d0 <== NOT EXECUTED
}
470d8: 4e5e unlk %fp <== NOT EXECUTED 470da: 4e75 rts <== NOT EXECUTED
if ( _Thread_queue_First( &the_cond->Wait_queue ) ) {
_Thread_Enable_dispatch();
return EBUSY;
}
_Objects_Close(
470dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470de: 4879 0006 2aac pea 62aac <_POSIX_Condition_variables_Information><== NOT EXECUTED 470e4: 4eb9 0004 9bec jsr 49bec <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Free (
POSIX_Condition_variables_Control *the_condition_variable
)
{
_Objects_Free(
470ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470ec: 4879 0006 2aac pea 62aac <_POSIX_Condition_variables_Information><== NOT EXECUTED 470f2: 4eb9 0004 9eb0 jsr 49eb0 <_Objects_Free> <== NOT EXECUTED
&_POSIX_Condition_variables_Information,
&the_cond->Object
);
_POSIX_Condition_variables_Free( the_cond );
_Thread_Enable_dispatch();
470f8: 4eb9 0004 a8aa jsr 4a8aa <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
470fe: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
&the_cond->Object
);
_POSIX_Condition_variables_Free( the_cond );
_Thread_Enable_dispatch();
return 0;
47102: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47106: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47108: 4e5e unlk %fp <== NOT EXECUTED
00047184 <pthread_cond_init>:
int pthread_cond_init(
pthread_cond_t *cond,
const pthread_condattr_t *attr
)
{
47184: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47188: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4718a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4718c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Condition_variables_Control *the_cond;
const pthread_condattr_t *the_attr;
if ( attr ) the_attr = attr;
47190: 4a8a tstl %a2 <== NOT EXECUTED 47192: 6700 0092 beqw 47226 <pthread_cond_init+0xa2> <== NOT EXECUTED
else the_attr = &_POSIX_Condition_variables_Default_attributes;
/*
* Be careful about attributes when global!!!
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
47196: 7001 moveq #1,%d0 <== NOT EXECUTED 47198: b0aa 0004 cmpl %a2@(4),%d0 <== NOT EXECUTED 4719c: 6704 beqs 471a2 <pthread_cond_init+0x1e> <== NOT EXECUTED
return EINVAL;
if ( !the_attr->is_initialized )
4719e: 4a92 tstl %a2@ <== NOT EXECUTED 471a0: 660e bnes 471b0 <pthread_cond_init+0x2c> <== NOT EXECUTED
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
471a2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
return EINVAL;
if ( !the_attr->is_initialized )
return EINVAL;
471a6: 7016 moveq #22,%d0 <== NOT EXECUTED
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
471a8: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 471ac: 4e5e unlk %fp <== NOT EXECUTED 471ae: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
471b0: 2039 0006 26fc movel 626fc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 471b6: 5280 addql #1,%d0 <== NOT EXECUTED 471b8: 23c0 0006 26fc movel %d0,626fc <_Thread_Dispatch_disable_level><== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control
*_POSIX_Condition_variables_Allocate( void )
{
return (POSIX_Condition_variables_Control *)
_Objects_Allocate( &_POSIX_Condition_variables_Information );
471be: 4879 0006 2aac pea 62aac <_POSIX_Condition_variables_Information><== NOT EXECUTED 471c4: 4eb9 0004 9b5c jsr 49b5c <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
471ca: 588f addql #4,%sp <== NOT EXECUTED 471cc: 2640 moveal %d0,%a3 <== NOT EXECUTED 471ce: 4a80 tstl %d0 <== NOT EXECUTED 471d0: 675e beqs 47230 <pthread_cond_init+0xac> <== NOT EXECUTED
_Thread_Enable_dispatch();
return ENOMEM;
}
the_cond->process_shared = the_attr->process_shared;
471d2: 276a 0004 0010 movel %a2@(4),%a3@(16) <== NOT EXECUTED
the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
471d8: 42ab 0014 clrl %a3@(20) <== NOT EXECUTED
_Thread_queue_Initialize(
471dc: 4878 0074 pea 74 <DBL_MANT_DIG+0x3f> <== NOT EXECUTED 471e0: 2f3c 1000 0800 movel #268437504,%sp@- <== NOT EXECUTED 471e6: 42a7 clrl %sp@- <== NOT EXECUTED 471e8: 486b 0018 pea %a3@(24) <== NOT EXECUTED 471ec: 4eb9 0004 b120 jsr 4b120 <_Thread_queue_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
471f2: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
471f6: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
471f8: 2079 0006 2ac4 moveal 62ac4 <_POSIX_Condition_variables_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
471fe: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47200: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
&_POSIX_Condition_variables_Information,
&the_cond->Object,
0
);
*cond = the_cond->Object.id;
47204: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
47208: 42ab 000c clrl %a3@(12) <== NOT EXECUTED 4720c: 2080 movel %d0,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4720e: 4eb9 0004 a8aa jsr 4a8aa <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
47214: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
47218: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4721c: 4280 clrl %d0 <== NOT EXECUTED
}
4721e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 47222: 4e5e unlk %fp <== NOT EXECUTED 47224: 4e75 rts <== NOT EXECUTED
{
POSIX_Condition_variables_Control *the_cond;
const pthread_condattr_t *the_attr;
if ( attr ) the_attr = attr;
else the_attr = &_POSIX_Condition_variables_Default_attributes;
47226: 45f9 0005 feb6 lea 5feb6 <_POSIX_Condition_variables_Default_attributes>,%a2<== NOT EXECUTED 4722c: 6000 ff68 braw 47196 <pthread_cond_init+0x12> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
_Thread_Enable_dispatch();
47230: 4eb9 0004 a8aa jsr 4a8aa <_Thread_Enable_dispatch> <== NOT EXECUTED
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
47236: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
_Thread_Enable_dispatch();
return ENOMEM;
4723a: 700c moveq #12,%d0 <== NOT EXECUTED
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
4723c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 47240: 4e5e unlk %fp <== NOT EXECUTED
00047244 <pthread_cond_signal>:
*/
int pthread_cond_signal(
pthread_cond_t *cond
)
{
47244: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Signal_support( cond, false );
47248: 42a7 clrl %sp@- <== NOT EXECUTED 4724a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4724e: 4eb9 0004 7258 jsr 47258 <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED
}
47254: 4e5e unlk %fp <== NOT EXECUTED
000472c0 <pthread_cond_timedwait>:
int pthread_cond_timedwait(
pthread_cond_t *cond,
pthread_mutex_t *mutex,
const struct timespec *abstime
)
{
472c0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
* is valid or not. If it isn't correct and in the future, * then we do a polling operation and convert the UNSATISFIED * status into the appropriate error. */ already_timedout = false; status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks);
472c4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 472c8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 472cc: 4eb9 0004 77c8 jsr 477c8 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
472d2: 508f addql #8,%sp <== NOT EXECUTED 472d4: 4a80 tstl %d0 <== NOT EXECUTED 472d6: 6728 beqs 47300 <pthread_cond_timedwait+0x40> <== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
already_timedout = true;
return _POSIX_Condition_variables_Wait_support(
472d8: 7201 moveq #1,%d1 <== NOT EXECUTED
already_timedout = false;
status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks);
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
472da: 5380 subql #1,%d0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
already_timedout = true;
return _POSIX_Condition_variables_Wait_support(
472dc: b280 cmpl %d0,%d1 <== NOT EXECUTED 472de: 54c0 scc %d0 <== NOT EXECUTED 472e0: 49c0 extbl %d0 <== NOT EXECUTED 472e2: 4480 negl %d0 <== NOT EXECUTED 472e4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 472e6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 472ea: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 472ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 472f2: 4eb9 0004 7324 jsr 47324 <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED 472f8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
cond,
mutex,
ticks,
already_timedout
);
}
472fc: 4e5e unlk %fp <== NOT EXECUTED 472fe: 4e75 rts <== NOT EXECUTED
* status into the appropriate error.
*/
already_timedout = false;
status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks);
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
47300: 7016 moveq #22,%d0 <== NOT EXECUTED
cond,
mutex,
ticks,
already_timedout
);
}
47302: 4e5e unlk %fp <== NOT EXECUTED
...
00047308 <pthread_cond_wait>:
int pthread_cond_wait(
pthread_cond_t *cond,
pthread_mutex_t *mutex
)
{
47308: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Wait_support(
4730c: 42a7 clrl %sp@- <== NOT EXECUTED 4730e: 42a7 clrl %sp@- <== NOT EXECUTED 47310: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47314: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47318: 4eb9 0004 7324 jsr 47324 <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED
cond,
mutex,
THREAD_QUEUE_WAIT_FOREVER,
false
);
}
4731e: 4e5e unlk %fp <== NOT EXECUTED
...
00046fe4 <pthread_condattr_destroy>:
*/
int pthread_condattr_destroy(
pthread_condattr_t *attr
)
{
46fe4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fe8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
46fec: 4a88 tstl %a0 <== NOT EXECUTED 46fee: 670c beqs 46ffc <pthread_condattr_destroy+0x18> <== NOT EXECUTED 46ff0: 4a90 tstl %a0@ <== NOT EXECUTED 46ff2: 6708 beqs 46ffc <pthread_condattr_destroy+0x18> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
46ff4: 4280 clrl %d0 <== NOT EXECUTED
}
46ff6: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
attr->is_initialized = false;
46ff8: 4290 clrl %a0@ <== NOT EXECUTED
return 0; }
46ffa: 4e75 rts <== NOT EXECUTED
int pthread_condattr_destroy(
pthread_condattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
46ffc: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
46ffe: 4e5e unlk %fp <== NOT EXECUTED
...
00047004 <pthread_condattr_getpshared>:
int pthread_condattr_getpshared(
const pthread_condattr_t *attr,
int *pshared
)
{
47004: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47008: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
4700c: 4a88 tstl %a0 <== NOT EXECUTED 4700e: 670e beqs 4701e <pthread_condattr_getpshared+0x1a><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
47010: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
47014: 4280 clrl %d0 <== NOT EXECUTED
}
47016: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
*pshared = attr->process_shared;
47018: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0; }
4701c: 4e75 rts <== NOT EXECUTED
const pthread_condattr_t *attr,
int *pshared
)
{
if ( !attr )
return EINVAL;
4701e: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
47020: 4e5e unlk %fp <== NOT EXECUTED
00047024 <pthread_condattr_init>:
*/
int pthread_condattr_init(
pthread_condattr_t *attr
)
{
47024: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47028: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4702c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !attr )
4702e: 4a88 tstl %a0 <== NOT EXECUTED 47030: 671a beqs 4704c <pthread_condattr_init+0x28> <== NOT EXECUTED
return EINVAL;
*attr = _POSIX_Condition_variables_Default_attributes;
return 0;
47032: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
*attr = _POSIX_Condition_variables_Default_attributes;
47034: 2239 0005 feb6 movel 5feb6 <_POSIX_Condition_variables_Default_attributes>,%d1<== NOT EXECUTED 4703a: 2439 0005 feba movel 5feba <_POSIX_Condition_variables_Default_attributes+0x4>,%d2<== NOT EXECUTED 47040: 2081 movel %d1,%a0@ <== NOT EXECUTED 47042: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
return 0; }
47046: 241f movel %sp@+,%d2 <== NOT EXECUTED 47048: 4e5e unlk %fp <== NOT EXECUTED 4704a: 4e75 rts <== NOT EXECUTED 4704c: 241f movel %sp@+,%d2 <== NOT EXECUTED
int pthread_condattr_init(
pthread_condattr_t *attr
)
{
if ( !attr )
return EINVAL;
4704e: 7016 moveq #22,%d0 <== NOT EXECUTED
*attr = _POSIX_Condition_variables_Default_attributes;
return 0;
}
47050: 4e5e unlk %fp <== NOT EXECUTED
00047054 <pthread_condattr_setpshared>:
int pthread_condattr_setpshared(
pthread_condattr_t *attr,
int pshared
)
{
47054: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47058: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4705c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
47060: 4a88 tstl %a0 <== NOT EXECUTED 47062: 6706 beqs 4706a <pthread_condattr_setpshared+0x16><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
47064: 7201 moveq #1,%d1 <== NOT EXECUTED 47066: b280 cmpl %d0,%d1 <== NOT EXECUTED 47068: 6406 bccs 47070 <pthread_condattr_setpshared+0x1c><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
4706a: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
4706c: 4e5e unlk %fp <== NOT EXECUTED 4706e: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
47070: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
47074: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
47076: 4e5e unlk %fp <== NOT EXECUTED
...
00046750 <pthread_create>:
pthread_t *thread,
const pthread_attr_t *attr,
void *(*start_routine)( void * ),
void *arg
)
{
46750: 4e56 ff9c linkw %fp,#-100 46754: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 46758: 246e 000c moveal %fp@(12),%a2 4675c: 262e 0010 movel %fp@(16),%d3
int schedpolicy = SCHED_RR;
struct sched_param schedparam;
Objects_Name name;
int rc;
if ( !start_routine )
46760: 6700 01fc beqw 4695e <pthread_create+0x20e>
return EFAULT;
the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;
46764: 4a8a tstl %a2
46766: 6738 beqs 467a0 <pthread_create+0x50> <== NEVER TAKEN
if ( !the_attr->is_initialized )
46768: 4a92 tstl %a2@
4676a: 6726 beqs 46792 <pthread_create+0x42> <== NEVER TAKEN
* stack space if it is allowed to allocate it itself. * * NOTE: If the user provides the stack we will let it drop below * twice the minimum. */ if ( the_attr->stackaddr && !_Stack_Is_enough(the_attr->stacksize) )
4676c: 4aaa 0004 tstl %a2@(4)
46770: 670c beqs 4677e <pthread_create+0x2e> <== ALWAYS TAKEN
46772: 2039 0005 f862 movel 5f862 <rtems_minimum_stack_size>,%d0 <== NOT EXECUTED 46778: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED 4677c: 6214 bhis 46792 <pthread_create+0x42> <== NOT EXECUTED
* If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread
* inherits scheduling attributes from the creating thread. If it is
* PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
* attributes structure.
*/
switch ( the_attr->inheritsched ) {
4677e: 202a 0010 movel %a2@(16),%d0 46782: 7201 moveq #1,%d1 46784: b280 cmpl %d0,%d1 46786: 6700 0176 beqw 468fe <pthread_create+0x1ae> 4678a: 123c 0002 moveb #2,%d1 4678e: b280 cmpl %d0,%d1
46790: 6716 beqs 467a8 <pthread_create+0x58> <== ALWAYS TAKEN
/*
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
return EINVAL;
46792: 7416 moveq #22,%d2 <== NOT EXECUTED
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
46794: 2002 movel %d2,%d0 <== NOT EXECUTED 46796: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4679c: 4e5e unlk %fp <== NOT EXECUTED 4679e: 4e75 rts <== NOT EXECUTED
int rc;
if ( !start_routine )
return EFAULT;
the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;
467a0: 45f9 0005 e8d6 lea 5e8d6 <_POSIX_Threads_Default_attributes>,%a2<== NOT EXECUTED 467a6: 60c0 bras 46768 <pthread_create+0x18> <== NOT EXECUTED
schedpolicy = api->schedpolicy;
schedparam = api->schedparam;
break;
case PTHREAD_EXPLICIT_SCHED:
schedpolicy = the_attr->schedpolicy;
467a8: 226a 0014 moveal %a2@(20),%a1
schedparam = the_attr->schedparam;
467ac: 2e0e movel %fp,%d7 467ae: 2c0e movel %fp,%d6 467b0: 0687 ffff ffe0 addil #-32,%d7 467b6: 0686 ffff ffe4 addil #-28,%d6 467bc: 2047 moveal %d7,%a0 467be: 2a0e movel %fp,%d5 467c0: 280e movel %fp,%d4 467c2: 0685 ffff ffe8 addil #-24,%d5 467c8: 0684 ffff ffec addil #-20,%d4 467ce: 47ee ffdc lea %fp@(-36),%a3 467d2: 4bee fff0 lea %fp@(-16),%a5 467d6: 49ee fff4 lea %fp@(-12),%a4
schedpolicy = api->schedpolicy;
schedparam = api->schedparam;
break;
case PTHREAD_EXPLICIT_SCHED:
schedpolicy = the_attr->schedpolicy;
467da: 2d49 ffd8 movel %a1,%fp@(-40)
schedparam = the_attr->schedparam;
467de: 2246 moveal %d6,%a1 467e0: 20aa 001c movel %a2@(28),%a0@ 467e4: 2045 moveal %d5,%a0 467e6: 22aa 0020 movel %a2@(32),%a1@ 467ea: 2244 moveal %d4,%a1 467ec: 26aa 0018 movel %a2@(24),%a3@ 467f0: 20aa 0024 movel %a2@(36),%a0@ 467f4: 22aa 0028 movel %a2@(40),%a1@ 467f8: 2aaa 002c movel %a2@(44),%a5@ 467fc: 28aa 0030 movel %a2@(48),%a4@
/*
* Check the contentionscope since rtems only supports PROCESS wide
* contention (i.e. no system wide contention).
*/
if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )
return ENOTSUP;
46800: 243c 0000 0086 movel #134,%d2
/*
* Check the contentionscope since rtems only supports PROCESS wide
* contention (i.e. no system wide contention).
*/
if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )
46806: 4aaa 000c tstl %a2@(12)
4680a: 6688 bnes 46794 <pthread_create+0x44> <== NEVER TAKEN
return ENOTSUP;
/*
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
4680c: 2f2e ffdc movel %fp@(-36),%sp@- 46810: 4eb9 0004 d128 jsr 4d128 <_POSIX_Priority_Is_valid> 46816: 588f addql #4,%sp 46818: 4a00 tstb %d0 4681a: 6700 ff76 beqw 46792 <pthread_create+0x42>
core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
4681e: 486e fff8 pea %fp@(-8) 46822: 486e fffc pea %fp@(-4)
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
return EINVAL;
core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
46826: 202e ffdc movel %fp@(-36),%d0
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
4682a: 2f0b movel %a3,%sp@- 4682c: 2f2e ffd8 movel %fp@(-40),%sp@-
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
46830: 1239 0005 f866 moveb 5f866 <rtems_maximum_priority>,%d1
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
return EINVAL;
core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
46836: 2d40 ffd4 movel %d0,%fp@(-44) 4683a: 1d41 ffd3 moveb %d1,%fp@(-45)
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
4683e: 4eb9 0004 d14c jsr 4d14c <_POSIX_Thread_Translate_sched_param>
schedpolicy,
&schedparam,
&budget_algorithm,
&budget_callout
);
if ( rc )
46844: 4fef 0010 lea %sp@(16),%sp
core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
46848: 2400 movel %d0,%d2
schedpolicy,
&schedparam,
&budget_algorithm,
&budget_callout
);
if ( rc )
4684a: 6600 ff48 bnew 46794 <pthread_create+0x44>
#endif
/*
* Lock the allocator mutex for protection
*/
_RTEMS_Lock_allocator();
4684e: 2f39 0006 118e movel 6118e <_RTEMS_Allocator_Mutex>,%sp@- 46854: 4eb9 0004 8274 jsr 48274 <_API_Mutex_Lock>
* _POSIX_Threads_Allocate
*/
RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void )
{
return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information );
4685a: 4879 0006 12b4 pea 612b4 <_POSIX_Threads_Information> 46860: 4eb9 0004 8d3c jsr 48d3c <_Objects_Allocate>
* Allocate the thread control block.
*
* NOTE: Global threads are not currently supported.
*/
the_thread = _POSIX_Threads_Allocate();
if ( !the_thread ) {
46866: 508f addql #8,%sp 46868: 2040 moveal %d0,%a0 4686a: 4a80 tstl %d0 4686c: 6700 01d4 beqw 46a42 <pthread_create+0x2f2>
/*
* Initialize the core thread for this task.
*/
name.name_p = NULL; /* posix threads don't have a name by default */
status = _Thread_Initialize(
46870: 222e fffc movel %fp@(-4),%d1
static inline size_t _POSIX_Threads_Ensure_minimum_stack (
size_t size
)
{
if ( size >= PTHREAD_MINIMUM_STACK_SIZE )
46874: 2039 0005 f862 movel 5f862 <rtems_minimum_stack_size>,%d0
/*
* Initialize the core thread for this task.
*/
name.name_p = NULL; /* posix threads don't have a name by default */
status = _Thread_Initialize(
4687a: 2d41 ffce movel %d1,%fp@(-50) 4687e: 226e fff8 moveal %fp@(-8),%a1
static inline size_t _POSIX_Threads_Ensure_minimum_stack (
size_t size
)
{
if ( size >= PTHREAD_MINIMUM_STACK_SIZE )
46882: d080 addl %d0,%d0
/*
* Initialize the core thread for this task.
*/
name.name_p = NULL; /* posix threads don't have a name by default */
status = _Thread_Initialize(
46884: 222a 0008 movel %a2@(8),%d1 46888: b280 cmpl %d0,%d1
4688a: 6302 blss 4688e <pthread_create+0x13e>
4688c: 2001 movel %d1,%d0 4688e: 42a7 clrl %sp@- 46890: 4281 clrl %d1 46892: 122e ffd3 moveb %fp@(-45),%d1 46896: 92ae ffd4 subl %fp@(-44),%d1 4689a: 42a7 clrl %sp@- 4689c: 2f09 movel %a1,%sp@- 4689e: 2f2e ffce movel %fp@(-50),%sp@- 468a2: 4878 0001 pea 1 <ADD> 468a6: 2f01 movel %d1,%sp@- 468a8: 4878 0001 pea 1 <ADD> 468ac: 2f00 movel %d0,%sp@- 468ae: 2f2a 0004 movel %a2@(4),%sp@- 468b2: 2f08 movel %a0,%sp@- 468b4: 4879 0006 12b4 pea 612b4 <_POSIX_Threads_Information> 468ba: 2d48 ffca movel %a0,%fp@(-54) 468be: 4eb9 0004 9b48 jsr 49b48 <_Thread_Initialize>
budget_callout,
0, /* isr level */
name /* posix threads don't have a name */
);
if ( !status ) {
468c4: 206e ffca moveal %fp@(-54),%a0 468c8: 4fef 002c lea %sp@(44),%sp 468cc: 4a00 tstb %d0 468ce: 6600 009c bnew 4696c <pthread_create+0x21c>
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (
Thread_Control *the_pthread
)
{
_Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object );
468d2: 2f08 movel %a0,%sp@- 468d4: 4879 0006 12b4 pea 612b4 <_POSIX_Threads_Information>
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
return EAGAIN;
468da: 740b moveq #11,%d2 468dc: 4eb9 0004 9090 jsr 49090 <_Objects_Free>
name /* posix threads don't have a name */
);
if ( !status ) {
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
468e2: 2f39 0006 118e movel 6118e <_RTEMS_Allocator_Mutex>,%sp@- 468e8: 4eb9 0004 82d4 jsr 482d4 <_API_Mutex_Unlock>
return EAGAIN;
468ee: 4fef 000c lea %sp@(12),%sp
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
468f2: 2002 movel %d2,%d0 468f4: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 468fa: 4e5e unlk %fp 468fc: 4e75 rts
* PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
* attributes structure.
*/
switch ( the_attr->inheritsched ) {
case PTHREAD_INHERIT_SCHED:
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
468fe: 2079 0006 157c moveal 6157c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
schedpolicy = api->schedpolicy;
schedparam = api->schedparam;
46904: 47ee ffdc lea %fp@(-36),%a3 <== NOT EXECUTED 46908: 2e0e movel %fp,%d7 <== NOT EXECUTED 4690a: 0687 ffff ffe0 addil #-32,%d7 <== NOT EXECUTED 46910: 2247 moveal %d7,%a1 <== NOT EXECUTED 46912: 2c0e movel %fp,%d6 <== NOT EXECUTED 46914: 0686 ffff ffe4 addil #-28,%d6 <== NOT EXECUTED 4691a: 2a0e movel %fp,%d5 <== NOT EXECUTED 4691c: 0685 ffff ffe8 addil #-24,%d5 <== NOT EXECUTED 46922: 280e movel %fp,%d4 <== NOT EXECUTED 46924: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED 4692a: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED 4692e: 49ee fff4 lea %fp@(-12),%a4 <== NOT EXECUTED
* PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
* attributes structure.
*/
switch ( the_attr->inheritsched ) {
case PTHREAD_INHERIT_SCHED:
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
46932: 2028 010e movel %a0@(270),%d0 <== NOT EXECUTED
schedpolicy = api->schedpolicy;
schedparam = api->schedparam;
46936: 2040 moveal %d0,%a0 <== NOT EXECUTED 46938: 41e8 0088 lea %a0@(136),%a0 <== NOT EXECUTED 4693c: 2698 movel %a0@+,%a3@ <== NOT EXECUTED 4693e: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46940: 2246 moveal %d6,%a1 <== NOT EXECUTED 46942: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46944: 2245 moveal %d5,%a1 <== NOT EXECUTED 46946: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 46948: 2244 moveal %d4,%a1 <== NOT EXECUTED 4694a: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 4694c: 2a98 movel %a0@+,%a5@ <== NOT EXECUTED 4694e: 2890 movel %a0@,%a4@ <== NOT EXECUTED
* attributes structure.
*/
switch ( the_attr->inheritsched ) {
case PTHREAD_INHERIT_SCHED:
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
schedpolicy = api->schedpolicy;
46950: 2040 moveal %d0,%a0 <== NOT EXECUTED 46952: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED 46956: 2d40 ffd8 movel %d0,%fp@(-40) <== NOT EXECUTED
schedparam = api->schedparam;
break;
4695a: 6000 fea4 braw 46800 <pthread_create+0xb0> <== NOT EXECUTED
struct sched_param schedparam;
Objects_Name name;
int rc;
if ( !start_routine )
return EFAULT;
4695e: 740e moveq #14,%d2
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
46960: 2002 movel %d2,%d0 46962: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 46968: 4e5e unlk %fp 4696a: 4e75 rts
}
/*
* finish initializing the per API structure
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4696c: 2268 010e moveal %a0@(270),%a1
api->Attributes = *the_attr;
46970: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> 46974: 2f0a movel %a2,%sp@- 46976: 2d48 ffca movel %a0,%fp@(-54) 4697a: 2f09 movel %a1,%sp@- 4697c: 2d49 ffc6 movel %a1,%fp@(-58) 46980: 4eb9 0005 01b8 jsr 501b8 <memcpy>
api->detachstate = the_attr->detachstate;
46986: 226e ffc6 moveal %fp@(-58),%a1 4698a: 236a 003c 0040 movel %a2@(60),%a1@(64)
api->schedpolicy = schedpolicy; api->schedparam = schedparam;
46990: 45e9 0088 lea %a1@(136),%a2 46994: 24d3 movel %a3@,%a2@+ 46996: 2647 moveal %d7,%a3 46998: 24d3 movel %a3@,%a2@+ 4699a: 2646 moveal %d6,%a3 4699c: 24d3 movel %a3@,%a2@+ 4699e: 2645 moveal %d5,%a3 469a0: 24d3 movel %a3@,%a2@+ 469a2: 2644 moveal %d4,%a3 469a4: 24d3 movel %a3@,%a2@+ 469a6: 24d5 movel %a5@,%a2@+
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
api->Attributes = *the_attr;
api->detachstate = the_attr->detachstate;
api->schedpolicy = schedpolicy;
469a8: 202e ffd8 movel %fp@(-40),%d0
api->schedparam = schedparam;
469ac: 2494 movel %a4@,%a2@
/*
* POSIX threads are allocated and started in one operation.
*/
status = _Thread_Start(
469ae: 206e ffca moveal %fp@(-54),%a0
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
api->Attributes = *the_attr;
api->detachstate = the_attr->detachstate;
api->schedpolicy = schedpolicy;
469b2: 2340 0084 movel %d0,%a1@(132)
api->schedparam = schedparam;
/*
* POSIX threads are allocated and started in one operation.
*/
status = _Thread_Start(
469b6: 42a7 clrl %sp@- 469b8: 2f2e 0014 movel %fp@(20),%sp@- 469bc: 2f03 movel %d3,%sp@- 469be: 4878 0001 pea 1 <ADD> 469c2: 2f08 movel %a0,%sp@- 469c4: 4eb9 0004 a6cc jsr 4a6cc <_Thread_Start>
_RTEMS_Unlock_allocator();
return EINVAL;
}
#endif
if ( schedpolicy == SCHED_SPORADIC ) {
469ca: 206e ffca moveal %fp@(-54),%a0 469ce: 4fef 0020 lea %sp@(32),%sp 469d2: 7204 moveq #4,%d1 469d4: 226e ffc6 moveal %fp@(-58),%a1 469d8: b2ae ffd8 cmpl %fp@(-40),%d1
469dc: 6722 beqs 46a00 <pthread_create+0x2b0> <== NEVER TAKEN
}
/*
* Return the id and indicate we successfully created the thread
*/
*thread = the_thread->Object.id;
469de: 226e 0008 moveal %fp@(8),%a1 469e2: 22a8 0008 movel %a0@(8),%a1@
_RTEMS_Unlock_allocator();
469e6: 2f39 0006 118e movel 6118e <_RTEMS_Allocator_Mutex>,%sp@- 469ec: 4eb9 0004 82d4 jsr 482d4 <_API_Mutex_Unlock>
return 0;
469f2: 588f addql #4,%sp
}
469f4: 2002 movel %d2,%d0 469f6: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 469fc: 4e5e unlk %fp 469fe: 4e75 rts
return EINVAL;
}
#endif
if ( schedpolicy == SCHED_SPORADIC ) {
_Watchdog_Insert_ticks(
46a00: 4869 0090 pea %a1@(144) <== NOT EXECUTED 46a04: 4eb9 0004 aa14 jsr 4aa14 <_Timespec_To_ticks> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46a0a: 226e ffc6 moveal %fp@(-58),%a1 <== NOT EXECUTED 46a0e: 2340 00b4 movel %d0,%a1@(180) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46a12: 4869 00a8 pea %a1@(168) <== NOT EXECUTED 46a16: 4879 0006 11ae pea 611ae <_Watchdog_Ticks_chain> <== NOT EXECUTED 46a1c: 4eb9 0004 ad70 jsr 4ad70 <_Watchdog_Insert> <== NOT EXECUTED 46a22: 206e ffca moveal %fp@(-54),%a0 <== NOT EXECUTED 46a26: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
/*
* Return the id and indicate we successfully created the thread
*/
*thread = the_thread->Object.id;
46a2a: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 46a2e: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
_RTEMS_Unlock_allocator();
46a32: 2f39 0006 118e movel 6118e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46a38: 4eb9 0004 82d4 jsr 482d4 <_API_Mutex_Unlock> <== NOT EXECUTED
return 0;
46a3e: 588f addql #4,%sp <== NOT EXECUTED 46a40: 60b2 bras 469f4 <pthread_create+0x2a4> <== NOT EXECUTED
*
* NOTE: Global threads are not currently supported.
*/
the_thread = _POSIX_Threads_Allocate();
if ( !the_thread ) {
_RTEMS_Unlock_allocator();
46a42: 2f39 0006 118e movel 6118e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
return EAGAIN;
46a48: 143c 000b moveb #11,%d2 <== NOT EXECUTED
*
* NOTE: Global threads are not currently supported.
*/
the_thread = _POSIX_Threads_Allocate();
if ( !the_thread ) {
_RTEMS_Unlock_allocator();
46a4c: 4eb9 0004 82d4 jsr 482d4 <_API_Mutex_Unlock> <== NOT EXECUTED
return EAGAIN;
46a52: 588f addql #4,%sp <== NOT EXECUTED
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
46a54: 2002 movel %d2,%d0 <== NOT EXECUTED 46a56: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED 46a5c: 4e5e unlk %fp <== NOT EXECUTED
00046774 <pthread_detach>:
#include <rtems/posix/pthread.h>
int pthread_detach(
pthread_t thread
)
{
46774: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
46778: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4677c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46780: 4879 0006 1da4 pea 61da4 <_POSIX_Threads_Information> <== NOT EXECUTED 46786: 4eb9 0004 8d64 jsr 48d64 <_Objects_Get> <== NOT EXECUTED
register Thread_Control *the_thread;
POSIX_API_Control *api;
Objects_Locations location;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
4678c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46790: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46794: 6616 bnes 467ac <pthread_detach+0x38> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
api->detachstate = PTHREAD_CREATE_DETACHED;
46796: 2240 moveal %d0,%a1 <== NOT EXECUTED 46798: 2069 010e moveal %a1@(270),%a0 <== NOT EXECUTED 4679c: 42a8 0040 clrl %a0@(64) <== NOT EXECUTED
_Thread_Enable_dispatch();
467a0: 4eb9 0004 95f2 jsr 495f2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
467a6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
467a8: 4e5e unlk %fp <== NOT EXECUTED 467aa: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
467ac: 7003 moveq #3,%d0 <== NOT EXECUTED
}
467ae: 4e5e unlk %fp <== NOT EXECUTED
...
00046a60 <pthread_equal>:
int pthread_equal(
pthread_t t1,
pthread_t t2
)
{
46a60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* can to insure that both ids are valid. Otherwise, we will do the
* cheapest possible thing to determine if they are equal.
*/
#ifndef RTEMS_DEBUG
return _Objects_Are_ids_equal( t1, t2 );
46a64: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 46a68: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 46a6c: 57c0 seq %d0 <== NOT EXECUTED
break;
}
return status;
#endif
}
46a6e: 4e5e unlk %fp <== NOT EXECUTED
* can to insure that both ids are valid. Otherwise, we will do the
* cheapest possible thing to determine if they are equal.
*/
#ifndef RTEMS_DEBUG
return _Objects_Are_ids_equal( t1, t2 );
46a70: 49c0 extbl %d0 <== NOT EXECUTED
break;
}
return status;
#endif
}
46a72: 4480 negl %d0 <== NOT EXECUTED
...
0004e394 <pthread_exit>:
}
void pthread_exit(
void *value_ptr
)
{
4e394: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_Thread_Exit( _Thread_Executing, value_ptr );
4e398: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e39c: 2f39 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4e3a2: 4eb9 0004 e324 jsr 4e324 <_POSIX_Thread_Exit> <== NOT EXECUTED 4e3a8: 508f addql #8,%sp <== NOT EXECUTED
}
4e3aa: 4e5e unlk %fp <== NOT EXECUTED
...
00046248 <pthread_getcpuclockid>:
int pthread_getcpuclockid(
pthread_t pid,
clockid_t *clock_id
)
{
46248: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4624c: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 46252: 7258 moveq #88,%d1 <== NOT EXECUTED 46254: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46256: 70ff moveq #-1,%d0 <== NOT EXECUTED 46258: 4e5e unlk %fp <== NOT EXECUTED
int pthread_getcpuclockid(
pthread_t pid,
clockid_t *clock_id
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4625a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00048be4 <pthread_getschedparam>:
int pthread_getschedparam(
pthread_t thread,
int *policy,
struct sched_param *param
)
{
48be4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 48be8: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 48bec: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 48bf0: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
Objects_Locations location;
POSIX_API_Control *api;
register Thread_Control *the_thread;
if ( !policy || !param )
48bf4: 4a8b tstl %a3 <== NOT EXECUTED 48bf6: 676e beqs 48c66 <pthread_getschedparam+0x82> <== NOT EXECUTED 48bf8: 4a8a tstl %a2 <== NOT EXECUTED 48bfa: 676a beqs 48c66 <pthread_getschedparam+0x82> <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
48bfc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48c00: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48c04: 4879 0006 51b4 pea 651b4 <_POSIX_Threads_Information> <== NOT EXECUTED 48c0a: 4eb9 0004 b280 jsr 4b280 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
48c10: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48c14: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48c18: 6640 bnes 48c5a <pthread_getschedparam+0x76> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
48c1a: 2040 moveal %d0,%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
48c1c: 4281 clrl %d1 <== NOT EXECUTED 48c1e: 2868 010e moveal %a0@(270),%a4 <== NOT EXECUTED
if ( policy )
*policy = api->schedpolicy;
if ( param ) {
*param = api->schedparam;
48c22: 204a moveal %a2,%a0 <== NOT EXECUTED 48c24: 43ec 0088 lea %a4@(136),%a1 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( policy )
*policy = api->schedpolicy;
48c28: 26ac 0084 movel %a4@(132),%a3@ <== NOT EXECUTED 48c2c: 1239 0006 3706 moveb 63706 <rtems_maximum_priority>,%d1 <== NOT EXECUTED
if ( param ) {
*param = api->schedparam;
48c32: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c34: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c36: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c38: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c3a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c3c: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 48c3e: 2091 movel %a1@,%a0@ <== NOT EXECUTED 48c40: 2040 moveal %d0,%a0 <== NOT EXECUTED 48c42: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED 48c46: 2481 movel %d1,%a2@ <== NOT EXECUTED
param->sched_priority =
_POSIX_Priority_From_core( the_thread->current_priority );
}
_Thread_Enable_dispatch();
48c48: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
break;
}
return ESRCH;
}
48c4e: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED
*param = api->schedparam;
param->sched_priority =
_POSIX_Priority_From_core( the_thread->current_priority );
}
_Thread_Enable_dispatch();
return 0;
48c54: 4280 clrl %d0 <== NOT EXECUTED
break;
}
return ESRCH;
}
48c56: 4e5e unlk %fp <== NOT EXECUTED 48c58: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
48c5a: 7003 moveq #3,%d0 <== NOT EXECUTED
}
48c5c: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 48c62: 4e5e unlk %fp <== NOT EXECUTED 48c64: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
POSIX_API_Control *api;
register Thread_Control *the_thread;
if ( !policy || !param )
return EINVAL;
48c66: 7016 moveq #22,%d0 <== NOT EXECUTED
break;
}
return ESRCH;
}
48c68: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 48c6e: 4e5e unlk %fp <== NOT EXECUTED
...
00046550 <pthread_getspecific>:
*/
void *pthread_getspecific(
pthread_key_t key
)
{
46550: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 46554: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46556: 2f02 movel %d2,%sp@- <== NOT EXECUTED
pthread_key_t id,
Objects_Locations *location
)
{
return (POSIX_Keys_Control *)
_Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location );
46558: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4655c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46560: 4879 0006 1fc2 pea 61fc2 <_POSIX_Keys_Information> <== NOT EXECUTED 46566: 4eb9 0004 8e48 jsr 48e48 <_Objects_Get> <== NOT EXECUTED
uint32_t index;
Objects_Locations location;
void *key_data;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
4656c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46570: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46574: 6640 bnes 465b6 <pthread_getspecific+0x66> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
46576: 2079 0006 20dc moveal 620dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
4657c: 7618 moveq #24,%d3 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
key_data = (void *) the_key->Values[ api ][ index ];
4657e: 2240 moveal %d0,%a1 <== NOT EXECUTED
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
46580: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED 46584: 2202 movel %d2,%d1 <== NOT EXECUTED 46586: e6a9 lsrl %d3,%d1 <== NOT EXECUTED 46588: 163c 0007 moveb #7,%d3 <== NOT EXECUTED 4658c: c283 andl %d3,%d1 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
4658e: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
key_data = (void *) the_key->Values[ api ][ index ];
46594: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED 46598: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
4659c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 465a0: 4eb9 0004 96d6 jsr 496d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return key_data;
465a6: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return NULL;
}
465aa: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 465ae: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 465b2: 4e5e unlk %fp <== NOT EXECUTED 465b4: 4e75 rts <== NOT EXECUTED 465b6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return NULL;
465ba: 4280 clrl %d0 <== NOT EXECUTED
}
465bc: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 465c0: 4e5e unlk %fp <== NOT EXECUTED
0004b864 <pthread_join>:
int pthread_join(
pthread_t thread,
void **value_ptr
)
{
4b864: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4b868: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b86a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4b86e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4b872: 4879 0006 8ca0 pea 68ca0 <_POSIX_Threads_Information> <== NOT EXECUTED 4b878: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4b87c: 4eb9 0004 dec0 jsr 4dec0 <_Objects_Get> <== NOT EXECUTED
POSIX_API_Control *api;
Objects_Locations location;
void *return_pointer;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
4b882: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b886: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4b88a: 670a beqs 4b896 <pthread_join+0x32> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b88c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
4b890: 7003 moveq #3,%d0 <== NOT EXECUTED
}
4b892: 4e5e unlk %fp <== NOT EXECUTED 4b894: 4e75 rts <== NOT EXECUTED
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4b896: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b898: 2069 010e moveal %a1@(270),%a0 <== NOT EXECUTED
if ( api->detachstate == PTHREAD_CREATE_DETACHED ) {
4b89c: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED 4b8a0: 6746 beqs 4b8e8 <pthread_join+0x84> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (
const Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Executing );
4b8a2: 2279 0006 8f68 moveal 68f68 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
_Thread_Enable_dispatch();
return EINVAL;
}
if ( _Thread_Is_executing( the_thread ) ) {
4b8a8: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 4b8aa: 674c beqs 4b8f8 <pthread_join+0x94> <== NOT EXECUTED
/*
* Put ourself on the threads join list
*/
_Thread_Executing->Wait.return_argument = &return_pointer;
4b8ac: 200e movel %fp,%d0 <== NOT EXECUTED 4b8ae: 5180 subql #8,%d0 <== NOT EXECUTED 4b8b0: 2340 0028 movel %d0,%a1@(40) <== NOT EXECUTED
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;
4b8b4: 7001 moveq #1,%d0 <== NOT EXECUTED 4b8b6: 2140 0074 movel %d0,%a0@(116) <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &api->Join_List );
_Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT );
4b8ba: 4879 0004 f068 pea 4f068 <_Thread_queue_Timeout> <== NOT EXECUTED 4b8c0: 42a7 clrl %sp@- <== NOT EXECUTED 4b8c2: 4868 0044 pea %a0@(68) <== NOT EXECUTED 4b8c6: 4eb9 0004 eca0 jsr 4eca0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
4b8cc: 4eb9 0004 e74e jsr 4e74e <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( value_ptr )
4b8d2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b8d6: 4a8a tstl %a2 <== NOT EXECUTED 4b8d8: 672e beqs 4b908 <pthread_join+0xa4> <== NOT EXECUTED
*value_ptr = return_pointer;
4b8da: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED
return 0;
4b8de: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8e0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4b8e4: 4e5e unlk %fp <== NOT EXECUTED 4b8e6: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( api->detachstate == PTHREAD_CREATE_DETACHED ) {
_Thread_Enable_dispatch();
4b8e8: 4eb9 0004 e74e jsr 4e74e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8ee: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( api->detachstate == PTHREAD_CREATE_DETACHED ) {
_Thread_Enable_dispatch();
return EINVAL;
4b8f2: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8f4: 4e5e unlk %fp <== NOT EXECUTED 4b8f6: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return EINVAL;
}
if ( _Thread_Is_executing( the_thread ) ) {
_Thread_Enable_dispatch();
4b8f8: 4eb9 0004 e74e jsr 4e74e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8fe: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
return EINVAL;
}
if ( _Thread_Is_executing( the_thread ) ) {
_Thread_Enable_dispatch();
return EDEADLK;
4b902: 702d moveq #45,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b904: 4e5e unlk %fp <== NOT EXECUTED 4b906: 4e75 rts <== NOT EXECUTED 4b908: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( value_ptr )
*value_ptr = return_pointer;
return 0;
4b90c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b90e: 4e5e unlk %fp <== NOT EXECUTED
...
000463cc <pthread_key_create>:
int pthread_key_create(
pthread_key_t *key,
void (*destructor)( void * )
)
{
463cc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 463d0: 2039 0006 1c4c movel 61c4c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 463d6: 5280 addql #1,%d0 <== NOT EXECUTED 463d8: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 463dc: 23c0 0006 1c4c movel %d0,61c4c <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free keys control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void )
{
return (POSIX_Keys_Control *) _Objects_Allocate( &_POSIX_Keys_Information );
463e2: 4879 0006 1fc2 pea 61fc2 <_POSIX_Keys_Information> <== NOT EXECUTED 463e8: 4eb9 0004 8988 jsr 48988 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_key = _POSIX_Keys_Allocate();
if ( !the_key ) {
463ee: 588f addql #4,%sp <== NOT EXECUTED 463f0: 2840 moveal %d0,%a4 <== NOT EXECUTED 463f2: 4a80 tstl %d0 <== NOT EXECUTED 463f4: 677e beqs 46474 <pthread_key_create+0xa8> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EAGAIN;
}
the_key->destructor = destructor;
463f6: 45f9 0006 1c0c lea 61c0c <_Objects_Information_table+0x4>,%a2<== NOT EXECUTED
int _EXFUN(pthread_once,
(pthread_once_t *__once_control, void (*__init_routine)(void)));
/* Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163 */
int _EXFUN(pthread_key_create,
463fc: 47ec 0018 lea %a4@(24),%a3 <== NOT EXECUTED 46400: 4bf9 0004 acde lea 4acde <_Workspace_Allocate>,%a5 <== NOT EXECUTED 46406: 296e 000c 0010 movel %fp@(12),%a4@(16) <== NOT EXECUTED
_Thread_Enable_dispatch();
return ENOMEM;
}
the_key->Values[ the_api ] = table;
memset( table, '\0', bytes_to_allocate );
4640c: 263c 0005 004c movel #327756,%d3 <== NOT EXECUTED
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY
);
#endif
bytes_to_allocate = sizeof( void * ) *
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
46412: 205a moveal %a2@+,%a0 <== NOT EXECUTED 46414: 4282 clrl %d2 <== NOT EXECUTED 46416: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 4641a: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED
* APIs are optional.
*
* NOTE: Currently RTEMS Classic API tasks are always enabled.
*/
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) {
the_key->Values[ the_api ] = NULL;
4641e: 4293 clrl %a3@ <== NOT EXECUTED
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY
);
#endif
bytes_to_allocate = sizeof( void * ) *
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
46420: 5282 addql #1,%d2 <== NOT EXECUTED
true,
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY
);
#endif
bytes_to_allocate = sizeof( void * ) *
46422: e58a lsll #2,%d2 <== NOT EXECUTED
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
table = _Workspace_Allocate( bytes_to_allocate );
46424: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46426: 4e95 jsr %a5@ <== NOT EXECUTED
if ( !table ) {
46428: 588f addql #4,%sp <== NOT EXECUTED 4642a: 4a80 tstl %d0 <== NOT EXECUTED 4642c: 6758 beqs 46486 <pthread_key_create+0xba> <== NOT EXECUTED
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
return ENOMEM;
}
the_key->Values[ the_api ] = table;
4642e: 26c0 movel %d0,%a3@+ <== NOT EXECUTED
memset( table, '\0', bytes_to_allocate );
46430: 2043 moveal %d3,%a0 <== NOT EXECUTED 46432: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46434: 42a7 clrl %sp@- <== NOT EXECUTED 46436: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46438: 4e90 jsr %a0@ <== NOT EXECUTED
* This is a bit more complex than one might initially expect because
* APIs are optional.
*
* NOTE: Currently RTEMS Classic API tasks are always enabled.
*/
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) {
4643a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4643e: b5fc 0006 1c18 cmpal #400408,%a2 <== NOT EXECUTED 46444: 66cc bnes 46412 <pthread_key_create+0x46> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46446: 202c 0008 movel %a4@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
4644a: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4644c: 2079 0006 1fda moveal 61fda <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46452: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46454: 218c 1c00 movel %a4,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
the_key->Values[ the_api ] = table;
memset( table, '\0', bytes_to_allocate );
}
_Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 );
*key = the_key->Object.id;
46458: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
4645c: 42ac 000c clrl %a4@(12) <== NOT EXECUTED 46460: 2080 movel %d0,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
46462: 4eb9 0004 96d6 jsr 496d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
46468: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
}
_Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 );
*key = the_key->Object.id;
_Thread_Enable_dispatch();
return 0;
4646e: 4280 clrl %d0 <== NOT EXECUTED
}
46470: 4e5e unlk %fp <== NOT EXECUTED 46472: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
the_key = _POSIX_Keys_Allocate();
if ( !the_key ) {
_Thread_Enable_dispatch();
46474: 4eb9 0004 96d6 jsr 496d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
4647a: 700b moveq #11,%d0 <== NOT EXECUTED
_Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 );
*key = the_key->Object.id;
_Thread_Enable_dispatch();
return 0;
}
4647c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 46482: 4e5e unlk %fp <== NOT EXECUTED 46484: 4e75 rts <== NOT EXECUTED
bytes_to_allocate = sizeof( void * ) *
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
table = _Workspace_Allocate( bytes_to_allocate );
if ( !table ) {
_POSIX_Keys_Free_memory( the_key );
46486: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46488: 4eb9 0004 651c jsr 4651c <_POSIX_Keys_Free_memory> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free (
POSIX_Keys_Control *the_key
)
{
_Objects_Free( &_POSIX_Keys_Information, &the_key->Object );
4648e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46490: 4879 0006 1fc2 pea 61fc2 <_POSIX_Keys_Information> <== NOT EXECUTED 46496: 4eb9 0004 8cdc jsr 48cdc <_Objects_Free> <== NOT EXECUTED
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
4649c: 4eb9 0004 96d6 jsr 496d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return ENOMEM;
464a2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 464a6: 700c moveq #12,%d0 <== NOT EXECUTED
_Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 );
*key = the_key->Object.id;
_Thread_Enable_dispatch();
return 0;
}
464a8: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 464ae: 4e5e unlk %fp <== NOT EXECUTED
...
000464b4 <pthread_key_delete>:
* 17.1.3 Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167
*/
int pthread_key_delete(
pthread_key_t key
)
{
464b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 464b8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
pthread_key_t id,
Objects_Locations *location
)
{
return (POSIX_Keys_Control *)
_Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location );
464ba: 486e fffc pea %fp@(-4) <== NOT EXECUTED 464be: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 464c2: 4879 0006 1fc2 pea 61fc2 <_POSIX_Keys_Information> <== NOT EXECUTED 464c8: 4eb9 0004 8e48 jsr 48e48 <_Objects_Get> <== NOT EXECUTED
POSIX_Keys_Control *the_key;
Objects_Locations location;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
464ce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 464d2: 2400 movel %d0,%d2 <== NOT EXECUTED 464d4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 464d8: 6638 bnes 46512 <pthread_key_delete+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_POSIX_Keys_Information, &the_key->Object );
464da: 2f00 movel %d0,%sp@- <== NOT EXECUTED 464dc: 4879 0006 1fc2 pea 61fc2 <_POSIX_Keys_Information> <== NOT EXECUTED 464e2: 4eb9 0004 8a18 jsr 48a18 <_Objects_Close> <== NOT EXECUTED
_POSIX_Keys_Free_memory( the_key );
464e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 464ea: 4eb9 0004 651c jsr 4651c <_POSIX_Keys_Free_memory> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free (
POSIX_Keys_Control *the_key
)
{
_Objects_Free( &_POSIX_Keys_Information, &the_key->Object );
464f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 464f2: 4879 0006 1fc2 pea 61fc2 <_POSIX_Keys_Information> <== NOT EXECUTED 464f8: 4eb9 0004 8cdc jsr 48cdc <_Objects_Free> <== NOT EXECUTED
/*
* NOTE: The destructor is not called and it is the responsibility
* of the application to free the memory.
*/
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
464fe: 4eb9 0004 96d6 jsr 496d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46504: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
* NOTE: The destructor is not called and it is the responsibility
* of the application to free the memory.
*/
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
return 0;
46508: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4650c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4650e: 4e5e unlk %fp <== NOT EXECUTED 46510: 4e75 rts <== NOT EXECUTED 46512: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46516: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46518: 4e5e unlk %fp <== NOT EXECUTED
0005c53c <pthread_kill>:
int pthread_kill(
pthread_t thread,
int sig
)
{
5c53c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 5c540: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 5c544: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
POSIX_API_Control *api;
Thread_Control *the_thread;
Objects_Locations location;
if ( !sig )
5c548: 6700 0098 beqw 5c5e2 <pthread_kill+0xa6> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
5c54c: 2602 movel %d2,%d3 <== NOT EXECUTED 5c54e: 5383 subql #1,%d3 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
5c550: 701f moveq #31,%d0 <== NOT EXECUTED 5c552: b083 cmpl %d3,%d0 <== NOT EXECUTED 5c554: 6500 008c bcsw 5c5e2 <pthread_kill+0xa6> <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
5c558: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5c55c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5c560: 4879 0005 fe54 pea 5fe54 <_POSIX_Threads_Information> <== NOT EXECUTED 5c566: 4eb9 0004 7dd8 jsr 47dd8 <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
5c56c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c570: 2440 moveal %d0,%a2 <== NOT EXECUTED 5c572: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5c576: 6600 0082 bnew 5c5fa <pthread_kill+0xbe> <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( sig ) {
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {
5c57a: 2202 movel %d2,%d1 <== NOT EXECUTED 5c57c: 2002 movel %d2,%d0 <== NOT EXECUTED 5c57e: e589 lsll #2,%d1 <== NOT EXECUTED 5c580: e988 lsll #4,%d0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* If sig == 0 then just validate arguments
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5c582: 206a 010e moveal %a2@(270),%a0 <== NOT EXECUTED
if ( sig ) {
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {
5c586: 9081 subl %d1,%d0 <== NOT EXECUTED 5c588: 0680 0006 0132 addil #393522,%d0 <== NOT EXECUTED 5c58e: 7201 moveq #1,%d1 <== NOT EXECUTED 5c590: 2240 moveal %d0,%a1 <== NOT EXECUTED 5c592: b291 cmpl %a1@,%d1 <== NOT EXECUTED 5c594: 6728 beqs 5c5be <pthread_kill+0x82> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
5c596: 7001 moveq #1,%d0 <== NOT EXECUTED 5c598: e7a8 lsll %d3,%d0 <== NOT EXECUTED
return 0;
}
/* XXX critical section */
api->signals_pending |= signo_to_mask( sig );
5c59a: 81a8 00d4 orl %d0,%a0@(212) <== NOT EXECUTED
(void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
5c59e: 42a7 clrl %sp@- <== NOT EXECUTED 5c5a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c5a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c5a4: 4eb9 0005 c400 jsr 5c400 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
5c5aa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c5ae: 4ab9 0006 0118 tstl 60118 <_Per_CPU_Information+0x8> <== NOT EXECUTED 5c5b4: 6708 beqs 5c5be <pthread_kill+0x82> <== NOT EXECUTED 5c5b6: b5f9 0006 011c cmpal 6011c <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 5c5bc: 6712 beqs 5c5d0 <pthread_kill+0x94> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
_Thread_Enable_dispatch();
5c5be: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c5c4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
}
5c5c6: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 5c5cc: 4e5e unlk %fp <== NOT EXECUTED 5c5ce: 4e75 rts <== NOT EXECUTED
api->signals_pending |= signo_to_mask( sig );
(void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
5c5d0: 7001 moveq #1,%d0 <== NOT EXECUTED 5c5d2: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
5c5d8: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c5de: 4280 clrl %d0 <== NOT EXECUTED 5c5e0: 60e4 bras 5c5c6 <pthread_kill+0x8a> <== NOT EXECUTED
if ( !sig )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
rtems_set_errno_and_return_minus_one( EINVAL );
5c5e2: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5c5e8: 7416 moveq #22,%d2 <== NOT EXECUTED 5c5ea: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c5ec: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c5ee: 2082 movel %d2,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
}
5c5f0: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 5c5f6: 4e5e unlk %fp <== NOT EXECUTED 5c5f8: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
5c5fa: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5c600: 7203 moveq #3,%d1 <== NOT EXECUTED 5c602: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c604: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
5c606: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
5c60c: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
5c60e: 4e5e unlk %fp <== NOT EXECUTED
...
00048260 <pthread_mutex_destroy>:
*/
int pthread_mutex_destroy(
pthread_mutex_t *mutex
)
{
48260: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48264: 2f0a movel %a2,%sp@- <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
48266: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4826a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4826e: 4eb9 0004 82e0 jsr 482e0 <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
48274: 508f addql #8,%sp <== NOT EXECUTED
)
{
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
48276: 2440 moveal %d0,%a2 <== NOT EXECUTED
switch ( location ) {
48278: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4827c: 670a beqs 48288 <pthread_mutex_destroy+0x28> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4827e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
48282: 7016 moveq #22,%d0 <== NOT EXECUTED
}
48284: 4e5e unlk %fp <== NOT EXECUTED 48286: 4e75 rts <== NOT EXECUTED
/*
* XXX: There is an error for the mutex being locked
* or being in use by a condition variable.
*/
if ( _CORE_mutex_Is_locked( &the_mutex->Mutex ) ) {
48288: 4aaa 0062 tstl %a2@(98) <== NOT EXECUTED 4828c: 6610 bnes 4829e <pthread_mutex_destroy+0x3e> <== NOT EXECUTED
_Thread_Enable_dispatch();
4828e: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
48294: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
* or being in use by a condition variable.
*/
if ( _CORE_mutex_Is_locked( &the_mutex->Mutex ) ) {
_Thread_Enable_dispatch();
return EBUSY;
48298: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4829a: 4e5e unlk %fp <== NOT EXECUTED 4829c: 4e75 rts <== NOT EXECUTED
if ( _CORE_mutex_Is_locked( &the_mutex->Mutex ) ) {
_Thread_Enable_dispatch();
return EBUSY;
}
_Objects_Close( &_POSIX_Mutex_Information, &the_mutex->Object );
4829e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 482a0: 4879 0006 52d6 pea 652d6 <_POSIX_Mutex_Information> <== NOT EXECUTED 482a6: 4eb9 0004 ae50 jsr 4ae50 <_Objects_Close> <== NOT EXECUTED
_CORE_mutex_Flush( &the_mutex->Mutex, NULL, EINVAL );
482ac: 4878 0016 pea 16 <OPER2+0x2> <== NOT EXECUTED 482b0: 42a7 clrl %sp@- <== NOT EXECUTED 482b2: 486a 0014 pea %a2@(20) <== NOT EXECUTED 482b6: 4eb9 0004 a390 jsr 4a390 <_CORE_mutex_Flush> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Mutex_Free (
POSIX_Mutex_Control *the_mutex
)
{
_Objects_Free( &_POSIX_Mutex_Information, &the_mutex->Object );
482bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 482be: 4879 0006 52d6 pea 652d6 <_POSIX_Mutex_Information> <== NOT EXECUTED 482c4: 4eb9 0004 b114 jsr 4b114 <_Objects_Free> <== NOT EXECUTED
_POSIX_Mutex_Free( the_mutex );
_Thread_Enable_dispatch();
482ca: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
482d0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_CORE_mutex_Flush( &the_mutex->Mutex, NULL, EINVAL );
_POSIX_Mutex_Free( the_mutex );
_Thread_Enable_dispatch();
return 0;
482d4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 482d8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
482da: 4e5e unlk %fp <== NOT EXECUTED
...
000483d4 <pthread_mutex_getprioceiling>:
int pthread_mutex_getprioceiling(
pthread_mutex_t *mutex,
int *prioceiling
)
{
483d4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 483d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 483da: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
if ( !prioceiling )
483de: 4a8a tstl %a2 <== NOT EXECUTED 483e0: 6736 beqs 48418 <pthread_mutex_getprioceiling+0x44><== NOT EXECUTED
return EINVAL;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
483e2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 483e6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 483ea: 4eb9 0004 82e0 jsr 482e0 <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
483f0: 508f addql #8,%sp <== NOT EXECUTED 483f2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 483f6: 6620 bnes 48418 <pthread_mutex_getprioceiling+0x44><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
483f8: 4281 clrl %d1 <== NOT EXECUTED 483fa: 1239 0006 3706 moveb 63706 <rtems_maximum_priority>,%d1 <== NOT EXECUTED 48400: 2040 moveal %d0,%a0 <== NOT EXECUTED 48402: 92a8 005e subl %a0@(94),%d1 <== NOT EXECUTED 48406: 2481 movel %d1,%a2@ <== NOT EXECUTED
case OBJECTS_LOCAL:
*prioceiling = _POSIX_Priority_From_core(
the_mutex->Mutex.Attributes.priority_ceiling
);
_Thread_Enable_dispatch();
48408: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4840e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
*prioceiling = _POSIX_Priority_From_core(
the_mutex->Mutex.Attributes.priority_ceiling
);
_Thread_Enable_dispatch();
return 0;
48412: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
48414: 4e5e unlk %fp <== NOT EXECUTED 48416: 4e75 rts <== NOT EXECUTED 48418: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4841c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4841e: 4e5e unlk %fp <== NOT EXECUTED
...
00048424 <pthread_mutex_init>:
int pthread_mutex_init(
pthread_mutex_t *mutex,
const pthread_mutexattr_t *attr
)
{
48424: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 48428: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 4842c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 48430: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Mutex_Control *the_mutex;
CORE_mutex_Attributes *the_mutex_attr;
const pthread_mutexattr_t *the_attr;
CORE_mutex_Disciplines the_discipline;
if ( attr ) the_attr = attr;
48434: 4a8a tstl %a2 <== NOT EXECUTED 48436: 6700 00f6 beqw 4852e <pthread_mutex_init+0x10a> <== NOT EXECUTED
else the_attr = &_POSIX_Mutex_Default_attributes;
/* Check for NULL mutex */
if ( !mutex )
4843a: 4a8b tstl %a3 <== NOT EXECUTED 4843c: 6700 00e4 beqw 48522 <pthread_mutex_init+0xfe> <== NOT EXECUTED
}
}
}
#endif
if ( !the_attr->is_initialized )
48440: 4a92 tstl %a2@ <== NOT EXECUTED 48442: 6700 00de beqw 48522 <pthread_mutex_init+0xfe> <== NOT EXECUTED
return EINVAL;
/*
* We only support process private mutexes.
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
48446: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4844a: 7201 moveq #1,%d1 <== NOT EXECUTED 4844c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4844e: 6700 00ee beqw 4853e <pthread_mutex_init+0x11a> <== NOT EXECUTED
return ENOSYS;
if ( the_attr->process_shared != PTHREAD_PROCESS_PRIVATE )
48452: 4a80 tstl %d0 <== NOT EXECUTED 48454: 6600 00cc bnew 48522 <pthread_mutex_init+0xfe> <== NOT EXECUTED
return EINVAL;
/*
* Determine the discipline of the mutex
*/
switch ( the_attr->protocol ) {
48458: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 4845c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4845e: 6700 00ea beqw 4854a <pthread_mutex_init+0x126> <== NOT EXECUTED 48462: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 48466: b280 cmpl %d0,%d1 <== NOT EXECUTED 48468: 6700 00ce beqw 48538 <pthread_mutex_init+0x114> <== NOT EXECUTED 4846c: 4a80 tstl %d0 <== NOT EXECUTED 4846e: 6600 00b2 bnew 48522 <pthread_mutex_init+0xfe> <== NOT EXECUTED
case PTHREAD_PRIO_NONE:
the_discipline = CORE_MUTEX_DISCIPLINES_FIFO;
48472: 4282 clrl %d2 <== NOT EXECUTED
}
/*
* Validate the priority ceiling field -- should always be valid.
*/
if ( !_POSIX_Priority_Is_valid( the_attr->prio_ceiling ) )
48474: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 48478: 4eb9 0004 8824 jsr 48824 <_POSIX_Priority_Is_valid> <== NOT EXECUTED 4847e: 588f addql #4,%sp <== NOT EXECUTED 48480: 4a00 tstb %d0 <== NOT EXECUTED 48482: 6700 009e beqw 48522 <pthread_mutex_init+0xfe> <== NOT EXECUTED
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
/*
* Validate the mutex type and set appropriate SuperCore mutex
* attributes.
*/
switch ( the_attr->type ) {
48486: 7003 moveq #3,%d0 <== NOT EXECUTED 48488: b0aa 0010 cmpl %a2@(16),%d0 <== NOT EXECUTED 4848c: 6500 0094 bcsw 48522 <pthread_mutex_init+0xfe> <== NOT EXECUTED 48490: 2039 0006 4fec movel 64fec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48496: 5280 addql #1,%d0 <== NOT EXECUTED 48498: 23c0 0006 4fec movel %d0,64fec <_Thread_Dispatch_disable_level><== NOT EXECUTED
* _POSIX_Mutex_Allocate
*/
RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Allocate( void )
{
return (POSIX_Mutex_Control *) _Objects_Allocate( &_POSIX_Mutex_Information );
4849e: 4879 0006 52d6 pea 652d6 <_POSIX_Mutex_Information> <== NOT EXECUTED 484a4: 4eb9 0004 adc0 jsr 4adc0 <_Objects_Allocate> <== NOT EXECUTED
*/
_Thread_Disable_dispatch();
the_mutex = _POSIX_Mutex_Allocate();
if ( !the_mutex ) {
484aa: 588f addql #4,%sp <== NOT EXECUTED 484ac: 2840 moveal %d0,%a4 <== NOT EXECUTED 484ae: 4a80 tstl %d0 <== NOT EXECUTED 484b0: 6700 009e beqw 48550 <pthread_mutex_init+0x12c> <== NOT EXECUTED
the_mutex->process_shared = the_attr->process_shared;
the_mutex_attr = &the_mutex->Mutex.Attributes;
if ( the_attr->recursive )
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
484b4: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 484b8: 57c0 seq %d0 <== NOT EXECUTED
if ( !the_mutex ) {
_Thread_Enable_dispatch();
return EAGAIN;
}
the_mutex->process_shared = the_attr->process_shared;
484ba: 296a 0004 0010 movel %a2@(4),%a4@(16) <== NOT EXECUTED
the_mutex_attr = &the_mutex->Mutex.Attributes;
if ( the_attr->recursive )
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
484c0: 49c0 extbl %d0 <== NOT EXECUTED 484c2: 4480 negl %d0 <== NOT EXECUTED
else
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR;
the_mutex_attr->only_owner_release = true;
484c4: 7201 moveq #1,%d1 <== NOT EXECUTED
the_mutex->process_shared = the_attr->process_shared;
the_mutex_attr = &the_mutex->Mutex.Attributes;
if ( the_attr->recursive )
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
484c6: 2940 0054 movel %d0,%a4@(84) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
484ca: 4280 clrl %d0 <== NOT EXECUTED
else
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR;
the_mutex_attr->only_owner_release = true;
484cc: 1941 0058 moveb %d1,%a4@(88) <== NOT EXECUTED 484d0: 1039 0006 3706 moveb 63706 <rtems_maximum_priority>,%d0 <== NOT EXECUTED 484d6: 90aa 0008 subl %a2@(8),%d0 <== NOT EXECUTED
the_mutex_attr->priority_ceiling =
_POSIX_Priority_To_core( the_attr->prio_ceiling );
the_mutex_attr->discipline = the_discipline;
484da: 2942 005a movel %d2,%a4@(90) <== NOT EXECUTED 484de: 2940 005e movel %d0,%a4@(94) <== NOT EXECUTED
/*
* Must be initialized to unlocked.
*/
_CORE_mutex_Initialize(
484e2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 484e6: 486c 0054 pea %a4@(84) <== NOT EXECUTED 484ea: 486c 0014 pea %a4@(20) <== NOT EXECUTED 484ee: 4eb9 0004 a39c jsr 4a39c <_CORE_mutex_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
484f4: 202c 0008 movel %a4@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
484f8: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
484fa: 2079 0006 52ee moveal 652ee <_POSIX_Mutex_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
48500: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48502: 218c 1c00 movel %a4,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
48506: 42ac 000c clrl %a4@(12) <== NOT EXECUTED
CORE_MUTEX_UNLOCKED
);
_Objects_Open_u32( &_POSIX_Mutex_Information, &the_mutex->Object, 0 );
*mutex = the_mutex->Object.id;
4850a: 2680 movel %d0,%a3@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4850c: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
48512: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48516: 4280 clrl %d0 <== NOT EXECUTED
}
48518: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4851e: 4e5e unlk %fp <== NOT EXECUTED 48520: 4e75 rts <== NOT EXECUTED
case PTHREAD_MUTEX_ERRORCHECK:
case PTHREAD_MUTEX_DEFAULT:
break;
default:
return EINVAL;
48522: 7016 moveq #22,%d0 <== NOT EXECUTED
*mutex = the_mutex->Object.id;
_Thread_Enable_dispatch();
return 0;
}
48524: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4852a: 4e5e unlk %fp <== NOT EXECUTED 4852c: 4e75 rts <== NOT EXECUTED
CORE_mutex_Attributes *the_mutex_attr;
const pthread_mutexattr_t *the_attr;
CORE_mutex_Disciplines the_discipline;
if ( attr ) the_attr = attr;
else the_attr = &_POSIX_Mutex_Default_attributes;
4852e: 45f9 0006 534a lea 6534a <_POSIX_Mutex_Default_attributes>,%a2<== NOT EXECUTED 48534: 6000 ff04 braw 4843a <pthread_mutex_init+0x16> <== NOT EXECUTED
break;
case PTHREAD_PRIO_INHERIT:
the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
break;
case PTHREAD_PRIO_PROTECT:
the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
48538: 7403 moveq #3,%d2 <== NOT EXECUTED
break;
4853a: 6000 ff38 braw 48474 <pthread_mutex_init+0x50> <== NOT EXECUTED
/*
* We only support process private mutexes.
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
return ENOSYS;
4853e: 7058 moveq #88,%d0 <== NOT EXECUTED
*mutex = the_mutex->Object.id;
_Thread_Enable_dispatch();
return 0;
}
48540: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 48546: 4e5e unlk %fp <== NOT EXECUTED 48548: 4e75 rts <== NOT EXECUTED
switch ( the_attr->protocol ) {
case PTHREAD_PRIO_NONE:
the_discipline = CORE_MUTEX_DISCIPLINES_FIFO;
break;
case PTHREAD_PRIO_INHERIT:
the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
4854a: 7402 moveq #2,%d2 <== NOT EXECUTED 4854c: 6000 ff26 braw 48474 <pthread_mutex_init+0x50> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_mutex = _POSIX_Mutex_Allocate();
if ( !the_mutex ) {
_Thread_Enable_dispatch();
48550: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
48556: 700b moveq #11,%d0 <== NOT EXECUTED
*mutex = the_mutex->Object.id;
_Thread_Enable_dispatch();
return 0;
}
48558: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4855e: 4e5e unlk %fp <== NOT EXECUTED
...
00048564 <pthread_mutex_lock>:
*/
int pthread_mutex_lock(
pthread_mutex_t *mutex
)
{
48564: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Mutex_Lock_support( mutex, true, THREAD_QUEUE_WAIT_FOREVER );
48568: 42a7 clrl %sp@- <== NOT EXECUTED 4856a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4856e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48572: 4eb9 0004 857c jsr 4857c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
}
48578: 4e5e unlk %fp <== NOT EXECUTED
000485e8 <pthread_mutex_setprioceiling>:
int pthread_mutex_setprioceiling(
pthread_mutex_t *mutex,
int prioceiling,
int *old_ceiling
)
{
485e8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 485ec: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 485f0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 485f4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 485f8: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
Priority_Control the_priority;
if ( !old_ceiling )
485fc: 4a8a tstl %a2 <== NOT EXECUTED 485fe: 670e beqs 4860e <pthread_mutex_setprioceiling+0x26><== NOT EXECUTED
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
48600: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48602: 4eb9 0004 8824 jsr 48824 <_POSIX_Priority_Is_valid> <== NOT EXECUTED 48608: 588f addql #4,%sp <== NOT EXECUTED 4860a: 4a00 tstb %d0 <== NOT EXECUTED 4860c: 660c bnes 4861a <pthread_mutex_setprioceiling+0x32><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4860e: 7016 moveq #22,%d0 <== NOT EXECUTED
}
48610: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 48616: 4e5e unlk %fp <== NOT EXECUTED 48618: 4e75 rts <== NOT EXECUTED
/*
* Must acquire the mutex before we can change it's ceiling.
* POSIX says block until we acquire it.
*/
(void) pthread_mutex_lock( mutex );
4861a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4861c: 1839 0006 3706 moveb 63706 <rtems_maximum_priority>,%d4 <== NOT EXECUTED 48622: 4eb9 0004 8564 jsr 48564 <pthread_mutex_lock> <== NOT EXECUTED
* operations. * * NOTE: This makes it easier to get 100% binary coverage since the * bad Id case is handled by the switch. */ the_mutex = _POSIX_Mutex_Get( mutex, &location );
48628: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4862c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4862e: 4eb9 0004 82e0 jsr 482e0 <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
48634: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48638: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4863c: 66d0 bnes 4860e <pthread_mutex_setprioceiling+0x26><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4863e: 4281 clrl %d1 <== NOT EXECUTED 48640: 1239 0006 3706 moveb 63706 <rtems_maximum_priority>,%d1 <== NOT EXECUTED 48646: 2040 moveal %d0,%a0 <== NOT EXECUTED 48648: 92a8 005e subl %a0@(94),%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4864c: 0284 0000 00ff andil #255,%d4 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
48652: 2481 movel %d1,%a2@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
48654: 9882 subl %d2,%d4 <== NOT EXECUTED 48656: 2144 005e movel %d4,%a0@(94) <== NOT EXECUTED
);
the_mutex->Mutex.Attributes.priority_ceiling = the_priority;
/*
* We are required to unlock the mutex before we return.
*/
_CORE_mutex_Surrender(
4865a: 42a7 clrl %sp@- <== NOT EXECUTED 4865c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 48660: 4868 0014 pea %a0@(20) <== NOT EXECUTED 48664: 4eb9 0004 a5c8 jsr 4a5c8 <_CORE_mutex_Surrender> <== NOT EXECUTED
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
4866a: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
48670: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48674: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
48676: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 4867c: 4e5e unlk %fp <== NOT EXECUTED
00048680 <pthread_mutex_timedlock>:
int pthread_mutex_timedlock(
pthread_mutex_t *mutex,
const struct timespec *abstime
)
{
48680: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48684: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48686: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4868a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
4868c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48690: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48694: 4eb9 0004 8794 jsr 48794 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
4869a: 508f addql #8,%sp <== NOT EXECUTED
* * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
4869c: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
4869e: 7003 moveq #3,%d0 <== NOT EXECUTED 486a0: b082 cmpl %d2,%d0 <== NOT EXECUTED 486a2: 673e beqs 486e2 <pthread_mutex_timedlock+0x62> <== NOT EXECUTED
do_wait = false;
lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );
486a4: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 486a8: 42a7 clrl %sp@- <== NOT EXECUTED 486aa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 486ac: 4eb9 0004 857c jsr 4857c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
* This service only gives us the option to block. We used a polling
* attempt to lock if the abstime was not in the future. If we did
* not obtain the mutex, then not look at the status immediately,
* make sure the right reason is returned.
*/
if ( !do_wait && (lock_status == EBUSY) ) {
486b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 486b6: 7210 moveq #16,%d1 <== NOT EXECUTED 486b8: b280 cmpl %d0,%d1 <== NOT EXECUTED 486ba: 670c beqs 486c8 <pthread_mutex_timedlock+0x48> <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
486bc: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 486c0: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 486c4: 4e5e unlk %fp <== NOT EXECUTED 486c6: 4e75 rts <== NOT EXECUTED
* attempt to lock if the abstime was not in the future. If we did
* not obtain the mutex, then not look at the status immediately,
* make sure the right reason is returned.
*/
if ( !do_wait && (lock_status == EBUSY) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
486c8: 4a82 tstl %d2 <== NOT EXECUTED 486ca: 6736 beqs 48702 <pthread_mutex_timedlock+0x82> <== NOT EXECUTED
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
486cc: 5382 subql #1,%d2 <== NOT EXECUTED 486ce: 7201 moveq #1,%d1 <== NOT EXECUTED 486d0: b282 cmpl %d2,%d1 <== NOT EXECUTED 486d2: 65e8 bcss 486bc <pthread_mutex_timedlock+0x3c> <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
486d4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if ( !do_wait && (lock_status == EBUSY) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
486d8: 7074 moveq #116,%d0 <== NOT EXECUTED
}
return lock_status;
}
486da: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 486de: 4e5e unlk %fp <== NOT EXECUTED 486e0: 4e75 rts <== NOT EXECUTED
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );
486e2: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 486e6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 486ea: 2f03 movel %d3,%sp@- <== NOT EXECUTED 486ec: 4eb9 0004 857c jsr 4857c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
486f2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );
486f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
486fa: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 486fe: 4e5e unlk %fp <== NOT EXECUTED 48700: 4e75 rts <== NOT EXECUTED 48702: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
* not obtain the mutex, then not look at the status immediately,
* make sure the right reason is returned.
*/
if ( !do_wait && (lock_status == EBUSY) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
48706: 7016 moveq #22,%d0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
48708: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4870c: 4e5e unlk %fp <== NOT EXECUTED
00048728 <pthread_mutex_trylock>:
*/
int pthread_mutex_trylock(
pthread_mutex_t *mutex
)
{
48728: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Mutex_Lock_support( mutex, false, THREAD_QUEUE_WAIT_FOREVER );
4872c: 42a7 clrl %sp@- <== NOT EXECUTED 4872e: 42a7 clrl %sp@- <== NOT EXECUTED 48730: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48734: 4eb9 0004 857c jsr 4857c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
}
4873a: 4e5e unlk %fp <== NOT EXECUTED
...
00048740 <pthread_mutex_unlock>:
*/
int pthread_mutex_unlock(
pthread_mutex_t *mutex
)
{
48740: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48744: 2f02 movel %d2,%sp@- <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
CORE_mutex_Status status;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
48746: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4874a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4874e: 4eb9 0004 82e0 jsr 482e0 <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
48754: 508f addql #8,%sp <== NOT EXECUTED 48756: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4875a: 662e bnes 4878a <pthread_mutex_unlock+0x4a> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_mutex_Surrender(
4875c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4875e: 42a7 clrl %sp@- <== NOT EXECUTED 48760: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 48764: 4868 0014 pea %a0@(20) <== NOT EXECUTED 48768: 4eb9 0004 a5c8 jsr 4a5c8 <_CORE_mutex_Surrender> <== NOT EXECUTED 4876e: 2400 movel %d0,%d2 <== NOT EXECUTED
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
48770: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Mutex_Translate_core_mutex_return_code( status );
48776: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48778: 4eb9 0004 8710 jsr 48710 <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4877e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_Mutex_Translate_core_mutex_return_code( status );
48782: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
48786: 4e5e unlk %fp <== NOT EXECUTED 48788: 4e75 rts <== NOT EXECUTED 4878a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4878e: 7016 moveq #22,%d0 <== NOT EXECUTED
}
48790: 4e5e unlk %fp <== NOT EXECUTED
000480ec <pthread_mutexattr_destroy>:
*/
int pthread_mutexattr_destroy(
pthread_mutexattr_t *attr
)
{
480ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 480f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
480f4: 4a88 tstl %a0 <== NOT EXECUTED 480f6: 670c beqs 48104 <pthread_mutexattr_destroy+0x18> <== NOT EXECUTED 480f8: 4a90 tstl %a0@ <== NOT EXECUTED 480fa: 6708 beqs 48104 <pthread_mutexattr_destroy+0x18> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
480fc: 4280 clrl %d0 <== NOT EXECUTED
}
480fe: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->is_initialized = false;
48100: 4290 clrl %a0@ <== NOT EXECUTED
return 0; }
48102: 4e75 rts <== NOT EXECUTED
int pthread_mutexattr_destroy(
pthread_mutexattr_t *attr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
48104: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
48106: 4e5e unlk %fp <== NOT EXECUTED
...
0004810c <pthread_mutexattr_getprioceiling>:
int pthread_mutexattr_getprioceiling(
const pthread_mutexattr_t *attr,
int *prioceiling
)
{
4810c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48110: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48114: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !prioceiling )
48118: 4a88 tstl %a0 <== NOT EXECUTED 4811a: 6712 beqs 4812e <pthread_mutexattr_getprioceiling+0x22><== NOT EXECUTED 4811c: 4a90 tstl %a0@ <== NOT EXECUTED 4811e: 670e beqs 4812e <pthread_mutexattr_getprioceiling+0x22><== NOT EXECUTED 48120: 4a89 tstl %a1 <== NOT EXECUTED 48122: 670a beqs 4812e <pthread_mutexattr_getprioceiling+0x22><== NOT EXECUTED
return EINVAL;
*prioceiling = attr->prio_ceiling;
48124: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
return 0;
48128: 4280 clrl %d0 <== NOT EXECUTED
}
4812a: 4e5e unlk %fp <== NOT EXECUTED 4812c: 4e75 rts <== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *prioceiling
)
{
if ( !attr || !attr->is_initialized || !prioceiling )
return EINVAL;
4812e: 7016 moveq #22,%d0 <== NOT EXECUTED
*prioceiling = attr->prio_ceiling;
return 0;
}
48130: 4e5e unlk %fp <== NOT EXECUTED
00048134 <pthread_mutexattr_getprotocol>:
int pthread_mutexattr_getprotocol(
const pthread_mutexattr_t *attr,
int *protocol
)
{
48134: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48138: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4813c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !protocol )
48140: 4a88 tstl %a0 <== NOT EXECUTED 48142: 6712 beqs 48156 <pthread_mutexattr_getprotocol+0x22><== NOT EXECUTED 48144: 4a90 tstl %a0@ <== NOT EXECUTED 48146: 670e beqs 48156 <pthread_mutexattr_getprotocol+0x22><== NOT EXECUTED 48148: 4a89 tstl %a1 <== NOT EXECUTED 4814a: 670a beqs 48156 <pthread_mutexattr_getprotocol+0x22><== NOT EXECUTED
return EINVAL;
*protocol = attr->protocol;
4814c: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
return 0;
48150: 4280 clrl %d0 <== NOT EXECUTED
}
48152: 4e5e unlk %fp <== NOT EXECUTED 48154: 4e75 rts <== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *protocol
)
{
if ( !attr || !attr->is_initialized || !protocol )
return EINVAL;
48156: 7016 moveq #22,%d0 <== NOT EXECUTED
*protocol = attr->protocol;
return 0;
}
48158: 4e5e unlk %fp <== NOT EXECUTED
0004815c <pthread_mutexattr_getpshared>:
int pthread_mutexattr_getpshared(
const pthread_mutexattr_t *attr,
int *pshared
)
{
4815c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48160: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48164: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !pshared )
48168: 4a88 tstl %a0 <== NOT EXECUTED 4816a: 6712 beqs 4817e <pthread_mutexattr_getpshared+0x22><== NOT EXECUTED 4816c: 4a90 tstl %a0@ <== NOT EXECUTED 4816e: 670e beqs 4817e <pthread_mutexattr_getpshared+0x22><== NOT EXECUTED 48170: 4a89 tstl %a1 <== NOT EXECUTED 48172: 670a beqs 4817e <pthread_mutexattr_getpshared+0x22><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
48174: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
48178: 4280 clrl %d0 <== NOT EXECUTED
}
4817a: 4e5e unlk %fp <== NOT EXECUTED 4817c: 4e75 rts <== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *pshared
)
{
if ( !attr || !attr->is_initialized || !pshared )
return EINVAL;
4817e: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
48180: 4e5e unlk %fp <== NOT EXECUTED
000460b8 <pthread_mutexattr_gettype>:
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
int pthread_mutexattr_gettype(
const pthread_mutexattr_t *attr,
int *type
)
{
460b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 460bc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 460c0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr )
460c4: 4a88 tstl %a0 <== NOT EXECUTED 460c6: 6712 beqs 460da <pthread_mutexattr_gettype+0x22> <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
460c8: 4a90 tstl %a0@ <== NOT EXECUTED 460ca: 670e beqs 460da <pthread_mutexattr_gettype+0x22> <== NOT EXECUTED
return EINVAL;
if ( !type )
460cc: 4a89 tstl %a1 <== NOT EXECUTED 460ce: 670a beqs 460da <pthread_mutexattr_gettype+0x22> <== NOT EXECUTED
return EINVAL;
*type = attr->type;
460d0: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED
return 0;
460d4: 4280 clrl %d0 <== NOT EXECUTED
}
460d6: 4e5e unlk %fp <== NOT EXECUTED 460d8: 4e75 rts <== NOT EXECUTED
if ( !attr->is_initialized )
return EINVAL;
if ( !type )
return EINVAL;
460da: 7016 moveq #22,%d0 <== NOT EXECUTED
*type = attr->type;
return 0;
}
460dc: 4e5e unlk %fp <== NOT EXECUTED
00048184 <pthread_mutexattr_init>:
*/
int pthread_mutexattr_init(
pthread_mutexattr_t *attr
)
{
48184: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48188: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
4818c: 4a88 tstl %a0 <== NOT EXECUTED 4818e: 672a beqs 481ba <pthread_mutexattr_init+0x36> <== NOT EXECUTED
return EINVAL;
*attr = _POSIX_Mutex_Default_attributes;
48190: 20f9 0006 534a movel 6534a <_POSIX_Mutex_Default_attributes>,%a0@+<== NOT EXECUTED
return 0;
48196: 4280 clrl %d0 <== NOT EXECUTED
}
48198: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
*attr = _POSIX_Mutex_Default_attributes;
4819a: 20f9 0006 534e movel 6534e <_POSIX_Mutex_Default_attributes+0x4>,%a0@+<== NOT EXECUTED 481a0: 20f9 0006 5352 movel 65352 <_POSIX_Mutex_Default_attributes+0x8>,%a0@+<== NOT EXECUTED 481a6: 20f9 0006 5356 movel 65356 <_POSIX_Mutex_Default_attributes+0xc>,%a0@+<== NOT EXECUTED 481ac: 20f9 0006 535a movel 6535a <_POSIX_Mutex_Default_attributes+0x10>,%a0@+<== NOT EXECUTED 481b2: 20b9 0006 535e movel 6535e <_POSIX_Mutex_Default_attributes+0x14>,%a0@<== NOT EXECUTED
return 0; }
481b8: 4e75 rts <== NOT EXECUTED
int pthread_mutexattr_init(
pthread_mutexattr_t *attr
)
{
if ( !attr )
return EINVAL;
481ba: 7016 moveq #22,%d0 <== NOT EXECUTED
*attr = _POSIX_Mutex_Default_attributes;
return 0;
}
481bc: 4e5e unlk %fp <== NOT EXECUTED
000481c0 <pthread_mutexattr_setprioceiling>:
int pthread_mutexattr_setprioceiling(
pthread_mutexattr_t *attr,
int prioceiling
)
{
481c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 481c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 481c6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 481ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 481cc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
481d0: 4a8a tstl %a2 <== NOT EXECUTED 481d2: 6704 beqs 481d8 <pthread_mutexattr_setprioceiling+0x18><== NOT EXECUTED 481d4: 4a92 tstl %a2@ <== NOT EXECUTED 481d6: 660e bnes 481e6 <pthread_mutexattr_setprioceiling+0x26><== NOT EXECUTED
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
return EINVAL;
attr->prio_ceiling = prioceiling;
return 0;
}
481d8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
{
if ( !attr || !attr->is_initialized )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
return EINVAL;
481dc: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->prio_ceiling = prioceiling;
return 0;
}
481de: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 481e2: 4e5e unlk %fp <== NOT EXECUTED 481e4: 4e75 rts <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
481e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 481e8: 4eb9 0004 8824 jsr 48824 <_POSIX_Priority_Is_valid> <== NOT EXECUTED 481ee: 588f addql #4,%sp <== NOT EXECUTED 481f0: 4a00 tstb %d0 <== NOT EXECUTED 481f2: 67e4 beqs 481d8 <pthread_mutexattr_setprioceiling+0x18><== NOT EXECUTED
return EINVAL;
attr->prio_ceiling = prioceiling;
481f4: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return 0; }
481f8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 481fc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
return EINVAL;
attr->prio_ceiling = prioceiling;
return 0;
48200: 4280 clrl %d0 <== NOT EXECUTED
}
48202: 4e5e unlk %fp <== NOT EXECUTED
...
00048208 <pthread_mutexattr_setprotocol>:
int pthread_mutexattr_setprotocol(
pthread_mutexattr_t *attr,
int protocol
)
{
48208: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4820c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48210: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
48214: 4a88 tstl %a0 <== NOT EXECUTED 48216: 670a beqs 48222 <pthread_mutexattr_setprotocol+0x1a><== NOT EXECUTED 48218: 4a90 tstl %a0@ <== NOT EXECUTED 4821a: 6706 beqs 48222 <pthread_mutexattr_setprotocol+0x1a><== NOT EXECUTED
return EINVAL;
switch ( protocol ) {
4821c: 7202 moveq #2,%d1 <== NOT EXECUTED 4821e: b280 cmpl %d0,%d1 <== NOT EXECUTED 48220: 6406 bccs 48228 <pthread_mutexattr_setprotocol+0x20><== NOT EXECUTED
case PTHREAD_PRIO_PROTECT:
attr->protocol = protocol;
return 0;
default:
return EINVAL;
48222: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
48224: 4e5e unlk %fp <== NOT EXECUTED 48226: 4e75 rts <== NOT EXECUTED
switch ( protocol ) {
case PTHREAD_PRIO_NONE:
case PTHREAD_PRIO_INHERIT:
case PTHREAD_PRIO_PROTECT:
attr->protocol = protocol;
48228: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED
return 0;
4822c: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
4822e: 4e5e unlk %fp <== NOT EXECUTED
...
00048234 <pthread_mutexattr_setpshared>:
int pthread_mutexattr_setpshared(
pthread_mutexattr_t *attr,
int pshared
)
{
48234: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48238: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4823c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
48240: 4a88 tstl %a0 <== NOT EXECUTED 48242: 670a beqs 4824e <pthread_mutexattr_setpshared+0x1a><== NOT EXECUTED 48244: 4a90 tstl %a0@ <== NOT EXECUTED 48246: 6706 beqs 4824e <pthread_mutexattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
48248: 7201 moveq #1,%d1 <== NOT EXECUTED 4824a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4824c: 6406 bccs 48254 <pthread_mutexattr_setpshared+0x20><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
4824e: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
48250: 4e5e unlk %fp <== NOT EXECUTED 48252: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
48254: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
48258: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
4825a: 4e5e unlk %fp <== NOT EXECUTED
...
0004611c <pthread_mutexattr_settype>:
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
int pthread_mutexattr_settype(
pthread_mutexattr_t *attr,
int type
)
{
4611c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46120: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46124: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
46128: 4a88 tstl %a0 <== NOT EXECUTED 4612a: 670a beqs 46136 <pthread_mutexattr_settype+0x1a> <== NOT EXECUTED 4612c: 4a90 tstl %a0@ <== NOT EXECUTED 4612e: 6706 beqs 46136 <pthread_mutexattr_settype+0x1a> <== NOT EXECUTED
return EINVAL;
switch ( type ) {
46130: 7203 moveq #3,%d1 <== NOT EXECUTED 46132: b280 cmpl %d0,%d1 <== NOT EXECUTED 46134: 6406 bccs 4613c <pthread_mutexattr_settype+0x20> <== NOT EXECUTED
case PTHREAD_MUTEX_DEFAULT:
attr->type = type;
return 0;
default:
return EINVAL;
46136: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
46138: 4e5e unlk %fp <== NOT EXECUTED 4613a: 4e75 rts <== NOT EXECUTED
switch ( type ) {
case PTHREAD_MUTEX_NORMAL:
case PTHREAD_MUTEX_RECURSIVE:
case PTHREAD_MUTEX_ERRORCHECK:
case PTHREAD_MUTEX_DEFAULT:
attr->type = type;
4613c: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
return 0;
46140: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
46142: 4e5e unlk %fp <== NOT EXECUTED
...
00046f08 <pthread_once>:
int pthread_once(
pthread_once_t *once_control,
void (*init_routine)(void)
)
{
46f08: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46f0c: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 46f10: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46f14: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
if ( !once_control || !init_routine )
46f18: 4a8a tstl %a2 <== NOT EXECUTED 46f1a: 6772 beqs 46f8e <pthread_once+0x86> <== NOT EXECUTED 46f1c: 4a8b tstl %a3 <== NOT EXECUTED 46f1e: 676e beqs 46f8e <pthread_once+0x86> <== NOT EXECUTED
return EINVAL;
if ( !once_control->init_executed ) {
46f20: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 46f24: 670c beqs 46f32 <pthread_once+0x2a> <== NOT EXECUTED
once_control->init_executed = true;
(*init_routine)();
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
}
return 0;
46f26: 4280 clrl %d0 <== NOT EXECUTED
}
46f28: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 46f2e: 4e5e unlk %fp <== NOT EXECUTED 46f30: 4e75 rts <== NOT EXECUTED
if ( !once_control || !init_routine )
return EINVAL;
if ( !once_control->init_executed ) {
rtems_mode saveMode;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
46f32: 240e movel %fp,%d2 <== NOT EXECUTED 46f34: 5982 subql #4,%d2 <== NOT EXECUTED 46f36: 49f9 0004 7bc8 lea 47bc8 <rtems_task_mode>,%a4 <== NOT EXECUTED 46f3c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f3e: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 46f42: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 46f46: 4e94 jsr %a4@ <== NOT EXECUTED
if ( !once_control->init_executed ) {
46f48: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46f4c: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 46f50: 671c beqs 46f6e <pthread_once+0x66> <== NOT EXECUTED
once_control->is_initialized = true;
once_control->init_executed = true;
(*init_routine)();
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
46f52: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f54: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 46f58: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 46f5c: 4e94 jsr %a4@ <== NOT EXECUTED 46f5e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
} return 0;
46f62: 4280 clrl %d0 <== NOT EXECUTED
}
46f64: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 46f6a: 4e5e unlk %fp <== NOT EXECUTED 46f6c: 4e75 rts <== NOT EXECUTED
if ( !once_control->init_executed ) {
rtems_mode saveMode;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
if ( !once_control->init_executed ) {
once_control->is_initialized = true;
46f6e: 7001 moveq #1,%d0 <== NOT EXECUTED 46f70: 2480 movel %d0,%a2@ <== NOT EXECUTED
once_control->init_executed = true;
46f72: 7001 moveq #1,%d0 <== NOT EXECUTED 46f74: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
(*init_routine)();
46f78: 4e93 jsr %a3@ <== NOT EXECUTED
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
46f7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f7c: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 46f80: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 46f84: 4e94 jsr %a4@ <== NOT EXECUTED 46f86: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
} return 0;
46f8a: 4280 clrl %d0 <== NOT EXECUTED 46f8c: 60d6 bras 46f64 <pthread_once+0x5c> <== NOT EXECUTED
pthread_once_t *once_control,
void (*init_routine)(void)
)
{
if ( !once_control || !init_routine )
return EINVAL;
46f8e: 7016 moveq #22,%d0 <== NOT EXECUTED
(*init_routine)();
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
}
return 0;
}
46f90: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 46f96: 4e5e unlk %fp <== NOT EXECUTED
...
00047240 <pthread_rwlock_destroy>:
*/
int pthread_rwlock_destroy(
pthread_rwlock_t *rwlock
)
{
47240: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47244: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47248: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock = NULL;
Objects_Locations location;
if ( !rwlock )
4724a: 4a88 tstl %a0 <== NOT EXECUTED 4724c: 673e beqs 4728c <pthread_rwlock_destroy+0x4c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get (
pthread_rwlock_t *RWLock,
Objects_Locations *location
)
{
return (POSIX_RWLock_Control *) _Objects_Get(
4724e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47252: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 47254: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 4725a: 4eb9 0004 a16c jsr 4a16c <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47260: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47264: 2440 moveal %d0,%a2 <== NOT EXECUTED 47266: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4726a: 6620 bnes 4728c <pthread_rwlock_destroy+0x4c> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* If there is at least one thread waiting, then do not delete it.
*/
if ( _Thread_queue_First( &the_rwlock->RWLock.Wait_queue ) != NULL ) {
4726c: 486a 0010 pea %a2@(16) <== NOT EXECUTED 47270: 4eb9 0004 b2ec jsr 4b2ec <_Thread_queue_First> <== NOT EXECUTED 47276: 588f addql #4,%sp <== NOT EXECUTED 47278: 4a80 tstl %d0 <== NOT EXECUTED 4727a: 671a beqs 47296 <pthread_rwlock_destroy+0x56> <== NOT EXECUTED
_Thread_Enable_dispatch();
4727c: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47282: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
/*
* If there is at least one thread waiting, then do not delete it.
*/
if ( _Thread_queue_First( &the_rwlock->RWLock.Wait_queue ) != NULL ) {
_Thread_Enable_dispatch();
return EBUSY;
47286: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47288: 4e5e unlk %fp <== NOT EXECUTED 4728a: 4e75 rts <== NOT EXECUTED 4728c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47290: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47292: 4e5e unlk %fp <== NOT EXECUTED 47294: 4e75 rts <== NOT EXECUTED
/*
* POSIX doesn't require behavior when it is locked.
*/
_Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object );
47296: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47298: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 4729e: 4eb9 0004 9d3c jsr 49d3c <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free (
POSIX_RWLock_Control *the_RWLock
)
{
_Objects_Free( &_POSIX_RWLock_Information, &the_RWLock->Object );
472a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 472a6: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 472ac: 4eb9 0004 a000 jsr 4a000 <_Objects_Free> <== NOT EXECUTED
_POSIX_RWLock_Free( the_rwlock );
_Thread_Enable_dispatch();
472b2: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
472b8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object );
_POSIX_RWLock_Free( the_rwlock );
_Thread_Enable_dispatch();
return 0;
472bc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 472c0: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
472c2: 4e5e unlk %fp <== NOT EXECUTED
...
000472c8 <pthread_rwlock_init>:
int pthread_rwlock_init(
pthread_rwlock_t *rwlock,
const pthread_rwlockattr_t *attr
)
{
472c8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 472cc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 472d0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 472d4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const pthread_rwlockattr_t *the_attr;
/*
* Error check parameters
*/
if ( !rwlock )
472d8: 4a8a tstl %a2 <== NOT EXECUTED 472da: 6772 beqs 4734e <pthread_rwlock_init+0x86> <== NOT EXECUTED
return EINVAL;
/*
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
472dc: 4a82 tstl %d2 <== NOT EXECUTED 472de: 6700 008c beqw 4736c <pthread_rwlock_init+0xa4> <== NOT EXECUTED 472e2: 2042 moveal %d2,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
472e4: 4a90 tstl %a0@ <== NOT EXECUTED 472e6: 6766 beqs 4734e <pthread_rwlock_init+0x86> <== NOT EXECUTED
return EINVAL;
switch ( the_attr->process_shared ) {
472e8: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 472ec: 6660 bnes 4734e <pthread_rwlock_init+0x86> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
472ee: 2039 0006 2b00 movel 62b00 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 472f4: 5280 addql #1,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes(
CORE_RWLock_Attributes *the_attributes
)
{
the_attributes->XXX = 0;
472f6: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 472fa: 23c0 0006 2b00 movel %d0,62b00 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free RWLock control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void )
{
return (POSIX_RWLock_Control *)
_Objects_Allocate( &_POSIX_RWLock_Information );
47300: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 47306: 4eb9 0004 9cac jsr 49cac <_Objects_Allocate> <== NOT EXECUTED
*/
_Thread_Disable_dispatch(); /* prevents deletion */
the_rwlock = _POSIX_RWLock_Allocate();
if ( !the_rwlock ) {
4730c: 588f addql #4,%sp <== NOT EXECUTED 4730e: 2640 moveal %d0,%a3 <== NOT EXECUTED 47310: 4a80 tstl %d0 <== NOT EXECUTED 47312: 6746 beqs 4735a <pthread_rwlock_init+0x92> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EAGAIN;
}
_CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes );
47314: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47318: 486b 0010 pea %a3@(16) <== NOT EXECUTED 4731c: 4eb9 0004 938c jsr 4938c <_CORE_RWLock_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
47322: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
47326: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47328: 2079 0006 2ca6 moveal 62ca6 <_POSIX_RWLock_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
4732e: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47330: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
47334: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
&_POSIX_RWLock_Information,
&the_rwlock->Object,
0
);
*rwlock = the_rwlock->Object.id;
47338: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4733a: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
47340: 508f addql #8,%sp <== NOT EXECUTED 47342: 4280 clrl %d0 <== NOT EXECUTED
}
47344: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 4734a: 4e5e unlk %fp <== NOT EXECUTED 4734c: 4e75 rts <== NOT EXECUTED
switch ( the_attr->process_shared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
4734e: 7016 moveq #22,%d0 <== NOT EXECUTED
*rwlock = the_rwlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
47350: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 47356: 4e5e unlk %fp <== NOT EXECUTED 47358: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_rwlock = _POSIX_RWLock_Allocate();
if ( !the_rwlock ) {
_Thread_Enable_dispatch();
4735a: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
47360: 700b moveq #11,%d0 <== NOT EXECUTED
*rwlock = the_rwlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
47362: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 47368: 4e5e unlk %fp <== NOT EXECUTED 4736a: 4e75 rts <== NOT EXECUTED
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
the_attr = attr;
} else {
(void) pthread_rwlockattr_init( &default_attr );
4736c: 240e movel %fp,%d2 <== NOT EXECUTED 4736e: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED 47374: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47376: 4eb9 0004 7e14 jsr 47e14 <pthread_rwlockattr_init> <== NOT EXECUTED 4737c: 588f addql #4,%sp <== NOT EXECUTED
the_attr = &default_attr;
4737e: 2042 moveal %d2,%a0 <== NOT EXECUTED 47380: 6000 ff62 braw 472e4 <pthread_rwlock_init+0x1c> <== NOT EXECUTED
00047384 <pthread_rwlock_rdlock>:
*/
int pthread_rwlock_rdlock(
pthread_rwlock_t *rwlock
)
{
47384: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47388: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4738a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
4738e: 4a8a tstl %a2 <== NOT EXECUTED 47390: 6754 beqs 473e6 <pthread_rwlock_rdlock+0x62> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get (
pthread_rwlock_t *RWLock,
Objects_Locations *location
)
{
return (POSIX_RWLock_Control *) _Objects_Get(
47392: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47396: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47398: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 4739e: 4eb9 0004 a16c jsr 4a16c <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
473a4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 473a8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 473ac: 6638 bnes 473e6 <pthread_rwlock_rdlock+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
473ae: 42a7 clrl %sp@- <== NOT EXECUTED 473b0: 2040 moveal %d0,%a0 <== NOT EXECUTED 473b2: 42a7 clrl %sp@- <== NOT EXECUTED 473b4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 473b8: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 473ba: 4868 0010 pea %a0@(16) <== NOT EXECUTED 473be: 4eb9 0004 93c0 jsr 493c0 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
true, /* we are willing to wait forever */
0,
NULL
);
_Thread_Enable_dispatch();
473c4: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
473ca: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
473d0: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 473d4: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
473da: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
473de: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
473e2: 4e5e unlk %fp <== NOT EXECUTED 473e4: 4e75 rts <== NOT EXECUTED 473e6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
473ea: 7016 moveq #22,%d0 <== NOT EXECUTED
}
473ec: 4e5e unlk %fp <== NOT EXECUTED
000473f0 <pthread_rwlock_timedrdlock>:
int pthread_rwlock_timedrdlock(
pthread_rwlock_t *rwlock,
const struct timespec *abstime
)
{
473f0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 473f4: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 473f8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Locations location;
Watchdog_Interval ticks;
bool do_wait = true;
POSIX_Absolute_timeout_conversion_results_t status;
if ( !rwlock )
473fc: 4a8a tstl %a2 <== NOT EXECUTED 473fe: 6700 0082 beqw 47482 <pthread_rwlock_timedrdlock+0x92><== NOT EXECUTED
* * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
47402: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 47406: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4740a: 4eb9 0004 de38 jsr 4de38 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED 47410: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47414: 2400 movel %d0,%d2 <== NOT EXECUTED 47416: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47418: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 4741e: 4eb9 0004 a16c jsr 4a16c <_Objects_Get> <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47424: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 47428: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4742c: 6654 bnes 47482 <pthread_rwlock_timedrdlock+0x92><== NOT EXECUTED
int _EXFUN(pthread_rwlock_init, (pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr)); int _EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_timedrdlock,
4742e: 7203 moveq #3,%d1 <== NOT EXECUTED 47430: b282 cmpl %d2,%d1 <== NOT EXECUTED 47432: 57c3 seq %d3 <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
47434: 42a7 clrl %sp@- <== NOT EXECUTED 47436: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 4743a: 4483 negl %d3 <== NOT EXECUTED 4743c: 4281 clrl %d1 <== NOT EXECUTED 4743e: 1203 moveb %d3,%d1 <== NOT EXECUTED 47440: 2040 moveal %d0,%a0 <== NOT EXECUTED 47442: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47444: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47446: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4744a: 4eb9 0004 93c0 jsr 493c0 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
do_wait,
ticks,
NULL
);
_Thread_Enable_dispatch();
47450: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !do_wait ) {
47456: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4745a: 4a03 tstb %d3 <== NOT EXECUTED 4745c: 664a bnes 474a8 <pthread_rwlock_timedrdlock+0xb8><== NOT EXECUTED
if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
4745e: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47464: 7202 moveq #2,%d1 <== NOT EXECUTED 47466: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED 4746a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4746c: 6720 beqs 4748e <pthread_rwlock_timedrdlock+0x9e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
4746e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47470: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 47476: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47478: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4747e: 4e5e unlk %fp <== NOT EXECUTED 47480: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( !do_wait ) {
if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
47482: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47484: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4748a: 4e5e unlk %fp <== NOT EXECUTED 4748c: 4e75 rts <== NOT EXECUTED
);
_Thread_Enable_dispatch();
if ( !do_wait ) {
if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
4748e: 4a82 tstl %d2 <== NOT EXECUTED 47490: 67f0 beqs 47482 <pthread_rwlock_timedrdlock+0x92><== NOT EXECUTED
return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
47492: 5382 subql #1,%d2 <== NOT EXECUTED 47494: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 47498: b282 cmpl %d2,%d1 <== NOT EXECUTED 4749a: 65d2 bcss 4746e <pthread_rwlock_timedrdlock+0x7e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT;
4749c: 7074 moveq #116,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4749e: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 474a4: 4e5e unlk %fp <== NOT EXECUTED 474a6: 4e75 rts <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait ) {
474a8: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 474ae: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
474b2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 474b4: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 474ba: 588f addql #4,%sp <== NOT EXECUTED 474bc: 60ba bras 47478 <pthread_rwlock_timedrdlock+0x88><== NOT EXECUTED
...
000474c0 <pthread_rwlock_timedwrlock>:
int pthread_rwlock_timedwrlock(
pthread_rwlock_t *rwlock,
const struct timespec *abstime
)
{
474c0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 474c4: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 474c8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Locations location;
Watchdog_Interval ticks;
bool do_wait = true;
POSIX_Absolute_timeout_conversion_results_t status;
if ( !rwlock )
474cc: 4a8a tstl %a2 <== NOT EXECUTED 474ce: 6700 0082 beqw 47552 <pthread_rwlock_timedwrlock+0x92><== NOT EXECUTED
* * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
474d2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 474d6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 474da: 4eb9 0004 de38 jsr 4de38 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED 474e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 474e4: 2400 movel %d0,%d2 <== NOT EXECUTED 474e6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 474e8: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 474ee: 4eb9 0004 a16c jsr 4a16c <_Objects_Get> <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
474f4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 474f8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 474fc: 6654 bnes 47552 <pthread_rwlock_timedwrlock+0x92><== NOT EXECUTED
(pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
int _EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_timedwrlock,
474fe: 7203 moveq #3,%d1 <== NOT EXECUTED 47500: b282 cmpl %d2,%d1 <== NOT EXECUTED 47502: 57c3 seq %d3 <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
47504: 42a7 clrl %sp@- <== NOT EXECUTED 47506: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 4750a: 4483 negl %d3 <== NOT EXECUTED 4750c: 4281 clrl %d1 <== NOT EXECUTED 4750e: 1203 moveb %d3,%d1 <== NOT EXECUTED 47510: 2040 moveal %d0,%a0 <== NOT EXECUTED 47512: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47514: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47516: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4751a: 4eb9 0004 9480 jsr 49480 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
do_wait,
ticks,
NULL
);
_Thread_Enable_dispatch();
47520: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !do_wait &&
47526: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4752a: 4a03 tstb %d3 <== NOT EXECUTED 4752c: 664a bnes 47578 <pthread_rwlock_timedwrlock+0xb8><== NOT EXECUTED
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
4752e: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
47534: 7202 moveq #2,%d1 <== NOT EXECUTED
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
47536: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
4753a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4753c: 6720 beqs 4755e <pthread_rwlock_timedwrlock+0x9e><== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
4753e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47540: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 47546: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47548: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4754e: 4e5e unlk %fp <== NOT EXECUTED 47550: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( !do_wait &&
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
47552: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47554: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4755a: 4e5e unlk %fp <== NOT EXECUTED 4755c: 4e75 rts <== NOT EXECUTED
);
_Thread_Enable_dispatch();
if ( !do_wait &&
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
4755e: 4a82 tstl %d2 <== NOT EXECUTED 47560: 67f0 beqs 47552 <pthread_rwlock_timedwrlock+0x92><== NOT EXECUTED
return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
47562: 5382 subql #1,%d2 <== NOT EXECUTED 47564: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 47568: b282 cmpl %d2,%d1 <== NOT EXECUTED 4756a: 65d2 bcss 4753e <pthread_rwlock_timedwrlock+0x7e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT;
4756c: 7074 moveq #116,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4756e: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 47574: 4e5e unlk %fp <== NOT EXECUTED 47576: 4e75 rts <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
47578: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4757e: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47582: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47584: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 4758a: 588f addql #4,%sp <== NOT EXECUTED 4758c: 60ba bras 47548 <pthread_rwlock_timedwrlock+0x88><== NOT EXECUTED
...
000475a8 <pthread_rwlock_tryrdlock>:
*/
int pthread_rwlock_tryrdlock(
pthread_rwlock_t *rwlock
)
{
475a8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 475ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475ae: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
475b2: 4a8a tstl %a2 <== NOT EXECUTED 475b4: 6752 beqs 47608 <pthread_rwlock_tryrdlock+0x60> <== NOT EXECUTED 475b6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 475ba: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 475bc: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 475c2: 4eb9 0004 a16c jsr 4a16c <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
475c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 475cc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 475d0: 6636 bnes 47608 <pthread_rwlock_tryrdlock+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
475d2: 42a7 clrl %sp@- <== NOT EXECUTED 475d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 475d6: 42a7 clrl %sp@- <== NOT EXECUTED 475d8: 42a7 clrl %sp@- <== NOT EXECUTED 475da: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 475dc: 4868 0010 pea %a0@(16) <== NOT EXECUTED 475e0: 4eb9 0004 93c0 jsr 493c0 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
475e6: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
475ec: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
475f2: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 475f6: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
475fc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47600: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47604: 4e5e unlk %fp <== NOT EXECUTED 47606: 4e75 rts <== NOT EXECUTED 47608: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4760c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4760e: 4e5e unlk %fp <== NOT EXECUTED
...
00047614 <pthread_rwlock_trywrlock>:
*/
int pthread_rwlock_trywrlock(
pthread_rwlock_t *rwlock
)
{
47614: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47618: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4761a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
4761e: 4a8a tstl %a2 <== NOT EXECUTED 47620: 6752 beqs 47674 <pthread_rwlock_trywrlock+0x60> <== NOT EXECUTED 47622: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47626: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47628: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 4762e: 4eb9 0004 a16c jsr 4a16c <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47634: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47638: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4763c: 6636 bnes 47674 <pthread_rwlock_trywrlock+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
4763e: 42a7 clrl %sp@- <== NOT EXECUTED 47640: 2040 moveal %d0,%a0 <== NOT EXECUTED 47642: 42a7 clrl %sp@- <== NOT EXECUTED 47644: 42a7 clrl %sp@- <== NOT EXECUTED 47646: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47648: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4764c: 4eb9 0004 9480 jsr 49480 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
false, /* we are not willing to wait */
0,
NULL
);
_Thread_Enable_dispatch();
47652: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
47658: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
4765e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 47662: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47668: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
4766c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47670: 4e5e unlk %fp <== NOT EXECUTED 47672: 4e75 rts <== NOT EXECUTED 47674: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47678: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4767a: 4e5e unlk %fp <== NOT EXECUTED
...
00047680 <pthread_rwlock_unlock>:
*/
int pthread_rwlock_unlock(
pthread_rwlock_t *rwlock
)
{
47680: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47684: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47688: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
CORE_RWLock_Status status;
if ( !rwlock )
4768a: 4a88 tstl %a0 <== NOT EXECUTED 4768c: 6742 beqs 476d0 <pthread_rwlock_unlock+0x50> <== NOT EXECUTED 4768e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47692: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 47694: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 4769a: 4eb9 0004 a16c jsr 4a16c <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
476a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 476a4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 476a8: 6626 bnes 476d0 <pthread_rwlock_unlock+0x50> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_RWLock_Release( &the_rwlock->RWLock );
476aa: 2040 moveal %d0,%a0 <== NOT EXECUTED 476ac: 4868 0010 pea %a0@(16) <== NOT EXECUTED 476b0: 4eb9 0004 9510 jsr 49510 <_CORE_RWLock_Release> <== NOT EXECUTED 476b6: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
476b8: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code( status );
476be: 2f02 movel %d2,%sp@- <== NOT EXECUTED 476c0: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
476c6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
status = _CORE_RWLock_Release( &the_rwlock->RWLock );
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code( status );
476ca: 508f addql #8,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
476cc: 4e5e unlk %fp <== NOT EXECUTED 476ce: 4e75 rts <== NOT EXECUTED 476d0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
476d4: 7016 moveq #22,%d0 <== NOT EXECUTED
}
476d6: 4e5e unlk %fp <== NOT EXECUTED
...
000476dc <pthread_rwlock_wrlock>:
*/
int pthread_rwlock_wrlock(
pthread_rwlock_t *rwlock
)
{
476dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 476e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 476e2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
476e6: 4a8a tstl %a2 <== NOT EXECUTED 476e8: 6754 beqs 4773e <pthread_rwlock_wrlock+0x62> <== NOT EXECUTED 476ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED 476ee: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 476f0: 4879 0006 2c8e pea 62c8e <_POSIX_RWLock_Information> <== NOT EXECUTED 476f6: 4eb9 0004 a16c jsr 4a16c <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
476fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47700: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47704: 6638 bnes 4773e <pthread_rwlock_wrlock+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
47706: 42a7 clrl %sp@- <== NOT EXECUTED 47708: 2040 moveal %d0,%a0 <== NOT EXECUTED 4770a: 42a7 clrl %sp@- <== NOT EXECUTED 4770c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 47710: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47712: 4868 0010 pea %a0@(16) <== NOT EXECUTED 47716: 4eb9 0004 9480 jsr 49480 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
true, /* do not timeout -- wait forever */
0,
NULL
);
_Thread_Enable_dispatch();
4771c: 4eb9 0004 a9fa jsr 4a9fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
47722: 2079 0006 2f90 moveal 62f90 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47728: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4772c: 4eb9 0004 7590 jsr 47590 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47732: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47736: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4773a: 4e5e unlk %fp <== NOT EXECUTED 4773c: 4e75 rts <== NOT EXECUTED 4773e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47742: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47744: 4e5e unlk %fp <== NOT EXECUTED
00047dd0 <pthread_rwlockattr_destroy>:
*/
int pthread_rwlockattr_destroy(
pthread_rwlockattr_t *attr
)
{
47dd0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47dd4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
47dd8: 4a88 tstl %a0 <== NOT EXECUTED 47dda: 670c beqs 47de8 <pthread_rwlockattr_destroy+0x18><== NOT EXECUTED 47ddc: 4a90 tstl %a0@ <== NOT EXECUTED 47dde: 6708 beqs 47de8 <pthread_rwlockattr_destroy+0x18><== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
47de0: 4280 clrl %d0 <== NOT EXECUTED
}
47de2: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
attr->is_initialized = false;
47de4: 4290 clrl %a0@ <== NOT EXECUTED
return 0; }
47de6: 4e75 rts <== NOT EXECUTED
int pthread_rwlockattr_destroy(
pthread_rwlockattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
47de8: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
47dea: 4e5e unlk %fp <== NOT EXECUTED
...
00047df0 <pthread_rwlockattr_getpshared>:
int pthread_rwlockattr_getpshared(
const pthread_rwlockattr_t *attr,
int *pshared
)
{
47df0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47df4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
47df8: 4a88 tstl %a0 <== NOT EXECUTED 47dfa: 6712 beqs 47e0e <pthread_rwlockattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
47dfc: 4a90 tstl %a0@ <== NOT EXECUTED 47dfe: 670e beqs 47e0e <pthread_rwlockattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
47e00: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
47e04: 4280 clrl %d0 <== NOT EXECUTED
}
47e06: 4e5e unlk %fp <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
*pshared = attr->process_shared;
47e08: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0; }
47e0c: 4e75 rts <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
47e0e: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
47e10: 4e5e unlk %fp <== NOT EXECUTED
00047e14 <pthread_rwlockattr_init>:
*/
int pthread_rwlockattr_init(
pthread_rwlockattr_t *attr
)
{
47e14: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47e18: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
47e1c: 4a88 tstl %a0 <== NOT EXECUTED 47e1e: 670e beqs 47e2e <pthread_rwlockattr_init+0x1a> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = true;
47e20: 7001 moveq #1,%d0 <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; }
47e22: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
47e24: 2080 movel %d0,%a0@ <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0;
47e26: 4280 clrl %d0 <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
47e28: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
return 0; }
47e2c: 4e75 rts <== NOT EXECUTED
int pthread_rwlockattr_init(
pthread_rwlockattr_t *attr
)
{
if ( !attr )
return EINVAL;
47e2e: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
47e30: 4e5e unlk %fp <== NOT EXECUTED
00047e34 <pthread_rwlockattr_setpshared>:
int pthread_rwlockattr_setpshared(
pthread_rwlockattr_t *attr,
int pshared
)
{
47e34: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47e38: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47e3c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
47e40: 4a88 tstl %a0 <== NOT EXECUTED 47e42: 670a beqs 47e4e <pthread_rwlockattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
47e44: 4a90 tstl %a0@ <== NOT EXECUTED 47e46: 6706 beqs 47e4e <pthread_rwlockattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
47e48: 7201 moveq #1,%d1 <== NOT EXECUTED 47e4a: b280 cmpl %d0,%d1 <== NOT EXECUTED 47e4c: 6406 bccs 47e54 <pthread_rwlockattr_setpshared+0x20><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
47e4e: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
47e50: 4e5e unlk %fp <== NOT EXECUTED 47e52: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
47e54: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
47e58: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
47e5a: 4e5e unlk %fp <== NOT EXECUTED
...
0005c614 <pthread_self>:
#include <rtems/system.h>
#include <rtems/score/thread.h>
pthread_t pthread_self( void )
{
5c614: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Thread_Executing->Object.id;
5c618: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
}
5c61e: 4e5e unlk %fp <== NOT EXECUTED 5c620: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
...
00045fbc <pthread_setcancelstate>:
int pthread_setcancelstate(
int state,
int *oldstate
)
{
45fbc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45fc0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 45fc4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
* Don't even think about deleting a resource from an ISR.
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
45fc8: 4ab9 0006 091c tstl 6091c <_Per_CPU_Information+0x8> <== NOT EXECUTED 45fce: 6610 bnes 45fe0 <pthread_setcancelstate+0x24> <== NOT EXECUTED
return EPROTO;
if ( !oldstate )
45fd0: 4a88 tstl %a0 <== NOT EXECUTED 45fd2: 6706 beqs 45fda <pthread_setcancelstate+0x1e> <== NOT EXECUTED
return EINVAL;
if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE )
45fd4: 7201 moveq #1,%d1 <== NOT EXECUTED 45fd6: b280 cmpl %d0,%d1 <== NOT EXECUTED 45fd8: 640c bccs 45fe6 <pthread_setcancelstate+0x2a> <== NOT EXECUTED
return EINVAL;
45fda: 7016 moveq #22,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
45fdc: 4e5e unlk %fp <== NOT EXECUTED 45fde: 4e75 rts <== NOT EXECUTED
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
return EPROTO;
45fe0: 7047 moveq #71,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
45fe2: 4e5e unlk %fp <== NOT EXECUTED 45fe4: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE )
return EINVAL;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
45fe6: 2279 0006 0920 moveal 60920 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45fec: 2239 0006 0490 movel 60490 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 45ff2: 5281 addql #1,%d1 <== NOT EXECUTED 45ff4: 2269 010e moveal %a1@(270),%a1 <== NOT EXECUTED 45ff8: 23c1 0006 0490 movel %d1,60490 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
*oldstate = thread_support->cancelability_state;
45ffe: 20a9 00d8 movel %a1@(216),%a0@ <== NOT EXECUTED
thread_support->cancelability_state = state;
46002: 2340 00d8 movel %d0,%a1@(216) <== NOT EXECUTED
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing);
46006: 2f39 0006 0920 movel 60920 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4600c: 4eb9 0004 b9c8 jsr 4b9c8 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
46012: 588f addql #4,%sp <== NOT EXECUTED 46014: 4280 clrl %d0 <== NOT EXECUTED
}
46016: 4e5e unlk %fp <== NOT EXECUTED
...
0004601c <pthread_setcanceltype>:
int pthread_setcanceltype(
int type,
int *oldtype
)
{
4601c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46020: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46024: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
* Don't even think about deleting a resource from an ISR.
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
46028: 4ab9 0006 091c tstl 6091c <_Per_CPU_Information+0x8> <== NOT EXECUTED 4602e: 6610 bnes 46040 <pthread_setcanceltype+0x24> <== NOT EXECUTED
return EPROTO;
if ( !oldtype )
46030: 4a88 tstl %a0 <== NOT EXECUTED 46032: 6706 beqs 4603a <pthread_setcanceltype+0x1e> <== NOT EXECUTED
return EINVAL;
if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS )
46034: 7201 moveq #1,%d1 <== NOT EXECUTED 46036: b280 cmpl %d0,%d1 <== NOT EXECUTED 46038: 640c bccs 46046 <pthread_setcanceltype+0x2a> <== NOT EXECUTED
return EINVAL;
4603a: 7016 moveq #22,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
4603c: 4e5e unlk %fp <== NOT EXECUTED 4603e: 4e75 rts <== NOT EXECUTED
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
return EPROTO;
46040: 7047 moveq #71,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
46042: 4e5e unlk %fp <== NOT EXECUTED 46044: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS )
return EINVAL;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
46046: 2279 0006 0920 moveal 60920 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4604c: 2239 0006 0490 movel 60490 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 46052: 5281 addql #1,%d1 <== NOT EXECUTED 46054: 2269 010e moveal %a1@(270),%a1 <== NOT EXECUTED 46058: 23c1 0006 0490 movel %d1,60490 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
*oldtype = thread_support->cancelability_type;
4605e: 20a9 00dc movel %a1@(220),%a0@ <== NOT EXECUTED
thread_support->cancelability_type = type;
46062: 2340 00dc movel %d0,%a1@(220) <== NOT EXECUTED
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing);
46066: 2f39 0006 0920 movel 60920 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4606c: 4eb9 0004 b9c8 jsr 4b9c8 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
46072: 588f addql #4,%sp <== NOT EXECUTED 46074: 4280 clrl %d0 <== NOT EXECUTED
}
46076: 4e5e unlk %fp <== NOT EXECUTED
...
0004908c <pthread_setschedparam>:
int pthread_setschedparam(
pthread_t thread,
int policy,
struct sched_param *param
)
{
4908c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 49090: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 49094: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 49098: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
int rc;
/*
* Check all the parameters
*/
if ( !param )
4909c: 6700 00c4 beqw 49162 <pthread_setschedparam+0xd6> <== NOT EXECUTED
return EINVAL;
rc = _POSIX_Thread_Translate_sched_param(
490a0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 490a4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 490a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 490aa: 2f04 movel %d4,%sp@- <== NOT EXECUTED 490ac: 4eb9 0004 f264 jsr 4f264 <_POSIX_Thread_Translate_sched_param><== NOT EXECUTED
policy,
param,
&budget_algorithm,
&budget_callout
);
if ( rc )
490b2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
* Check all the parameters
*/
if ( !param )
return EINVAL;
rc = _POSIX_Thread_Translate_sched_param(
490b6: 2600 movel %d0,%d3 <== NOT EXECUTED
policy,
param,
&budget_algorithm,
&budget_callout
);
if ( rc )
490b8: 670c beqs 490c6 <pthread_setschedparam+0x3a> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
490ba: 2003 movel %d3,%d0 <== NOT EXECUTED 490bc: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED 490c2: 4e5e unlk %fp <== NOT EXECUTED 490c4: 4e75 rts <== NOT EXECUTED 490c6: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 490ca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 490ce: 4879 0006 51b4 pea 651b4 <_POSIX_Threads_Information> <== NOT EXECUTED 490d4: 4eb9 0004 b280 jsr 4b280 <_Objects_Get> <== NOT EXECUTED
/*
* Actually change the scheduling policy and parameters
*/
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
490da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 490de: 2440 moveal %d0,%a2 <== NOT EXECUTED 490e0: 4aae fff4 tstl %fp@(-12) <== NOT EXECUTED 490e4: 6600 008a bnew 49170 <pthread_setschedparam+0xe4> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
490e8: 266a 010e moveal %a2@(270),%a3 <== NOT EXECUTED
if ( api->schedpolicy == SCHED_SPORADIC )
490ec: 7004 moveq #4,%d0 <== NOT EXECUTED 490ee: b0ab 0084 cmpl %a3@(132),%d0 <== NOT EXECUTED 490f2: 6700 00b8 beqw 491ac <pthread_setschedparam+0x120> <== NOT EXECUTED
(void) _Watchdog_Remove( &api->Sporadic_timer );
api->schedpolicy = policy;
api->schedparam = *param;
490f6: 41eb 0088 lea %a3@(136),%a0 <== NOT EXECUTED 490fa: 2242 moveal %d2,%a1 <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( api->schedpolicy == SCHED_SPORADIC )
(void) _Watchdog_Remove( &api->Sporadic_timer );
api->schedpolicy = policy;
490fc: 2744 0084 movel %d4,%a3@(132) <== NOT EXECUTED
api->schedparam = *param;
49100: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 49102: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 49104: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 49106: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 49108: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4910a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 4910c: 2091 movel %a1@,%a0@ <== NOT EXECUTED
the_thread->budget_algorithm = budget_algorithm;
4910e: 256e fffc 007a movel %fp@(-4),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = budget_callout;
49114: 256e fff8 007e movel %fp@(-8),%a2@(126) <== NOT EXECUTED
switch ( api->schedpolicy ) {
4911a: 4a84 tstl %d4 <== NOT EXECUTED 4911c: 6d32 blts 49150 <pthread_setschedparam+0xc4> <== NOT EXECUTED 4911e: 7002 moveq #2,%d0 <== NOT EXECUTED 49120: b084 cmpl %d4,%d0 <== NOT EXECUTED 49122: 6d5a blts 4917e <pthread_setschedparam+0xf2> <== NOT EXECUTED 49124: 4280 clrl %d0 <== NOT EXECUTED 49126: 1039 0006 3706 moveb 63706 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
case SCHED_OTHER:
case SCHED_FIFO:
case SCHED_RR:
the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;
4912c: 41f9 0006 4fa4 lea 64fa4 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 49132: 90ab 0088 subl %a3@(136),%d0 <== NOT EXECUTED 49136: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
the_thread->real_priority =
4913a: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
_POSIX_Priority_To_core( api->schedparam.sched_priority );
_Thread_Change_priority(
4913e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 49142: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49144: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49146: 4eb9 0004 b5dc jsr 4b5dc <_Thread_Change_priority> <== NOT EXECUTED
the_thread,
the_thread->real_priority,
true
);
break;
4914c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
_Watchdog_Remove( &api->Sporadic_timer );
_POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );
break;
}
_Thread_Enable_dispatch();
49150: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
49156: 2003 movel %d3,%d0 <== NOT EXECUTED 49158: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4915e: 4e5e unlk %fp <== NOT EXECUTED 49160: 4e75 rts <== NOT EXECUTED
/*
* Check all the parameters
*/
if ( !param )
return EINVAL;
49162: 7616 moveq #22,%d3 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
49164: 2003 movel %d3,%d0 <== NOT EXECUTED 49166: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4916c: 4e5e unlk %fp <== NOT EXECUTED 4916e: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
49170: 7603 moveq #3,%d3 <== NOT EXECUTED
}
49172: 2003 movel %d3,%d0 <== NOT EXECUTED 49174: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4917a: 4e5e unlk %fp <== NOT EXECUTED 4917c: 4e75 rts <== NOT EXECUTED
api->schedpolicy = policy;
api->schedparam = *param;
the_thread->budget_algorithm = budget_algorithm;
the_thread->budget_callout = budget_callout;
switch ( api->schedpolicy ) {
4917e: 103c 0004 moveb #4,%d0 <== NOT EXECUTED 49182: b084 cmpl %d4,%d0 <== NOT EXECUTED 49184: 66ca bnes 49150 <pthread_setschedparam+0xc4> <== NOT EXECUTED
true
);
break;
case SCHED_SPORADIC:
api->ss_high_priority = api->schedparam.sched_priority;
49186: 276b 0088 00a4 movel %a3@(136),%a3@(164) <== NOT EXECUTED
_Watchdog_Remove( &api->Sporadic_timer );
4918c: 486b 00a8 pea %a3@(168) <== NOT EXECUTED 49190: 4eb9 0004 cff4 jsr 4cff4 <_Watchdog_Remove> <== NOT EXECUTED
_POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );
49196: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49198: 42a7 clrl %sp@- <== NOT EXECUTED 4919a: 4eb9 0004 8f3c jsr 48f3c <_POSIX_Threads_Sporadic_budget_TSR><== NOT EXECUTED
break;
491a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
_Thread_Enable_dispatch();
491a4: 4eb9 0004 bb0e jsr 4bb0e <_Thread_Enable_dispatch> <== NOT EXECUTED 491aa: 60aa bras 49156 <pthread_setschedparam+0xca> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( api->schedpolicy == SCHED_SPORADIC )
(void) _Watchdog_Remove( &api->Sporadic_timer );
491ac: 486b 00a8 pea %a3@(168) <== NOT EXECUTED 491b0: 4eb9 0004 cff4 jsr 4cff4 <_Watchdog_Remove> <== NOT EXECUTED 491b6: 588f addql #4,%sp <== NOT EXECUTED
api->schedpolicy = policy;
api->schedparam = *param;
491b8: 41eb 0088 lea %a3@(136),%a0 <== NOT EXECUTED 491bc: 2242 moveal %d2,%a1 <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( api->schedpolicy == SCHED_SPORADIC )
(void) _Watchdog_Remove( &api->Sporadic_timer );
api->schedpolicy = policy;
491be: 2744 0084 movel %d4,%a3@(132) <== NOT EXECUTED
api->schedparam = *param;
491c2: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491c4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491c6: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491c8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491ca: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491cc: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 491ce: 2091 movel %a1@,%a0@ <== NOT EXECUTED
the_thread->budget_algorithm = budget_algorithm;
491d0: 256e fffc 007a movel %fp@(-4),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = budget_callout;
491d6: 256e fff8 007e movel %fp@(-8),%a2@(126) <== NOT EXECUTED
switch ( api->schedpolicy ) {
491dc: 4a84 tstl %d4 <== NOT EXECUTED 491de: 6c00 ff3e bgew 4911e <pthread_setschedparam+0x92> <== NOT EXECUTED 491e2: 6000 ff6c braw 49150 <pthread_setschedparam+0xc4> <== NOT EXECUTED
...
000465c4 <pthread_setspecific>:
int pthread_setspecific(
pthread_key_t key,
const void *value
)
{
465c4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 465c8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 465ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465cc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 465d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 465d4: 4879 0006 1fc2 pea 61fc2 <_POSIX_Keys_Information> <== NOT EXECUTED 465da: 4eb9 0004 8e48 jsr 48e48 <_Objects_Get> <== NOT EXECUTED
uint32_t api;
uint32_t index;
Objects_Locations location;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
465e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 465e4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 465e8: 663e bnes 46628 <pthread_setspecific+0x64> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
465ea: 2079 0006 20dc moveal 620dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 465f0: 7618 moveq #24,%d3 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
the_key->Values[ api ][ index ] = (void *) value;
465f2: 2240 moveal %d0,%a1 <== NOT EXECUTED
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
465f4: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED 465f8: 2202 movel %d2,%d1 <== NOT EXECUTED 465fa: e6a9 lsrl %d3,%d1 <== NOT EXECUTED 465fc: 163c 0007 moveb #7,%d3 <== NOT EXECUTED 46600: c283 andl %d3,%d1 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
46602: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
the_key->Values[ api ][ index ] = (void *) value;
46608: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED 4660c: 43ee 000c lea %fp@(12),%a1 <== NOT EXECUTED 46610: 2191 2c00 movel %a1@,%a0@(00000000,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
46614: 4eb9 0004 96d6 jsr 496d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4661a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
index = _Objects_Get_index( _Thread_Executing->Object.id );
the_key->Values[ api ][ index ] = (void *) value;
_Thread_Enable_dispatch();
return 0;
4661e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46620: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 46624: 4e5e unlk %fp <== NOT EXECUTED 46626: 4e75 rts <== NOT EXECUTED 46628: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4662c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4662e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 46632: 4e5e unlk %fp <== NOT EXECUTED
...
0004d378 <pthread_sigmask>:
int pthread_sigmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
4d378: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4d37c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4d380: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d382: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d386: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
POSIX_API_Control *api;
if ( !set && !oset )
4d38a: 4a89 tstl %a1 <== NOT EXECUTED 4d38c: 6700 0084 beqw 4d412 <pthread_sigmask+0x9a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4d390: 2079 0006 215c moveal 6215c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4d396: 2068 010e moveal %a0@(270),%a0 <== NOT EXECUTED
if ( oset )
4d39a: 4a8a tstl %a2 <== NOT EXECUTED 4d39c: 6708 beqs 4d3a6 <pthread_sigmask+0x2e> <== NOT EXECUTED
*oset = api->signals_blocked;
4d39e: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED
if ( !set )
4d3a2: 4a89 tstl %a1 <== NOT EXECUTED 4d3a4: 673a beqs 4d3e0 <pthread_sigmask+0x68> <== NOT EXECUTED
return 0;
switch ( how ) {
4d3a6: 7201 moveq #1,%d1 <== NOT EXECUTED 4d3a8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d3aa: 675e beqs 4d40a <pthread_sigmask+0x92> <== NOT EXECUTED 4d3ac: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4d3b0: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d3b2: 6736 beqs 4d3ea <pthread_sigmask+0x72> <== NOT EXECUTED 4d3b4: 4a80 tstl %d0 <== NOT EXECUTED 4d3b6: 663c bnes 4d3f4 <pthread_sigmask+0x7c> <== NOT EXECUTED
break;
case SIG_UNBLOCK:
api->signals_blocked &= ~*set;
break;
case SIG_SETMASK:
api->signals_blocked = *set;
4d3b8: 2151 00d0 movel %a1@,%a0@(208) <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending) ) {
4d3bc: 2039 0006 235e movel 6235e <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
4d3c2: 2228 00d0 movel %a0@(208),%d1 <== NOT EXECUTED 4d3c6: 4681 notl %d1 <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
4d3c8: 80a8 00d4 orl %a0@(212),%d0 <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
4d3cc: c081 andl %d1,%d0 <== NOT EXECUTED 4d3ce: 6710 beqs 4d3e0 <pthread_sigmask+0x68> <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
4d3d0: 4eb9 0004 96dc jsr 496dc <_Thread_Dispatch> <== NOT EXECUTED
}
return 0;
}
4d3d6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( ~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
4d3da: 4280 clrl %d0 <== NOT EXECUTED
}
4d3dc: 4e5e unlk %fp <== NOT EXECUTED 4d3de: 4e75 rts <== NOT EXECUTED 4d3e0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( ~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
4d3e4: 4280 clrl %d0 <== NOT EXECUTED
}
4d3e6: 4e5e unlk %fp <== NOT EXECUTED 4d3e8: 4e75 rts <== NOT EXECUTED
switch ( how ) {
case SIG_BLOCK:
api->signals_blocked |= *set;
break;
case SIG_UNBLOCK:
api->signals_blocked &= ~*set;
4d3ea: 2011 movel %a1@,%d0 <== NOT EXECUTED 4d3ec: 4680 notl %d0 <== NOT EXECUTED 4d3ee: c1a8 00d0 andl %d0,%a0@(208) <== NOT EXECUTED
break;
4d3f2: 60c8 bras 4d3bc <pthread_sigmask+0x44> <== NOT EXECUTED
case SIG_SETMASK:
api->signals_blocked = *set;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4d3f4: 4eb9 0004 fb80 jsr 4fb80 <__errno> <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d3fa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
break;
case SIG_SETMASK:
api->signals_blocked = *set;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4d3fe: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d400: 7216 moveq #22,%d1 <== NOT EXECUTED 4d402: 70ff moveq #-1,%d0 <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d404: 4e5e unlk %fp <== NOT EXECUTED
break;
case SIG_SETMASK:
api->signals_blocked = *set;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4d406: 2081 movel %d1,%a0@ <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d408: 4e75 rts <== NOT EXECUTED
if ( !set )
return 0;
switch ( how ) {
case SIG_BLOCK:
api->signals_blocked |= *set;
4d40a: 2011 movel %a1@,%d0 <== NOT EXECUTED 4d40c: 81a8 00d0 orl %d0,%a0@(208) <== NOT EXECUTED
break;
4d410: 60aa bras 4d3bc <pthread_sigmask+0x44> <== NOT EXECUTED
sigset_t *oset
)
{
POSIX_API_Control *api;
if ( !set && !oset )
4d412: 4a8a tstl %a2 <== NOT EXECUTED 4d414: 67de beqs 4d3f4 <pthread_sigmask+0x7c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4d416: 2079 0006 215c moveal 6215c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4d41c: 2068 010e moveal %a0@(270),%a0 <== NOT EXECUTED
if ( oset )
*oset = api->signals_blocked;
4d420: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED
if ( !set )
4d424: 4a89 tstl %a1 <== NOT EXECUTED 4d426: 6600 ff7e bnew 4d3a6 <pthread_sigmask+0x2e> <== NOT EXECUTED 4d42a: 60b4 bras 4d3e0 <pthread_sigmask+0x68> <== NOT EXECUTED
000465b4 <pthread_spin_destroy>:
*/
int pthread_spin_destroy(
pthread_spinlock_t *spinlock
)
{
465b4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 465b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
if ( !spinlock )
465bc: 4a88 tstl %a0 <== NOT EXECUTED 465be: 6730 beqs 465f0 <pthread_spin_destroy+0x3c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get (
pthread_spinlock_t *spinlock,
Objects_Locations *location
)
{
return (POSIX_Spinlock_Control *) _Objects_Get(
465c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 465c4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 465c6: 4879 0006 100e pea 6100e <_POSIX_Spinlock_Information> <== NOT EXECUTED 465cc: 4eb9 0004 8980 jsr 48980 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
465d2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 465d6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 465da: 6614 bnes 465f0 <pthread_spin_destroy+0x3c> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy(
CORE_spinlock_Control *the_spinlock
)
{
return (the_spinlock->users != 0);
465dc: 2040 moveal %d0,%a0 <== NOT EXECUTED 465de: 2228 0018 movel %a0@(24),%d1 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _CORE_spinlock_Is_busy( &the_spinlock->Spinlock ) ) {
465e2: 6712 beqs 465f6 <pthread_spin_destroy+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
465e4: 4eb9 0004 920e jsr 4920e <_Thread_Enable_dispatch> <== NOT EXECUTED
return EBUSY;
465ea: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
465ec: 4e5e unlk %fp <== NOT EXECUTED 465ee: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
465f0: 7016 moveq #22,%d0 <== NOT EXECUTED
}
465f2: 4e5e unlk %fp <== NOT EXECUTED 465f4: 4e75 rts <== NOT EXECUTED
if ( _CORE_spinlock_Is_busy( &the_spinlock->Spinlock ) ) {
_Thread_Enable_dispatch();
return EBUSY;
}
_Objects_Close( &_POSIX_Spinlock_Information, &the_spinlock->Object );
465f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465f8: 4879 0006 100e pea 6100e <_POSIX_Spinlock_Information> <== NOT EXECUTED 465fe: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 46602: 4eb9 0004 8550 jsr 48550 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Spinlock_Free (
POSIX_Spinlock_Control *the_spinlock
)
{
_Objects_Free( &_POSIX_Spinlock_Information, &the_spinlock->Object );
46608: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4660c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4660e: 4879 0006 100e pea 6100e <_POSIX_Spinlock_Information> <== NOT EXECUTED 46614: 4eb9 0004 8814 jsr 48814 <_Objects_Free> <== NOT EXECUTED
_POSIX_Spinlock_Free( the_spinlock );
_Thread_Enable_dispatch();
4661a: 4eb9 0004 920e jsr 4920e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46620: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46624: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46626: 4e5e unlk %fp <== NOT EXECUTED
...
0004662c <pthread_spin_init>:
int pthread_spin_init(
pthread_spinlock_t *spinlock,
int pshared
)
{
4662c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46630: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46632: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46634: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock;
CORE_spinlock_Attributes attributes;
if ( !spinlock )
46638: 4a8a tstl %a2 <== NOT EXECUTED 4663a: 6766 beqs 466a2 <pthread_spin_init+0x76> <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
4663c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 46640: 6660 bnes 466a2 <pthread_spin_init+0x76> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46642: 2039 0006 0e0c movel 60e0c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46648: 5280 addql #1,%d0 <== NOT EXECUTED 4664a: 23c0 0006 0e0c movel %d0,60e0c <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free spinlock control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Allocate( void )
{
return (POSIX_Spinlock_Control *)
_Objects_Allocate( &_POSIX_Spinlock_Information );
46650: 4879 0006 100e pea 6100e <_POSIX_Spinlock_Information> <== NOT EXECUTED 46656: 4eb9 0004 84c0 jsr 484c0 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_spinlock = _POSIX_Spinlock_Allocate();
if ( !the_spinlock ) {
4665c: 588f addql #4,%sp <== NOT EXECUTED 4665e: 2640 moveal %d0,%a3 <== NOT EXECUTED 46660: 4a80 tstl %d0 <== NOT EXECUTED 46662: 674c beqs 466b0 <pthread_spin_init+0x84> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _CORE_spinlock_Initialize_attributes(
CORE_spinlock_Attributes *the_attributes
)
{
the_attributes->XXX = 0;
46664: 204e moveal %fp,%a0 <== NOT EXECUTED 46666: 42a0 clrl %a0@- <== NOT EXECUTED
return EAGAIN;
}
_CORE_spinlock_Initialize_attributes( &attributes );
_CORE_spinlock_Initialize( &the_spinlock->Spinlock, &attributes );
46668: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4666a: 486b 0010 pea %a3@(16) <== NOT EXECUTED 4666e: 4eb9 0004 7dcc jsr 47dcc <_CORE_spinlock_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46674: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46678: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4667a: 2079 0006 1026 moveal 61026 <_POSIX_Spinlock_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46680: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46682: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
46686: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
_Objects_Open_u32( &_POSIX_Spinlock_Information, &the_spinlock->Object, 0 );
*spinlock = the_spinlock->Object.id;
4668a: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4668c: 4eb9 0004 920e jsr 4920e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
46692: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
_Objects_Open_u32( &_POSIX_Spinlock_Information, &the_spinlock->Object, 0 );
*spinlock = the_spinlock->Object.id;
_Thread_Enable_dispatch();
return 0;
46696: 508f addql #8,%sp <== NOT EXECUTED 46698: 4280 clrl %d0 <== NOT EXECUTED
}
4669a: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4669e: 4e5e unlk %fp <== NOT EXECUTED 466a0: 4e75 rts <== NOT EXECUTED 466a2: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
switch ( pshared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
466a6: 7016 moveq #22,%d0 <== NOT EXECUTED
*spinlock = the_spinlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
466a8: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 466ac: 4e5e unlk %fp <== NOT EXECUTED 466ae: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_spinlock = _POSIX_Spinlock_Allocate();
if ( !the_spinlock ) {
_Thread_Enable_dispatch();
466b0: 4eb9 0004 920e jsr 4920e <_Thread_Enable_dispatch> <== NOT EXECUTED
*spinlock = the_spinlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
466b6: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
the_spinlock = _POSIX_Spinlock_Allocate();
if ( !the_spinlock ) {
_Thread_Enable_dispatch();
return EAGAIN;
466ba: 700b moveq #11,%d0 <== NOT EXECUTED
*spinlock = the_spinlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
466bc: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 466c0: 4e5e unlk %fp <== NOT EXECUTED
000466c4 <pthread_spin_lock>:
*/
int pthread_spin_lock(
pthread_spinlock_t *spinlock
)
{
466c4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 466c8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 466cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
466ce: 4a88 tstl %a0 <== NOT EXECUTED 466d0: 674a beqs 4671c <pthread_spin_lock+0x58> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get (
pthread_spinlock_t *spinlock,
Objects_Locations *location
)
{
return (POSIX_Spinlock_Control *) _Objects_Get(
466d2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 466d6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 466d8: 4879 0006 100e pea 6100e <_POSIX_Spinlock_Information> <== NOT EXECUTED 466de: 4eb9 0004 8980 jsr 48980 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
466e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 466e8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 466ec: 662e bnes 4671c <pthread_spin_lock+0x58> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, true, 0 );
466ee: 42a7 clrl %sp@- <== NOT EXECUTED 466f0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 466f4: 2040 moveal %d0,%a0 <== NOT EXECUTED 466f6: 4868 0010 pea %a0@(16) <== NOT EXECUTED 466fa: 4eb9 0004 7e44 jsr 47e44 <_CORE_spinlock_Wait> <== NOT EXECUTED 46700: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
46702: 4eb9 0004 920e jsr 4920e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
46708: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4670a: 4eb9 0004 6728 jsr 46728 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46710: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, true, 0 );
_Thread_Enable_dispatch();
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
46714: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46718: 4e5e unlk %fp <== NOT EXECUTED 4671a: 4e75 rts <== NOT EXECUTED 4671c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46720: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46722: 4e5e unlk %fp <== NOT EXECUTED
...
00046740 <pthread_spin_trylock>:
*/
int pthread_spin_trylock(
pthread_spinlock_t *spinlock
)
{
46740: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46744: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46748: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
4674a: 4a88 tstl %a0 <== NOT EXECUTED 4674c: 6748 beqs 46796 <pthread_spin_trylock+0x56> <== NOT EXECUTED 4674e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46752: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 46754: 4879 0006 100e pea 6100e <_POSIX_Spinlock_Information> <== NOT EXECUTED 4675a: 4eb9 0004 8980 jsr 48980 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
46760: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46764: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46768: 662c bnes 46796 <pthread_spin_trylock+0x56> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, false, 0 );
4676a: 42a7 clrl %sp@- <== NOT EXECUTED 4676c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4676e: 42a7 clrl %sp@- <== NOT EXECUTED 46770: 4868 0010 pea %a0@(16) <== NOT EXECUTED 46774: 4eb9 0004 7e44 jsr 47e44 <_CORE_spinlock_Wait> <== NOT EXECUTED 4677a: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
4677c: 4eb9 0004 920e jsr 4920e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
46782: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46784: 4eb9 0004 6728 jsr 46728 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4678a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, false, 0 );
_Thread_Enable_dispatch();
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
4678e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46792: 4e5e unlk %fp <== NOT EXECUTED 46794: 4e75 rts <== NOT EXECUTED 46796: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4679a: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4679c: 4e5e unlk %fp <== NOT EXECUTED
000467a0 <pthread_spin_unlock>:
*/
int pthread_spin_unlock(
pthread_spinlock_t *spinlock
)
{
467a0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 467a4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 467a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
467aa: 4a88 tstl %a0 <== NOT EXECUTED 467ac: 6742 beqs 467f0 <pthread_spin_unlock+0x50> <== NOT EXECUTED 467ae: 486e fffc pea %fp@(-4) <== NOT EXECUTED 467b2: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 467b4: 4879 0006 100e pea 6100e <_POSIX_Spinlock_Information> <== NOT EXECUTED 467ba: 4eb9 0004 8980 jsr 48980 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
467c0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 467c4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 467c8: 6626 bnes 467f0 <pthread_spin_unlock+0x50> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Release( &the_spinlock->Spinlock );
467ca: 2040 moveal %d0,%a0 <== NOT EXECUTED 467cc: 4868 0010 pea %a0@(16) <== NOT EXECUTED 467d0: 4eb9 0004 7dec jsr 47dec <_CORE_spinlock_Release> <== NOT EXECUTED 467d6: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
467d8: 4eb9 0004 920e jsr 4920e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
467de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 467e0: 4eb9 0004 6728 jsr 46728 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
467e6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
status = _CORE_spinlock_Release( &the_spinlock->Spinlock );
_Thread_Enable_dispatch();
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
467ea: 508f addql #8,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
467ec: 4e5e unlk %fp <== NOT EXECUTED 467ee: 4e75 rts <== NOT EXECUTED 467f0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
467f4: 7016 moveq #22,%d0 <== NOT EXECUTED
}
467f6: 4e5e unlk %fp <== NOT EXECUTED
...
00046bb8 <pthread_testcancel>:
*
* 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183
*/
void pthread_testcancel( void )
{
46bb8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* Don't even think about deleting a resource from an ISR.
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
46bbc: 4ab9 0006 1334 tstl 61334 <_Per_CPU_Information+0x8> <== NOT EXECUTED 46bc2: 663c bnes 46c00 <pthread_testcancel+0x48> <== NOT EXECUTED
return;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
46bc4: 2079 0006 1338 moveal 61338 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 46bca: 2039 0006 0ea8 movel 60ea8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46bd0: 5280 addql #1,%d0 <== NOT EXECUTED 46bd2: 2068 010e moveal %a0@(270),%a0 <== NOT EXECUTED 46bd6: 23c0 0006 0ea8 movel %d0,60ea8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
46bdc: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED 46be0: 6622 bnes 46c04 <pthread_testcancel+0x4c> <== NOT EXECUTED 46be2: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED 46be6: 671c beqs 46c04 <pthread_testcancel+0x4c> <== NOT EXECUTED
thread_support->cancelation_requested )
cancel = true;
_Thread_Enable_dispatch();
46be8: 4eb9 0004 945e jsr 4945e <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( cancel )
_POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );
46bee: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 46bf2: 2f39 0006 1338 movel 61338 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 46bf8: 4eb9 0004 ccac jsr 4ccac <_POSIX_Thread_Exit> <== NOT EXECUTED 46bfe: 508f addql #8,%sp <== NOT EXECUTED
}
46c00: 4e5e unlk %fp <== NOT EXECUTED 46c02: 4e75 rts <== NOT EXECUTED 46c04: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Disable_dispatch();
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
thread_support->cancelation_requested )
cancel = true;
_Thread_Enable_dispatch();
46c06: 4ef9 0004 945e jmp 4945e <_Thread_Enable_dispatch> <== NOT EXECUTED
00043d90 <putk>:
* putk
*
* Kernel putk (e.g. puts) function requiring minimal infrastrure.
*/
void putk(const char *s)
{
43d90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43d94: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43d96: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
const char *p = s;
for (p=s ; *p ; p++ )
43d9a: 1012 moveb %a2@,%d0 <== NOT EXECUTED 43d9c: 6714 beqs 43db2 <putk+0x22> <== NOT EXECUTED
/* * putk * * Kernel putk (e.g. puts) function requiring minimal infrastrure. */ void putk(const char *s)
43d9e: 528a addql #1,%a2 <== NOT EXECUTED
{
const char *p = s;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
43da0: 49c0 extbl %d0 <== NOT EXECUTED 43da2: 2079 0005 e70c moveal 5e70c <BSP_output_char>,%a0 <== NOT EXECUTED 43da8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43daa: 4e90 jsr %a0@ <== NOT EXECUTED
*/
void putk(const char *s)
{
const char *p = s;
for (p=s ; *p ; p++ )
43dac: 588f addql #4,%sp <== NOT EXECUTED 43dae: 101a moveb %a2@+,%d0 <== NOT EXECUTED 43db0: 66ee bnes 43da0 <putk+0x10> <== NOT EXECUTED
BSP_output_char(*p);
BSP_output_char('\n');
43db2: 700a moveq #10,%d0 <== NOT EXECUTED
}
43db4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
const char *p = s;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
BSP_output_char('\n');
43db8: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43dbc: 4e5e unlk %fp <== NOT EXECUTED
{
const char *p = s;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
BSP_output_char('\n');
43dbe: 2279 0005 e70c moveal 5e70c <BSP_output_char>,%a1 <== NOT EXECUTED 43dc4: 4ed1 jmp %a1@ <== NOT EXECUTED
...
0005be38 <read>:
ssize_t read(
int fd,
void *buffer,
size_t count
)
{
5be38: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 5be3c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5be40: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 5be44: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 5be48: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5be4c: b0b9 0005 e334 cmpl 5e334 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 5be52: 646a bccs 5bebe <read+0x86> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
5be54: 2400 movel %d0,%d2 <== NOT EXECUTED 5be56: ed88 lsll #6,%d0 <== NOT EXECUTED 5be58: e78a lsll #3,%d2 <== NOT EXECUTED 5be5a: 2479 0005 fb34 moveal 5fb34 <rtems_libio_iops>,%a2 <== NOT EXECUTED 5be60: 9082 subl %d2,%d0 <== NOT EXECUTED 5be62: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
5be64: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 5be68: 0800 0008 btst #8,%d0 <== NOT EXECUTED 5be6c: 6750 beqs 5bebe <read+0x86> <== NOT EXECUTED
rtems_libio_check_buffer( buffer );
5be6e: 4a81 tstl %d1 <== NOT EXECUTED 5be70: 6764 beqs 5bed6 <read+0x9e> <== NOT EXECUTED
rtems_libio_check_count( count );
5be72: 4a88 tstl %a0 <== NOT EXECUTED 5be74: 673c beqs 5beb2 <read+0x7a> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
5be76: 0800 0001 btst #1,%d0 <== NOT EXECUTED 5be7a: 675a beqs 5bed6 <read+0x9e> <== NOT EXECUTED
/*
* Now process the read().
*/
rc = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
5be7c: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED 5be80: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5be82: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5be84: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5be86: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED 5be8a: 4e90 jsr %a0@ <== NOT EXECUTED
if ( rc > 0 )
5be8c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5be90: 4a80 tstl %d0 <== NOT EXECUTED 5be92: 6f14 bles 5bea8 <read+0x70> <== NOT EXECUTED
iop->offset += rc;
5be94: 2400 movel %d0,%d2 <== NOT EXECUTED 5be96: 5bc1 smi %d1 <== NOT EXECUTED 5be98: 49c1 extbl %d1 <== NOT EXECUTED 5be9a: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED 5be9e: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED 5bea2: d781 addxl %d1,%d3 <== NOT EXECUTED 5bea4: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
return rc;
}
5bea8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5beae: 4e5e unlk %fp <== NOT EXECUTED 5beb0: 4e75 rts <== NOT EXECUTED
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 );
5beb2: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5beb4: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5beba: 4e5e unlk %fp <== NOT EXECUTED 5bebc: 4e75 rts <== NOT EXECUTED
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
5bebe: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5bec4: 7409 moveq #9,%d2 <== NOT EXECUTED 5bec6: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bec8: 70ff moveq #-1,%d0 <== NOT EXECUTED 5beca: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5becc: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5bed2: 4e5e unlk %fp <== NOT EXECUTED 5bed4: 4e75 rts <== NOT EXECUTED
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( iop, LIBIO_FLAGS_READ );
5bed6: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5bedc: 7216 moveq #22,%d1 <== NOT EXECUTED 5bede: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bee0: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5bee2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
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( iop, LIBIO_FLAGS_READ );
5bee8: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5beea: 4e5e unlk %fp <== NOT EXECUTED
00046590 <readlink>:
ssize_t readlink(
const char *pathname,
char *buf,
size_t bufsize
)
{
46590: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 46594: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 46598: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4659c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if (!buf)
465a0: 6776 beqs 46618 <readlink+0x88> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
result = rtems_filesystem_evaluate_path( pathname, strlen( pathname ),
465a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465a4: 260e movel %fp,%d3 <== NOT EXECUTED 465a6: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED 465ac: 4eb9 0005 37f4 jsr 537f4 <strlen> <== NOT EXECUTED 465b2: 4297 clrl %sp@ <== NOT EXECUTED 465b4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 465b6: 42a7 clrl %sp@- <== NOT EXECUTED 465b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465bc: 4eb9 0004 5314 jsr 45314 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, false );
if ( result != 0 )
465c2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 465c6: 4a80 tstl %d0 <== NOT EXECUTED 465c8: 670e beqs 465d8 <readlink+0x48> <== NOT EXECUTED
return -1;
465ca: 74ff moveq #-1,%d2 <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
465cc: 2002 movel %d2,%d0 <== NOT EXECUTED 465ce: 4cee 001c ffe0 moveml %fp@(-32),%d2-%d4 <== NOT EXECUTED 465d4: 4e5e unlk %fp <== NOT EXECUTED 465d6: 4e75 rts <== NOT EXECUTED
result = rtems_filesystem_evaluate_path( pathname, strlen( pathname ),
0, &loc, false );
if ( result != 0 )
return -1;
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_SYM_LINK ){
465d8: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 465dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 465de: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 465e2: 4e90 jsr %a0@ <== NOT EXECUTED 465e4: 588f addql #4,%sp <== NOT EXECUTED 465e6: 7204 moveq #4,%d1 <== NOT EXECUTED 465e8: b280 cmpl %d0,%d1 <== NOT EXECUTED 465ea: 6646 bnes 46632 <readlink+0xa2> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( EINVAL );
}
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
465ec: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 465f0: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 465f4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 465f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 465f8: 2068 003c moveal %a0@(60),%a0 <== NOT EXECUTED 465fc: 4e90 jsr %a0@ <== NOT EXECUTED 465fe: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
46600: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46602: 4eb9 0004 53f8 jsr 453f8 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
46608: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
4660c: 2002 movel %d2,%d0 <== NOT EXECUTED 4660e: 4cee 001c ffe0 moveml %fp@(-32),%d2-%d4 <== NOT EXECUTED 46614: 4e5e unlk %fp <== NOT EXECUTED 46616: 4e75 rts <== NOT EXECUTED
{
rtems_filesystem_location_info_t loc;
int result;
if (!buf)
rtems_set_errno_and_return_minus_one( EFAULT );
46618: 4eb9 0005 1d20 jsr 51d20 <__errno> <== NOT EXECUTED 4661e: 74ff moveq #-1,%d2 <== NOT EXECUTED 46620: 720e moveq #14,%d1 <== NOT EXECUTED 46622: 2040 moveal %d0,%a0 <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
46624: 2002 movel %d2,%d0 <== NOT EXECUTED 46626: 4cee 001c ffe0 moveml %fp@(-32),%d2-%d4 <== NOT EXECUTED
{
rtems_filesystem_location_info_t loc;
int result;
if (!buf)
rtems_set_errno_and_return_minus_one( EFAULT );
4662c: 2081 movel %d1,%a0@ <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
4662e: 4e5e unlk %fp <== NOT EXECUTED 46630: 4e75 rts <== NOT EXECUTED
0, &loc, false );
if ( result != 0 )
return -1;
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_SYM_LINK ){
rtems_filesystem_freenode( &loc );
46632: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
46634: 74ff moveq #-1,%d2 <== NOT EXECUTED
0, &loc, false );
if ( result != 0 )
return -1;
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_SYM_LINK ){
rtems_filesystem_freenode( &loc );
46636: 4eb9 0004 53f8 jsr 453f8 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4663c: 4eb9 0005 1d20 jsr 51d20 <__errno> <== NOT EXECUTED 46642: 588f addql #4,%sp <== NOT EXECUTED 46644: 2040 moveal %d0,%a0 <== NOT EXECUTED 46646: 7016 moveq #22,%d0 <== NOT EXECUTED 46648: 2080 movel %d0,%a0@ <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
4664a: 2002 movel %d2,%d0 <== NOT EXECUTED 4664c: 4cee 001c ffe0 moveml %fp@(-32),%d2-%d4 <== NOT EXECUTED 46652: 4e5e unlk %fp <== NOT EXECUTED
...
00044e3c <readv>:
ssize_t readv(
int fd,
const struct iovec *iov,
int iovcnt
)
{
44e3c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 44e40: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 44e44: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 44e48: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 44e4c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
int v;
int bytes;
rtems_libio_t *iop;
bool all_zeros;
rtems_libio_check_fd( fd );
44e50: b0b9 0005 f0f4 cmpl 5f0f4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 44e56: 6400 00ec bccw 44f44 <readv+0x108> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
44e5a: 2200 movel %d0,%d1 <== NOT EXECUTED 44e5c: ed88 lsll #6,%d0 <== NOT EXECUTED 44e5e: e789 lsll #3,%d1 <== NOT EXECUTED 44e60: 2679 0006 08f4 moveal 608f4 <rtems_libio_iops>,%a3 <== NOT EXECUTED 44e66: 9081 subl %d1,%d0 <== NOT EXECUTED 44e68: d7c0 addal %d0,%a3 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
44e6a: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED 44e6e: 0800 0008 btst #8,%d0 <== NOT EXECUTED 44e72: 6700 00d0 beqw 44f44 <readv+0x108> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
44e76: 0800 0001 btst #1,%d0 <== NOT EXECUTED 44e7a: 6700 0092 beqw 44f0e <readv+0xd2> <== NOT EXECUTED
/*
* Argument validation on IO vector
*/
if ( !iov )
44e7e: 4a8a tstl %a2 <== NOT EXECUTED 44e80: 6700 008c beqw 44f0e <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
44e84: 4a82 tstl %d2 <== NOT EXECUTED 44e86: 6f00 0086 blew 44f0e <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
44e8a: 0c82 0000 0400 cmpil #1024,%d2 <== NOT EXECUTED 44e90: 6e7c bgts 44f0e <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
44e92: 204a moveal %a2,%a0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
44e94: 4281 clrl %d1 <== NOT EXECUTED 44e96: 4280 clrl %d0 <== NOT EXECUTED 44e98: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* 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 )
44e9a: 4a90 tstl %a0@ <== NOT EXECUTED 44e9c: 6770 beqs 44f0e <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/* check for wrap */
old = total;
total += iov[v].iov_len;
44e9e: 2628 0004 movel %a0@(4),%d3 <== NOT EXECUTED 44ea2: 2240 moveal %d0,%a1 <== NOT EXECUTED 44ea4: d3c3 addal %d3,%a1 <== NOT EXECUTED
* 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++ ) {
44ea6: 5281 addql #1,%d1 <== NOT EXECUTED 44ea8: 5088 addql #8,%a0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old )
44eaa: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 44eac: 6d60 blts 44f0e <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
44eae: 4a83 tstl %d3 <== NOT EXECUTED 44eb0: 57c3 seq %d3 <== NOT EXECUTED
if ( iov[v].iov_base == 0 )
rtems_set_errno_and_return_minus_one( EINVAL );
/* check for wrap */
old = total;
total += iov[v].iov_len;
44eb2: 2009 movel %a1,%d0 <== NOT EXECUTED
if ( total < old )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
44eb4: c883 andl %d3,%d4 <== NOT EXECUTED
* 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++ ) {
44eb6: b282 cmpl %d2,%d1 <== NOT EXECUTED 44eb8: 6de0 blts 44e9a <readv+0x5e> <== NOT EXECUTED
/*
* 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 ) {
44eba: 4a04 tstb %d4 <== NOT EXECUTED 44ebc: 666a bnes 44f28 <readv+0xec> <== NOT EXECUTED
#include <sys/uio.h>
#include <rtems/libio_.h>
#include <rtems/seterr.h>
ssize_t readv(
44ebe: 588a addql #4,%a2 <== NOT EXECUTED 44ec0: 4283 clrl %d3 <== NOT EXECUTED 44ec2: 4284 clrl %d4 <== NOT EXECUTED
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
bytes = (*iop->pathinfo.handlers->read_h)(
44ec4: 206b 0020 moveal %a3@(32),%a0 <== NOT EXECUTED
}
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
44ec8: 5283 addql #1,%d3 <== NOT EXECUTED
bytes = (*iop->pathinfo.handlers->read_h)(
44eca: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 44ecc: 2f2a fffc movel %a2@(-4),%sp@- <== NOT EXECUTED 44ed0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44ed2: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED 44ed6: 4e90 jsr %a0@ <== NOT EXECUTED
iop,
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
44ed8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 44edc: 4a80 tstl %d0 <== NOT EXECUTED 44ede: 6d56 blts 44f36 <readv+0xfa> <== NOT EXECUTED
return -1;
if ( bytes > 0 ) {
44ee0: 6716 beqs 44ef8 <readv+0xbc> <== NOT EXECUTED
iop->offset += bytes;
total += bytes;
44ee2: d880 addl %d0,%d4 <== NOT EXECUTED
if ( bytes < 0 )
return -1;
if ( bytes > 0 ) {
iop->offset += bytes;
44ee4: 2c00 movel %d0,%d6 <== NOT EXECUTED 44ee6: 5bc5 smi %d5 <== NOT EXECUTED 44ee8: 49c5 extbl %d5 <== NOT EXECUTED 44eea: ddab 0010 addl %d6,%a3@(16) <== NOT EXECUTED 44eee: 222b 000c movel %a3@(12),%d1 <== NOT EXECUTED 44ef2: d385 addxl %d5,%d1 <== NOT EXECUTED 44ef4: 2741 000c movel %d1,%a3@(12) <== NOT EXECUTED
total += bytes;
}
if (bytes != iov[ v ].iov_len)
44ef8: b092 cmpl %a2@,%d0 <== NOT EXECUTED 44efa: 6606 bnes 44f02 <readv+0xc6> <== NOT EXECUTED
}
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
44efc: 508a addql #8,%a2 <== NOT EXECUTED 44efe: b682 cmpl %d2,%d3 <== NOT EXECUTED 44f00: 6dc2 blts 44ec4 <readv+0x88> <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f02: 2004 movel %d4,%d0 <== NOT EXECUTED 44f04: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 44f0a: 4e5e unlk %fp <== NOT EXECUTED 44f0c: 4e75 rts <== NOT EXECUTED
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old )
rtems_set_errno_and_return_minus_one( EINVAL );
44f0e: 4eb9 0004 f998 jsr 4f998 <__errno> <== NOT EXECUTED 44f14: 78ff moveq #-1,%d4 <== NOT EXECUTED 44f16: 2040 moveal %d0,%a0 <== NOT EXECUTED 44f18: 7016 moveq #22,%d0 <== NOT EXECUTED 44f1a: 2080 movel %d0,%a0@ <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f1c: 2004 movel %d4,%d0 <== NOT EXECUTED 44f1e: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 44f24: 4e5e unlk %fp <== NOT EXECUTED 44f26: 4e75 rts <== NOT EXECUTED
* 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;
44f28: 4284 clrl %d4 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f2a: 2004 movel %d4,%d0 <== NOT EXECUTED 44f2c: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 44f32: 4e5e unlk %fp <== NOT EXECUTED 44f34: 4e75 rts <== NOT EXECUTED
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
return -1;
44f36: 78ff moveq #-1,%d4 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f38: 2004 movel %d4,%d0 <== NOT EXECUTED 44f3a: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 44f40: 4e5e unlk %fp <== NOT EXECUTED 44f42: 4e75 rts <== NOT EXECUTED
rtems_libio_t *iop;
bool all_zeros;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
44f44: 4eb9 0004 f998 jsr 4f998 <__errno> <== NOT EXECUTED 44f4a: 78ff moveq #-1,%d4 <== NOT EXECUTED 44f4c: 7209 moveq #9,%d1 <== NOT EXECUTED 44f4e: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f50: 2004 movel %d4,%d0 <== NOT EXECUTED 44f52: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
rtems_libio_t *iop;
bool all_zeros;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
44f58: 2081 movel %d1,%a0@ <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f5a: 4e5e unlk %fp <== NOT EXECUTED
...
0005bf70 <realloc>:
/*
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
5bf70: 7003 moveq #3,%d0
void *realloc(
void *ptr,
size_t size
)
{
5bf72: 4e56 fff0 linkw %fp,#-16
uintptr_t old_size;
char *new_area;
MSBUMP(realloc_calls, 1);
5bf76: 52b9 0005 fb5c addql #1,5fb5c <rtems_malloc_statistics+0x10>
void *realloc(
void *ptr,
size_t size
)
{
5bf7c: 48d7 001c moveml %d2-%d4,%sp@ 5bf80: 242e 0008 movel %fp@(8),%d2 5bf84: 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())) {
5bf88: b0b9 0005 fdfa cmpl 5fdfa <_System_state_Current>,%d0
5bf8e: 677a beqs 5c00a <realloc+0x9a> <== ALWAYS TAKEN
}
/*
* Continue with realloc().
*/
if ( !ptr )
5bf90: 4a82 tstl %d2 5bf92: 6700 00de beqw 5c072 <realloc+0x102>
return malloc( size );
if ( !size ) {
5bf96: 4a83 tstl %d3 <== NOT EXECUTED 5bf98: 673e beqs 5bfd8 <realloc+0x68> <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
5bf9a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5bf9e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5bfa0: 2f39 0005 e340 movel 5e340 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 5bfa6: 4eb9 0005 c628 jsr 5c628 <_Protected_heap_Get_block_size> <== NOT EXECUTED 5bfac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5bfb0: 4a00 tstb %d0 <== NOT EXECUTED 5bfb2: 673c beqs 5bff0 <realloc+0x80> <== NOT EXECUTED
}
/*
* Now resize it.
*/
if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
5bfb4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5bfb6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5bfb8: 2f39 0005 e340 movel 5e340 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 5bfbe: 4eb9 0005 c664 jsr 5c664 <_Protected_heap_Resize_block> <== NOT EXECUTED 5bfc4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5bfc8: 4a00 tstb %d0 <== NOT EXECUTED 5bfca: 6754 beqs 5c020 <realloc+0xb0> <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5bfcc: 2002 movel %d2,%d0 <== NOT EXECUTED 5bfce: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5bfd4: 4e5e unlk %fp <== NOT EXECUTED 5bfd6: 4e75 rts <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5bfd8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (void *) 0;
5bfda: 4282 clrl %d2 <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5bfdc: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
return (void *) 0;
5bfe2: 588f addql #4,%sp <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5bfe4: 2002 movel %d2,%d0 <== NOT EXECUTED 5bfe6: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5bfec: 4e5e unlk %fp <== NOT EXECUTED 5bfee: 4e75 rts <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5bff0: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
return (void *) 0;
5bff6: 4282 clrl %d2 <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5bff8: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bffa: 7016 moveq #22,%d0 <== NOT EXECUTED 5bffc: 2080 movel %d0,%a0@ <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5bffe: 2002 movel %d2,%d0 <== NOT EXECUTED 5c000: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5c006: 4e5e unlk %fp <== NOT EXECUTED 5c008: 4e75 rts <== NOT EXECUTED
/*
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
if (_Thread_Dispatch_disable_level > 0)
5c00a: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0
5c010: 6752 beqs 5c064 <realloc+0xf4> <== ALWAYS TAKEN
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
5c012: 4282 clrl %d2 <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c014: 2002 movel %d2,%d0 <== NOT EXECUTED 5c016: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5c01c: 4e5e unlk %fp <== NOT EXECUTED 5c01e: 4e75 rts <== NOT EXECUTED
* 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 );
5c020: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c022: 4eb9 0004 302c jsr 4302c <malloc> <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5c028: 588f addql #4,%sp <== NOT EXECUTED
* and the C Standard.
*/
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
5c02a: 53b9 0005 fb50 subql #1,5fb50 <rtems_malloc_statistics+0x4><== NOT EXECUTED
* 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 );
5c030: 2800 movel %d0,%d4 <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5c032: 67de beqs 5c012 <realloc+0xa2> <== NOT EXECUTED
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
5c034: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 5c038: b083 cmpl %d3,%d0 <== NOT EXECUTED 5c03a: 6402 bccs 5c03e <realloc+0xce> <== NOT EXECUTED 5c03c: 2600 movel %d0,%d3 <== NOT EXECUTED 5c03e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c040: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c042: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5c044: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
free( ptr );
5c04a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return new_area;
5c04c: 2404 movel %d4,%d2 <== NOT EXECUTED
if ( !new_area ) {
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
5c04e: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
return new_area;
5c054: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
5c058: 2002 movel %d2,%d0 <== NOT EXECUTED 5c05a: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5c060: 4e5e unlk %fp <== NOT EXECUTED 5c062: 4e75 rts <== NOT EXECUTED
if (_System_state_Is_up(_System_state_Get())) {
if (_Thread_Dispatch_disable_level > 0)
return (void *) 0;
if (_ISR_Nest_level > 0)
5c064: 4ab9 0006 0118 tstl 60118 <_Per_CPU_Information+0x8> 5c06a: 6700 ff24 beqw 5bf90 <realloc+0x20>
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
5c06e: 4282 clrl %d2 <== NOT EXECUTED 5c070: 60a2 bras 5c014 <realloc+0xa4> <== NOT EXECUTED
/*
* Continue with realloc().
*/
if ( !ptr )
return malloc( size );
5c072: 2f03 movel %d3,%sp@- 5c074: 4eb9 0004 302c jsr 4302c <malloc> 5c07a: 588f addql #4,%sp 5c07c: 2400 movel %d0,%d2
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c07e: 2002 movel %d2,%d0 5c080: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 5c086: 4e5e unlk %fp
...
000440e8 <rmdir>:
#include <rtems/seterr.h>
int rmdir(
const char *pathname
)
{
440e8: 4e56 ffc0 linkw %fp,#-64 <== NOT EXECUTED 440ec: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 440f0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Get the parent node of the node we wish to remove. Find the parent path.
*/
parentpathlen = rtems_filesystem_dirname ( pathname );
440f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 440f6: 4eb9 0004 3184 jsr 43184 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( parentpathlen == 0 )
440fc: 588f addql #4,%sp <== NOT EXECUTED 440fe: 4a80 tstl %d0 <== NOT EXECUTED 44100: 6600 0132 bnew 44234 <rmdir+0x14c> <== NOT EXECUTED
rtems_filesystem_get_start_loc( pathname, &i, &parentloc );
44104: 45ee ffe8 lea %fp@(-24),%a2 <== NOT EXECUTED 44108: 4283 clrl %d3 <== NOT EXECUTED 4410a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4410c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
const char *name; rtems_filesystem_location_info_t parentloc; rtems_filesystem_location_info_t loc; int i; int result; bool free_parentloc = false;
44110: 4204 clrb %d4 <== NOT EXECUTED
*/
parentpathlen = rtems_filesystem_dirname ( pathname );
if ( parentpathlen == 0 )
rtems_filesystem_get_start_loc( pathname, &i, &parentloc );
44112: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44114: 4eb9 0004 425c jsr 4425c <rtems_filesystem_get_start_loc> <== NOT EXECUTED 4411a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
4411e: 2d52 ffd4 movel %a2@,%fp@(-44) <== NOT EXECUTED
name = pathname + parentpathlen;
44122: d682 addl %d2,%d3 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
44124: 47f9 0005 05dc lea 505dc <strlen>,%a3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
4412a: 240e movel %fp,%d2 <== NOT EXECUTED 4412c: 0682 ffff ffd4 addil #-44,%d2 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
44132: 2d6e ffec ffd8 movel %fp@(-20),%fp@(-40) <== NOT EXECUTED 44138: 2d6e fff0 ffdc movel %fp@(-16),%fp@(-36) <== NOT EXECUTED 4413e: 2d6e fff4 ffe0 movel %fp@(-12),%fp@(-32) <== NOT EXECUTED 44144: 2d6e fff8 ffe4 movel %fp@(-8),%fp@(-28) <== NOT EXECUTED
name = pathname + parentpathlen; name += rtems_filesystem_prefix_separators( name, strlen( name ) );
4414a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4414c: 4e93 jsr %a3@ <== NOT EXECUTED 4414e: 2e80 movel %d0,%sp@ <== NOT EXECUTED 44150: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44152: 4eb9 0004 31c6 jsr 431c6 <rtems_filesystem_prefix_separators><== NOT EXECUTED 44158: d680 addl %d0,%d3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
4415a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4415c: 4e93 jsr %a3@ <== NOT EXECUTED 4415e: 4297 clrl %sp@ <== NOT EXECUTED 44160: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44162: 42a7 clrl %sp@- <== NOT EXECUTED 44164: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44166: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44168: 4eb9 0004 30c8 jsr 430c8 <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &loc, false );
if ( result != 0 ) {
4416e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 44172: 4a80 tstl %d0 <== NOT EXECUTED 44174: 6654 bnes 441ca <rmdir+0xe2> <== NOT EXECUTED
}
/*
* Verify you can remove this node as a directory.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
44176: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 4417a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4417c: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 44180: 4e90 jsr %a0@ <== NOT EXECUTED 44182: 588f addql #4,%sp <== NOT EXECUTED 44184: 7201 moveq #1,%d1 <== NOT EXECUTED 44186: b280 cmpl %d0,%d1 <== NOT EXECUTED 44188: 6652 bnes 441dc <rmdir+0xf4> <== NOT EXECUTED
/*
* Use the filesystems rmnod to remove the node.
*/
result = (*loc.handlers->rmnod_h)( &parentloc, &loc );
4418a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4418c: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED 44190: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44192: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
44196: 47f9 0004 321c lea 4321c <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
/*
* Use the filesystems rmnod to remove the node.
*/
result = (*loc.handlers->rmnod_h)( &parentloc, &loc );
4419c: 4e90 jsr %a0@ <== NOT EXECUTED 4419e: 2600 movel %d0,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
441a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 441a2: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_parentloc )
441a4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 441a8: 4a04 tstb %d4 <== NOT EXECUTED 441aa: 660c bnes 441b8 <rmdir+0xd0> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return result;
}
441ac: 2003 movel %d3,%d0 <== NOT EXECUTED 441ae: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 441b4: 4e5e unlk %fp <== NOT EXECUTED 441b6: 4e75 rts <== NOT EXECUTED
result = (*loc.handlers->rmnod_h)( &parentloc, &loc );
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
441b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 441ba: 4e93 jsr %a3@ <== NOT EXECUTED 441bc: 588f addql #4,%sp <== NOT EXECUTED
return result;
}
441be: 2003 movel %d3,%d0 <== NOT EXECUTED 441c0: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 441c6: 4e5e unlk %fp <== NOT EXECUTED 441c8: 4e75 rts <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &loc, false );
if ( result != 0 ) {
if ( free_parentloc )
441ca: 4a04 tstb %d4 <== NOT EXECUTED 441cc: 664e bnes 4421c <rmdir+0x134> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return -1;
441ce: 76ff moveq #-1,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
441d0: 2003 movel %d3,%d0 <== NOT EXECUTED 441d2: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 441d8: 4e5e unlk %fp <== NOT EXECUTED 441da: 4e75 rts <== NOT EXECUTED
/*
* Verify you can remove this node as a directory.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
441dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 441de: 47f9 0004 321c lea 4321c <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED 441e4: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_parentloc )
441e6: 588f addql #4,%sp <== NOT EXECUTED 441e8: 4a04 tstb %d4 <== NOT EXECUTED 441ea: 661a bnes 44206 <rmdir+0x11e> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
rtems_set_errno_and_return_minus_one( ENOTDIR );
441ec: 4eb9 0004 f238 jsr 4f238 <__errno> <== NOT EXECUTED 441f2: 76ff moveq #-1,%d3 <== NOT EXECUTED 441f4: 2040 moveal %d0,%a0 <== NOT EXECUTED 441f6: 7014 moveq #20,%d0 <== NOT EXECUTED 441f8: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
441fa: 2003 movel %d3,%d0 <== NOT EXECUTED 441fc: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 44202: 4e5e unlk %fp <== NOT EXECUTED 44204: 4e75 rts <== NOT EXECUTED
* Verify you can remove this node as a directory.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
44206: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
44208: 76ff moveq #-1,%d3 <== NOT EXECUTED
* Verify you can remove this node as a directory.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
4420a: 4e93 jsr %a3@ <== NOT EXECUTED 4420c: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
4420e: 4eb9 0004 f238 jsr 4f238 <__errno> <== NOT EXECUTED 44214: 2040 moveal %d0,%a0 <== NOT EXECUTED 44216: 7014 moveq #20,%d0 <== NOT EXECUTED 44218: 2080 movel %d0,%a0@ <== NOT EXECUTED 4421a: 60de bras 441fa <rmdir+0x112> <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &loc, false );
if ( result != 0 ) {
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
4421c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
return -1;
4421e: 76ff moveq #-1,%d3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &loc, false );
if ( result != 0 ) {
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
44220: 4eb9 0004 321c jsr 4321c <rtems_filesystem_freenode> <== NOT EXECUTED 44226: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
44228: 2003 movel %d3,%d0 <== NOT EXECUTED 4422a: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 44230: 4e5e unlk %fp <== NOT EXECUTED 44232: 4e75 rts <== NOT EXECUTED
parentpathlen = rtems_filesystem_dirname ( pathname );
if ( parentpathlen == 0 )
rtems_filesystem_get_start_loc( pathname, &i, &parentloc );
else {
result = rtems_filesystem_evaluate_path(pathname, parentpathlen,
44234: 42a7 clrl %sp@- <== NOT EXECUTED 44236: 45ee ffe8 lea %fp@(-24),%a2 <== NOT EXECUTED 4423a: 2600 movel %d0,%d3 <== NOT EXECUTED 4423c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4423e: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 44242: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44244: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44246: 4eb9 0004 3138 jsr 43138 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&parentloc,
false );
if ( result != 0 )
4424c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 44250: 4a80 tstl %d0 <== NOT EXECUTED 44252: 6600 ff7a bnew 441ce <rmdir+0xe6> <== NOT EXECUTED
return -1;
free_parentloc = true;
44256: 7801 moveq #1,%d4 <== NOT EXECUTED 44258: 6000 fec4 braw 4411e <rmdir+0x36> <== NOT EXECUTED
000434ac <rtems_assoc_local_by_name>:
uint32_t rtems_assoc_local_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
434ac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_name(ap, name);
434b0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 434b4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 434b8: 4eb9 0004 3714 jsr 43714 <rtems_assoc_ptr_by_name> <== NOT EXECUTED
if (nap)
434be: 508f addql #8,%sp <== NOT EXECUTED 434c0: 4a80 tstl %d0 <== NOT EXECUTED 434c2: 670a beqs 434ce <rtems_assoc_local_by_name+0x22> <== NOT EXECUTED
return nap->local_value;
434c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
return 0;
}
434c6: 4e5e unlk %fp <== NOT EXECUTED
{
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_name(ap, name);
if (nap)
return nap->local_value;
434c8: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
return 0;
}
434cc: 4e75 rts <== NOT EXECUTED
nap = rtems_assoc_ptr_by_name(ap, name);
if (nap)
return nap->local_value;
return 0;
434ce: 4280 clrl %d0 <== NOT EXECUTED
}
434d0: 4e5e unlk %fp <== NOT EXECUTED
0004add4 <rtems_assoc_local_by_remote>:
uint32_t rtems_assoc_local_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4add4: 4e56 0000 linkw %fp,#0
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
4add8: 2f2e 000c movel %fp@(12),%sp@- 4addc: 2f2e 0008 movel %fp@(8),%sp@- 4ade0: 4eb9 0004 ae9c jsr 4ae9c <rtems_assoc_ptr_by_remote>
if (nap)
4ade6: 508f addql #8,%sp 4ade8: 4a80 tstl %d0
4adea: 670a beqs 4adf6 <rtems_assoc_local_by_remote+0x22><== NEVER TAKEN
return nap->local_value;
4adec: 2040 moveal %d0,%a0
return 0;
}
4adee: 4e5e unlk %fp
{
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->local_value;
4adf0: 2028 0004 movel %a0@(4),%d0
return 0;
}
4adf4: 4e75 rts
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->local_value;
return 0;
4adf6: 4280 clrl %d0 <== NOT EXECUTED
}
4adf8: 4e5e unlk %fp <== NOT EXECUTED
0004df10 <rtems_assoc_local_by_remote_bitfield>:
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4df10: 4e56 ffe8 linkw %fp,#-24 4df14: 48d7 047c moveml %d2-%d6/%a2,%sp@ 4df18: 2c2e 0008 movel %fp@(8),%d6 4df1c: 7620 moveq #32,%d3
uint32_t b; uint32_t local_value = 0;
4df1e: 4285 clrl %d5
for (b = 1; b; b <<= 1) {
4df20: 7401 moveq #1,%d2
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4df22: 45f9 0004 add4 lea 4add4 <rtems_assoc_local_by_remote>,%a2
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4df28: 282e 000c movel %fp@(12),%d4
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
if (b & remote_value)
4df2c: 2002 movel %d2,%d0
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df2e: 5383 subql #1,%d3
if (b & remote_value)
4df30: c084 andl %d4,%d0
4df32: 6612 bnes 4df46 <rtems_assoc_local_by_remote_bitfield+0x36><== NEVER TAKEN
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df34: d482 addl %d2,%d2 4df36: 4a83 tstl %d3
4df38: 66f2 bnes 4df2c <rtems_assoc_local_by_remote_bitfield+0x1c>
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
}
return local_value;
}
4df3a: 2005 movel %d5,%d0 4df3c: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 4df42: 4e5e unlk %fp 4df44: 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);
4df46: 2f02 movel %d2,%sp@- <== NOT EXECUTED
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df48: d482 addl %d2,%d2 <== NOT EXECUTED
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4df4a: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4df4c: 4e92 jsr %a2@ <== NOT EXECUTED 4df4e: 508f addql #8,%sp <== NOT EXECUTED 4df50: 8a80 orl %d0,%d5 <== NOT EXECUTED
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df52: 4a83 tstl %d3 <== NOT EXECUTED 4df54: 66d6 bnes 4df2c <rtems_assoc_local_by_remote_bitfield+0x1c><== NOT EXECUTED 4df56: 60e2 bras 4df3a <rtems_assoc_local_by_remote_bitfield+0x2a><== NOT EXECUTED
0004df58 <rtems_assoc_name_bad>:
uint32_t bad_value
#else
uint32_t bad_value __attribute((unused))
#endif
)
{
4df58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
sprintf(bad_buffer, "< %" PRId32 "[0x%" PRIx32 " ] >", bad_value, bad_value);
#else
static char bad_buffer[40] = "<assocnamebad.c: : BAD NAME>";
#endif
return bad_buffer;
}
4df5c: 203c 0005 e5e4 movel #386532,%d0 <== NOT EXECUTED 4df62: 4e5e unlk %fp <== NOT EXECUTED
...
0004adfc <rtems_assoc_name_by_local>:
const char *rtems_assoc_name_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4adfc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ae00: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ae02: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
4ae06: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ae08: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ae0c: 4eb9 0004 ae34 jsr 4ae34 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if (nap)
4ae12: 508f addql #8,%sp <== NOT EXECUTED 4ae14: 4a80 tstl %d0 <== NOT EXECUTED 4ae16: 670c beqs 4ae24 <rtems_assoc_name_by_local+0x28> <== NOT EXECUTED
return nap->name;
return rtems_assoc_name_bad(local_value);
}
4ae18: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ae1a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4ae1e: 4e5e unlk %fp <== NOT EXECUTED 4ae20: 2010 movel %a0@,%d0 <== NOT EXECUTED 4ae22: 4e75 rts <== NOT EXECUTED
nap = rtems_assoc_ptr_by_local(ap, local_value);
if (nap)
return nap->name;
return rtems_assoc_name_bad(local_value);
4ae24: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
4ae28: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4ae2c: 4e5e unlk %fp <== NOT EXECUTED
nap = rtems_assoc_ptr_by_local(ap, local_value);
if (nap)
return nap->name;
return rtems_assoc_name_bad(local_value);
4ae2e: 4ef9 0004 df58 jmp 4df58 <rtems_assoc_name_bad> <== NOT EXECUTED
00043544 <rtems_assoc_name_by_local_bitfield>:
char *rtems_assoc_name_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
43544: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 43548: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 4354c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
uint32_t b;
*buffer = 0;
43550: 7620 moveq #32,%d3 <== NOT EXECUTED
for (b = 1; b; b <<= 1) {
43552: 7401 moveq #1,%d2 <== NOT EXECUTED
if (b & value) {
if (*buffer)
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_local(ap, b));
43554: 49f9 0004 35c0 lea 435c0 <rtems_assoc_name_by_local>,%a4 <== NOT EXECUTED 4355a: 47f9 0005 05a4 lea 505a4 <strcat>,%a3 <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43560: 4bf9 0005 0b68 lea 50b68 <strlen>,%a5 <== NOT EXECUTED
char *buffer
)
{
uint32_t b;
*buffer = 0;
43566: 4212 clrb %a2@ <== NOT EXECUTED
char *rtems_assoc_name_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
43568: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 4356c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
43570: 2002 movel %d2,%d0 <== NOT EXECUTED
{
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
43572: 5383 subql #1,%d3 <== NOT EXECUTED
if (b & value) {
43574: c084 andl %d4,%d0 <== NOT EXECUTED 43576: 6714 beqs 4358c <rtems_assoc_name_by_local_bitfield+0x48><== NOT EXECUTED
if (*buffer)
43578: 4a12 tstb %a2@ <== NOT EXECUTED 4357a: 6622 bnes 4359e <rtems_assoc_name_by_local_bitfield+0x5a><== NOT EXECUTED
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_local(ap, b));
4357c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4357e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 43580: 4e94 jsr %a4@ <== NOT EXECUTED 43582: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43584: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43586: 4e93 jsr %a3@ <== NOT EXECUTED 43588: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
{
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
4358c: d482 addl %d2,%d2 <== NOT EXECUTED 4358e: 4a83 tstl %d3 <== NOT EXECUTED 43590: 66de bnes 43570 <rtems_assoc_name_by_local_bitfield+0x2c><== NOT EXECUTED
strcat(buffer, rtems_assoc_name_by_local(ap, b));
}
}
return buffer;
}
43592: 200a movel %a2,%d0 <== NOT EXECUTED 43594: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4359a: 4e5e unlk %fp <== NOT EXECUTED 4359c: 4e75 rts <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
4359e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 435a0: 4e95 jsr %a5@ <== NOT EXECUTED 435a2: 588f addql #4,%sp <== NOT EXECUTED 435a4: 323c 2000 movew #8192,%d1 <== NOT EXECUTED 435a8: 3581 0800 movew %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED
strcat(buffer, rtems_assoc_name_by_local(ap, b));
435ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED 435ae: 2f05 movel %d5,%sp@- <== NOT EXECUTED 435b0: 4e94 jsr %a4@ <== NOT EXECUTED 435b2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 435b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 435b6: 4e93 jsr %a3@ <== NOT EXECUTED 435b8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 435bc: 60ce bras 4358c <rtems_assoc_name_by_local_bitfield+0x48><== NOT EXECUTED
...
00043674 <rtems_assoc_name_by_remote>:
const char *rtems_assoc_name_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
43674: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43678: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4367a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *nap; nap = rtems_assoc_ptr_by_remote(ap, remote_value);
4367e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43680: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43684: 4eb9 0004 3780 jsr 43780 <rtems_assoc_ptr_by_remote> <== NOT EXECUTED
if (nap)
4368a: 508f addql #8,%sp <== NOT EXECUTED 4368c: 4a80 tstl %d0 <== NOT EXECUTED 4368e: 670c beqs 4369c <rtems_assoc_name_by_remote+0x28><== NOT EXECUTED
return nap->name;
return rtems_assoc_name_bad(remote_value);
}
43690: 2040 moveal %d0,%a0 <== NOT EXECUTED 43692: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43696: 4e5e unlk %fp <== NOT EXECUTED 43698: 2010 movel %a0@,%d0 <== NOT EXECUTED 4369a: 4e75 rts <== NOT EXECUTED
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->name;
return rtems_assoc_name_bad(remote_value);
4369c: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
436a0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436a4: 4e5e unlk %fp <== NOT EXECUTED
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->name;
return rtems_assoc_name_bad(remote_value);
436a6: 4ef9 0004 bd98 jmp 4bd98 <rtems_assoc_name_bad> <== NOT EXECUTED
000435f8 <rtems_assoc_name_by_remote_bitfield>:
char *rtems_assoc_name_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
435f8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 435fc: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 43600: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
uint32_t b;
*buffer = 0;
43604: 7620 moveq #32,%d3 <== NOT EXECUTED
for (b = 1; b; b <<= 1) {
43606: 7401 moveq #1,%d2 <== NOT EXECUTED
if (b & value) {
if (*buffer)
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
43608: 49f9 0004 3674 lea 43674 <rtems_assoc_name_by_remote>,%a4 <== NOT EXECUTED 4360e: 47f9 0005 05a4 lea 505a4 <strcat>,%a3 <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43614: 4bf9 0005 0b68 lea 50b68 <strlen>,%a5 <== NOT EXECUTED
char *buffer
)
{
uint32_t b;
*buffer = 0;
4361a: 4212 clrb %a2@ <== NOT EXECUTED
char *rtems_assoc_name_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
4361c: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 43620: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
43624: 2002 movel %d2,%d0 <== NOT EXECUTED
{
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
43626: 5383 subql #1,%d3 <== NOT EXECUTED
if (b & value) {
43628: c084 andl %d4,%d0 <== NOT EXECUTED 4362a: 6714 beqs 43640 <rtems_assoc_name_by_remote_bitfield+0x48><== NOT EXECUTED
if (*buffer)
4362c: 4a12 tstb %a2@ <== NOT EXECUTED 4362e: 6622 bnes 43652 <rtems_assoc_name_by_remote_bitfield+0x5a><== NOT EXECUTED
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
43630: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43632: 2f05 movel %d5,%sp@- <== NOT EXECUTED 43634: 4e94 jsr %a4@ <== NOT EXECUTED 43636: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43638: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4363a: 4e93 jsr %a3@ <== NOT EXECUTED 4363c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
{
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
43640: d482 addl %d2,%d2 <== NOT EXECUTED 43642: 4a83 tstl %d3 <== NOT EXECUTED 43644: 66de bnes 43624 <rtems_assoc_name_by_remote_bitfield+0x2c><== NOT EXECUTED
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
}
}
return buffer;
}
43646: 200a movel %a2,%d0 <== NOT EXECUTED 43648: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4364e: 4e5e unlk %fp <== NOT EXECUTED 43650: 4e75 rts <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43652: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43654: 4e95 jsr %a5@ <== NOT EXECUTED 43656: 588f addql #4,%sp <== NOT EXECUTED 43658: 323c 2000 movew #8192,%d1 <== NOT EXECUTED 4365c: 3581 0800 movew %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
43660: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43662: 2f05 movel %d5,%sp@- <== NOT EXECUTED 43664: 4e94 jsr %a4@ <== NOT EXECUTED 43666: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43668: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4366a: 4e93 jsr %a3@ <== NOT EXECUTED 4366c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 43670: 60ce bras 43640 <rtems_assoc_name_by_remote_bitfield+0x48><== NOT EXECUTED
...
0004ae34 <rtems_assoc_ptr_by_local>:
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4ae34: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ae38: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ae3a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4ae3e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ae40: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4ae44: 2012 movel %a2@,%d0 <== NOT EXECUTED 4ae46: 6742 beqs 4ae8a <rtems_assoc_ptr_by_local+0x56> <== NOT EXECUTED 4ae48: 4879 0005 d75a pea 5d75a <IMFS_memfile_handlers+0x38> <== NOT EXECUTED 4ae4e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4ae50: 4eb9 0004 f80c jsr 4f80c <strcmp> <== NOT EXECUTED 4ae56: 508f addql #8,%sp <== NOT EXECUTED 4ae58: 4a80 tstl %d0 <== NOT EXECUTED 4ae5a: 662a bnes 4ae86 <rtems_assoc_ptr_by_local+0x52> <== NOT EXECUTED
default_ap = ap++;
4ae5c: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
4ae60: 4a90 tstl %a0@ <== NOT EXECUTED 4ae62: 6714 beqs 4ae78 <rtems_assoc_ptr_by_local+0x44> <== NOT EXECUTED 4ae64: 200a movel %a2,%d0 <== NOT EXECUTED 4ae66: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (ap->local_value == local_value)
4ae68: b4aa 0004 cmpl %a2@(4),%d2 <== NOT EXECUTED 4ae6c: 670a beqs 4ae78 <rtems_assoc_ptr_by_local+0x44> <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
4ae6e: 45ea 000c lea %a2@(12),%a2 <== NOT EXECUTED 4ae72: 4a92 tstl %a2@ <== NOT EXECUTED 4ae74: 66f2 bnes 4ae68 <rtems_assoc_ptr_by_local+0x34> <== NOT EXECUTED 4ae76: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4ae78: 200a movel %a2,%d0 <== NOT EXECUTED 4ae7a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4ae7e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ae82: 4e5e unlk %fp <== NOT EXECUTED 4ae84: 4e75 rts <== NOT EXECUTED
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;
4ae86: 4280 clrl %d0 <== NOT EXECUTED 4ae88: 60de bras 4ae68 <rtems_assoc_ptr_by_local+0x34> <== NOT EXECUTED 4ae8a: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4ae8c: 200a movel %a2,%d0 <== NOT EXECUTED 4ae8e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4ae92: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ae96: 4e5e unlk %fp <== NOT EXECUTED
...
00043714 <rtems_assoc_ptr_by_name>:
const rtems_assoc_t *rtems_assoc_ptr_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
43714: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 43718: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4371c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 43720: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
43724: 2412 movel %a2@,%d2 <== NOT EXECUTED 43726: 6748 beqs 43770 <rtems_assoc_ptr_by_name+0x5c> <== NOT EXECUTED 43728: 4879 0005 ded3 pea 5ded3 <_rodata_start+0x603> <== NOT EXECUTED 4372e: 47f9 0005 0610 lea 50610 <strcmp>,%a3 <== NOT EXECUTED 43734: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43736: 4e93 jsr %a3@ <== NOT EXECUTED 43738: 508f addql #8,%sp <== NOT EXECUTED 4373a: 4a80 tstl %d0 <== NOT EXECUTED 4373c: 662e bnes 4376c <rtems_assoc_ptr_by_name+0x58> <== NOT EXECUTED
default_ap = ap++;
4373e: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
43742: 2410 movel %a0@,%d2 <== NOT EXECUTED 43744: 671a beqs 43760 <rtems_assoc_ptr_by_name+0x4c> <== NOT EXECUTED 43746: 280a movel %a2,%d4 <== NOT EXECUTED 43748: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (strcmp(ap->name, name) == 0)
4374a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4374c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4374e: 4e93 jsr %a3@ <== NOT EXECUTED 43750: 508f addql #8,%sp <== NOT EXECUTED 43752: 4a80 tstl %d0 <== NOT EXECUTED 43754: 670a beqs 43760 <rtems_assoc_ptr_by_name+0x4c> <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
43756: 45ea 000c lea %a2@(12),%a2 <== NOT EXECUTED 4375a: 2412 movel %a2@,%d2 <== NOT EXECUTED 4375c: 66ec bnes 4374a <rtems_assoc_ptr_by_name+0x36> <== NOT EXECUTED 4375e: 2444 moveal %d4,%a2 <== NOT EXECUTED
if (strcmp(ap->name, name) == 0)
return ap;
return default_ap;
}
43760: 200a movel %a2,%d0 <== NOT EXECUTED 43762: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 43768: 4e5e unlk %fp <== NOT EXECUTED 4376a: 4e75 rts <== NOT EXECUTED
const rtems_assoc_t *rtems_assoc_ptr_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
const rtems_assoc_t *default_ap = 0;
4376c: 4284 clrl %d4 <== NOT EXECUTED 4376e: 60da bras 4374a <rtems_assoc_ptr_by_name+0x36> <== NOT EXECUTED 43770: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (strcmp(ap->name, name) == 0)
return ap;
return default_ap;
}
43772: 200a movel %a2,%d0 <== NOT EXECUTED 43774: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4377a: 4e5e unlk %fp <== NOT EXECUTED
...
0004ae9c <rtems_assoc_ptr_by_remote>:
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4ae9c: 4e56 0000 linkw %fp,#0 4aea0: 2f0a movel %a2,%sp@- 4aea2: 246e 0008 moveal %fp@(8),%a2 4aea6: 2f02 movel %d2,%sp@- 4aea8: 242e 000c movel %fp@(12),%d2
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4aeac: 2012 movel %a2@,%d0
4aeae: 6742 beqs 4aef2 <rtems_assoc_ptr_by_remote+0x56> <== NEVER TAKEN
4aeb0: 4879 0005 d75a pea 5d75a <IMFS_memfile_handlers+0x38> 4aeb6: 2f00 movel %d0,%sp@- 4aeb8: 4eb9 0004 f80c jsr 4f80c <strcmp> 4aebe: 508f addql #8,%sp 4aec0: 4a80 tstl %d0
4aec2: 662a bnes 4aeee <rtems_assoc_ptr_by_remote+0x52> <== ALWAYS TAKEN
default_ap = ap++;
4aec4: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
4aec8: 4a90 tstl %a0@ <== NOT EXECUTED 4aeca: 6714 beqs 4aee0 <rtems_assoc_ptr_by_remote+0x44> <== NOT EXECUTED 4aecc: 200a movel %a2,%d0 <== NOT EXECUTED 4aece: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (ap->remote_value == remote_value)
4aed0: b4aa 0008 cmpl %a2@(8),%d2
4aed4: 670a beqs 4aee0 <rtems_assoc_ptr_by_remote+0x44>
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
4aed6: 45ea 000c lea %a2@(12),%a2 4aeda: 4a92 tstl %a2@
4aedc: 66f2 bnes 4aed0 <rtems_assoc_ptr_by_remote+0x34> <== ALWAYS TAKEN
4aede: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4aee0: 200a movel %a2,%d0 4aee2: 242e fff8 movel %fp@(-8),%d2 4aee6: 246e fffc moveal %fp@(-4),%a2 4aeea: 4e5e unlk %fp 4aeec: 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;
4aeee: 4280 clrl %d0 4aef0: 60de bras 4aed0 <rtems_assoc_ptr_by_remote+0x34>
4aef2: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4aef4: 200a movel %a2,%d0 <== NOT EXECUTED 4aef6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4aefa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aefe: 4e5e unlk %fp <== NOT EXECUTED
...
00043830 <rtems_assoc_remote_by_local>:
uint32_t rtems_assoc_remote_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
43830: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
43834: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43838: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4383c: 4eb9 0004 36ac jsr 436ac <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if (nap)
43842: 508f addql #8,%sp <== NOT EXECUTED 43844: 4a80 tstl %d0 <== NOT EXECUTED 43846: 670a beqs 43852 <rtems_assoc_remote_by_local+0x22><== NOT EXECUTED
return nap->remote_value;
43848: 2040 moveal %d0,%a0 <== NOT EXECUTED
return 0;
}
4384a: 4e5e unlk %fp <== NOT EXECUTED
{
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
if (nap)
return nap->remote_value;
4384c: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
return 0;
}
43850: 4e75 rts <== NOT EXECUTED
nap = rtems_assoc_ptr_by_local(ap, local_value);
if (nap)
return nap->remote_value;
return 0;
43852: 4280 clrl %d0 <== NOT EXECUTED
}
43854: 4e5e unlk %fp <== NOT EXECUTED
000437e8 <rtems_assoc_remote_by_local_bitfield>:
uint32_t rtems_assoc_remote_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
437e8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 437ec: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED 437f0: 2c2e 0008 movel %fp@(8),%d6 <== NOT EXECUTED 437f4: 7620 moveq #32,%d3 <== NOT EXECUTED
uint32_t b; uint32_t remote_value = 0;
437f6: 4285 clrl %d5 <== NOT EXECUTED
for (b = 1; b; b <<= 1)
437f8: 7401 moveq #1,%d2 <== NOT EXECUTED
if (b & local_value)
remote_value |= rtems_assoc_remote_by_local(ap, b);
437fa: 45f9 0004 3830 lea 43830 <rtems_assoc_remote_by_local>,%a2 <== NOT EXECUTED
uint32_t rtems_assoc_remote_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
43800: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
if (b & local_value)
43804: 2002 movel %d2,%d0 <== NOT EXECUTED
)
{
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
43806: 5383 subql #1,%d3 <== NOT EXECUTED
if (b & local_value)
43808: c084 andl %d4,%d0 <== NOT EXECUTED 4380a: 6612 bnes 4381e <rtems_assoc_remote_by_local_bitfield+0x36><== NOT EXECUTED
)
{
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
4380c: d482 addl %d2,%d2 <== NOT EXECUTED 4380e: 4a83 tstl %d3 <== NOT EXECUTED 43810: 66f2 bnes 43804 <rtems_assoc_remote_by_local_bitfield+0x1c><== NOT EXECUTED
if (b & local_value)
remote_value |= rtems_assoc_remote_by_local(ap, b);
return remote_value;
}
43812: 2005 movel %d5,%d0 <== NOT EXECUTED 43814: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 4381a: 4e5e unlk %fp <== NOT EXECUTED 4381c: 4e75 rts <== NOT EXECUTED
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);
4381e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
)
{
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
43820: d482 addl %d2,%d2 <== NOT EXECUTED
if (b & local_value)
remote_value |= rtems_assoc_remote_by_local(ap, b);
43822: 2f06 movel %d6,%sp@- <== NOT EXECUTED 43824: 4e92 jsr %a2@ <== NOT EXECUTED 43826: 508f addql #8,%sp <== NOT EXECUTED 43828: 8a80 orl %d0,%d5 <== NOT EXECUTED
)
{
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
4382a: 4a83 tstl %d3 <== NOT EXECUTED 4382c: 66d6 bnes 43804 <rtems_assoc_remote_by_local_bitfield+0x1c><== NOT EXECUTED 4382e: 60e2 bras 43812 <rtems_assoc_remote_by_local_bitfield+0x2a><== NOT EXECUTED
00043858 <rtems_assoc_remote_by_name>:
uint32_t rtems_assoc_remote_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
43858: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_name(ap, name);
4385c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43860: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43864: 4eb9 0004 3714 jsr 43714 <rtems_assoc_ptr_by_name> <== NOT EXECUTED
if (nap)
4386a: 508f addql #8,%sp <== NOT EXECUTED 4386c: 4a80 tstl %d0 <== NOT EXECUTED 4386e: 670a beqs 4387a <rtems_assoc_remote_by_name+0x22><== NOT EXECUTED
return nap->remote_value;
43870: 2040 moveal %d0,%a0 <== NOT EXECUTED
return 0;
}
43872: 4e5e unlk %fp <== NOT EXECUTED
{
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_name(ap, name);
if (nap)
return nap->remote_value;
43874: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
return 0;
}
43878: 4e75 rts <== NOT EXECUTED
nap = rtems_assoc_ptr_by_name(ap, name);
if (nap)
return nap->remote_value;
return 0;
4387a: 4280 clrl %d0 <== NOT EXECUTED
}
4387c: 4e5e unlk %fp <== NOT EXECUTED
0004ee04 <rtems_barrier_create>:
rtems_name name,
rtems_attribute attribute_set,
uint32_t maximum_waiters,
rtems_id *id
)
{
4ee04: 4e56 ffe8 linkw %fp,#-24 4ee08: 202e 0010 movel %fp@(16),%d0 4ee0c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 4ee10: 242e 0008 movel %fp@(8),%d2 4ee14: 262e 000c movel %fp@(12),%d3 4ee18: 246e 0014 moveal %fp@(20),%a2
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
4ee1c: 4a82 tstl %d2
4ee1e: 677a beqs 4ee9a <rtems_barrier_create+0x96> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
4ee20: 4a8a tstl %a2 4ee22: 6700 00cc beqw 4eef0 <rtems_barrier_create+0xec>
return RTEMS_INVALID_ADDRESS;
/* Initialize core barrier attributes */
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
4ee26: 0803 0004 btst #4,%d3
4ee2a: 677a beqs 4eea6 <rtems_barrier_create+0xa2> <== NEVER TAKEN
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
4ee2c: 42ae fff8 clrl %fp@(-8)
if ( maximum_waiters == 0 )
4ee30: 4a80 tstl %d0 4ee32: 6700 00b0 beqw 4eee4 <rtems_barrier_create+0xe0> 4ee36: 2239 0006 2650 movel 62650 <_Thread_Dispatch_disable_level>,%d1 4ee3c: 5281 addql #1,%d1
return RTEMS_INVALID_NUMBER;
} else
the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE;
the_attributes.maximum_count = maximum_waiters;
4ee3e: 2d40 fffc movel %d0,%fp@(-4) 4ee42: 23c1 0006 2650 movel %d1,62650 <_Thread_Dispatch_disable_level>
* This function allocates a barrier control block from
* the inactive chain of free barrier control blocks.
*/
RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Allocate( void )
{
return (Barrier_Control *) _Objects_Allocate( &_Barrier_Information );
4ee48: 4879 0006 2e8e pea 62e8e <_Barrier_Information> 4ee4e: 4eb9 0004 9c54 jsr 49c54 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4ee54: 588f addql #4,%sp 4ee56: 2640 moveal %d0,%a3 4ee58: 4a80 tstl %d0
4ee5a: 6776 beqs 4eed2 <rtems_barrier_create+0xce> <== NEVER TAKEN
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_barrier->attribute_set = attribute_set;
4ee5c: 2743 0010 movel %d3,%a3@(16)
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
4ee60: 486e fff8 pea %fp@(-8) 4ee64: 486b 0014 pea %a3@(20) 4ee68: 4eb9 0004 f6a4 jsr 4f6a4 <_CORE_barrier_Initialize>
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4ee6e: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee72: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee74: 2079 0006 2ea6 moveal 62ea6 <_Barrier_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee7a: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee7c: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4ee80: 2742 000c movel %d2,%a3@(12)
&_Barrier_Information,
&the_barrier->Object,
(Objects_Name) name
);
*id = the_barrier->Object.id;
4ee84: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
4ee86: 4eb9 0004 a9d2 jsr 4a9d2 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4ee8c: 508f addql #8,%sp 4ee8e: 4280 clrl %d0
}
4ee90: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 4ee96: 4e5e unlk %fp 4ee98: 4e75 rts
{
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4ee9a: 7003 moveq #3,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee9c: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4eea2: 4e5e unlk %fp <== NOT EXECUTED 4eea4: 4e75 rts <== NOT EXECUTED
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
if ( maximum_waiters == 0 )
return RTEMS_INVALID_NUMBER;
} else
the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE;
4eea6: 7201 moveq #1,%d1 <== NOT EXECUTED 4eea8: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED 4eeac: 2239 0006 2650 movel 62650 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 4eeb2: 5281 addql #1,%d1 <== NOT EXECUTED
the_attributes.maximum_count = maximum_waiters;
4eeb4: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 4eeb8: 23c1 0006 2650 movel %d1,62650 <_Thread_Dispatch_disable_level><== NOT EXECUTED 4eebe: 4879 0006 2e8e pea 62e8e <_Barrier_Information> <== NOT EXECUTED 4eec4: 4eb9 0004 9c54 jsr 49c54 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4eeca: 588f addql #4,%sp <== NOT EXECUTED 4eecc: 2640 moveal %d0,%a3 <== NOT EXECUTED 4eece: 4a80 tstl %d0 <== NOT EXECUTED 4eed0: 668a bnes 4ee5c <rtems_barrier_create+0x58> <== NOT EXECUTED
_Thread_Enable_dispatch();
4eed2: 4eb9 0004 a9d2 jsr 4a9d2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4eed8: 7005 moveq #5,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4eeda: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4eee0: 4e5e unlk %fp <== NOT EXECUTED 4eee2: 4e75 rts <== NOT EXECUTED
/* Initialize core barrier attributes */
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
if ( maximum_waiters == 0 )
return RTEMS_INVALID_NUMBER;
4eee4: 700a moveq #10,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4eee6: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4eeec: 4e5e unlk %fp <== NOT EXECUTED 4eeee: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4eef0: 7009 moveq #9,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4eef2: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4eef8: 4e5e unlk %fp <== NOT EXECUTED
0004eefc <rtems_barrier_delete>:
*/
rtems_status_code rtems_barrier_delete(
rtems_id id
)
{
4eefc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4ef00: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4ef02: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ef06: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ef0a: 4879 0006 2e8e pea 62e8e <_Barrier_Information> <== NOT EXECUTED 4ef10: 4eb9 0004 a114 jsr 4a114 <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4ef16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ef1a: 2440 moveal %d0,%a2 <== NOT EXECUTED 4ef1c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ef20: 6640 bnes 4ef62 <rtems_barrier_delete+0x66> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Flush(
4ef22: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 4ef26: 42a7 clrl %sp@- <== NOT EXECUTED 4ef28: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4ef2c: 4eb9 0004 b1a4 jsr 4b1a4 <_Thread_queue_Flush> <== NOT EXECUTED
&the_barrier->Barrier,
NULL,
CORE_BARRIER_WAS_DELETED
);
_Objects_Close( &_Barrier_Information, &the_barrier->Object );
4ef32: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ef34: 4879 0006 2e8e pea 62e8e <_Barrier_Information> <== NOT EXECUTED 4ef3a: 4eb9 0004 9ce4 jsr 49ce4 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Barrier_Free (
Barrier_Control *the_barrier
)
{
_Objects_Free( &_Barrier_Information, &the_barrier->Object );
4ef40: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ef42: 4879 0006 2e8e pea 62e8e <_Barrier_Information> <== NOT EXECUTED 4ef48: 4eb9 0004 9fa8 jsr 49fa8 <_Objects_Free> <== NOT EXECUTED
_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4ef4e: 4eb9 0004 a9d2 jsr 4a9d2 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef54: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Objects_Close( &_Barrier_Information, &the_barrier->Object );
_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4ef58: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4ef5c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef5e: 4e5e unlk %fp <== NOT EXECUTED 4ef60: 4e75 rts <== NOT EXECUTED 4ef62: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ef66: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef68: 4e5e unlk %fp <== NOT EXECUTED
00047344 <rtems_barrier_ident>:
rtems_status_code rtems_barrier_ident(
rtems_name name,
rtems_id *id
)
{
47344: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
47348: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4734c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 47352: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47356: 4879 0006 1978 pea 61978 <_Barrier_Information> <== NOT EXECUTED 4735c: 4eb9 0004 975c jsr 4975c <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
47362: 41f9 0005 f286 lea 5f286 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
47368: 4e5e unlk %fp <== NOT EXECUTED 4736a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
0004ef9c <rtems_barrier_release>:
rtems_status_code rtems_barrier_release(
rtems_id id,
uint32_t *released
)
{
4ef9c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4efa0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4efa2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4efa6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4efa8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
4efac: 4a8a tstl %a2 <== NOT EXECUTED 4efae: 6754 beqs 4f004 <rtems_barrier_release+0x68> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4efb0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4efb4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4efb6: 4879 0006 2e8e pea 62e8e <_Barrier_Information> <== NOT EXECUTED 4efbc: 4eb9 0004 a114 jsr 4a114 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4efc2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4efc6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4efca: 662a bnes 4eff6 <rtems_barrier_release+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
*released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL );
4efcc: 42a7 clrl %sp@- <== NOT EXECUTED 4efce: 2040 moveal %d0,%a0 <== NOT EXECUTED 4efd0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4efd2: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4efd6: 4eb9 0004 f6e0 jsr 4f6e0 <_CORE_barrier_Release> <== NOT EXECUTED 4efdc: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4efde: 4eb9 0004 a9d2 jsr 4a9d2 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4efe4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
*released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4efe8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4efec: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4efee: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4eff2: 4e5e unlk %fp <== NOT EXECUTED 4eff4: 4e75 rts <== NOT EXECUTED 4eff6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4effa: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4effc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4f000: 4e5e unlk %fp <== NOT EXECUTED 4f002: 4e75 rts <== NOT EXECUTED 4f004: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
{
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
return RTEMS_INVALID_ADDRESS;
4f008: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f00a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4f00e: 4e5e unlk %fp <== NOT EXECUTED
...
0004f014 <rtems_barrier_wait>:
rtems_status_code rtems_barrier_wait(
rtems_id id,
rtems_interval timeout
)
{
4f014: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f018: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f01a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f01e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4f022: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f024: 4879 0006 2e8e pea 62e8e <_Barrier_Information> <== NOT EXECUTED 4f02a: 4eb9 0004 a114 jsr 4a114 <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4f030: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4f034: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f038: 663a bnes 4f074 <rtems_barrier_wait+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
4f03a: 42a7 clrl %sp@- <== NOT EXECUTED 4f03c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4f040: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f042: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4f046: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f048: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4f04c: 4eb9 0004 f71c jsr 4f71c <_CORE_barrier_Wait> <== NOT EXECUTED
id,
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
4f052: 4eb9 0004 a9d2 jsr 4a9d2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4f058: 2079 0006 2ae0 moveal 62ae0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4f05e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4f062: 4eb9 0005 0b00 jsr 50b00 <_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f068: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4f06c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f070: 4e5e unlk %fp <== NOT EXECUTED 4f072: 4e75 rts <== NOT EXECUTED 4f074: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f078: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f07a: 4e5e unlk %fp <== NOT EXECUTED
...
00042820 <rtems_bsp_cmdline_get>:
#include <rtems/bspcmdline.h>
extern const char *bsp_boot_cmdline;
const char *rtems_bsp_cmdline_get(void)
{
42820: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return bsp_boot_cmdline; }
42824: 2039 0006 0990 movel 60990 <bsp_boot_cmdline>,%d0 <== NOT EXECUTED 4282a: 4e5e unlk %fp <== NOT EXECUTED
...
00042830 <rtems_bsp_cmdline_get_param>:
const char *rtems_bsp_cmdline_get_param(
const char *name,
char *value,
size_t length
)
{
42830: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 42834: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 42838: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4283c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
const char *p;
if ( !name )
42840: 4a80 tstl %d0 <== NOT EXECUTED 42842: 660e bnes 42852 <rtems_bsp_cmdline_get_param+0x22><== NOT EXECUTED
value[0] = '\0';
p = rtems_bsp_cmdline_get_param_raw( name );
if ( !p )
return NULL;
42844: 95ca subal %a2,%a2 <== NOT EXECUTED
copy_string( p, value, length );
return value;
}
42846: 200a movel %a2,%d0 <== NOT EXECUTED 42848: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4284e: 4e5e unlk %fp <== NOT EXECUTED 42850: 4e75 rts <== NOT EXECUTED
const char *p;
if ( !name )
return NULL;
if ( !value )
42852: 4a8a tstl %a2 <== NOT EXECUTED 42854: 67f0 beqs 42846 <rtems_bsp_cmdline_get_param+0x16><== NOT EXECUTED
return NULL;
if ( !length )
42856: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 4285a: 67e8 beqs 42844 <rtems_bsp_cmdline_get_param+0x14><== NOT EXECUTED
return NULL;
value[0] = '\0';
4285c: 4212 clrb %a2@ <== NOT EXECUTED
p = rtems_bsp_cmdline_get_param_raw( name );
4285e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42860: 4eb9 0004 28c0 jsr 428c0 <rtems_bsp_cmdline_get_param_raw> <== NOT EXECUTED
if ( !p )
42866: 588f addql #4,%sp <== NOT EXECUTED 42868: 4a80 tstl %d0 <== NOT EXECUTED 4286a: 67d8 beqs 42844 <rtems_bsp_cmdline_get_param+0x14><== NOT EXECUTED
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
4286c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4286e: 1210 moveb %a0@,%d1 <== NOT EXECUTED 42870: 67d4 beqs 42846 <rtems_bsp_cmdline_get_param+0x16><== NOT EXECUTED 42872: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 42876: 5384 subql #1,%d4 <== NOT EXECUTED 42878: 67cc beqs 42846 <rtems_bsp_cmdline_get_param+0x16><== NOT EXECUTED
value[i] = '\0';
}
}
const char *rtems_bsp_cmdline_get_param(
4287a: 2240 moveal %d0,%a1 <== NOT EXECUTED 4287c: 47ea 0001 lea %a2@(1),%a3 <== NOT EXECUTED 42880: 5289 addql #1,%a1 <== NOT EXECUTED
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
42882: 91c8 subal %a0,%a0 <== NOT EXECUTED
value[i] = '\0';
}
}
const char *rtems_bsp_cmdline_get_param(
42884: 4280 clrl %d0 <== NOT EXECUTED 42886: 4283 clrl %d3 <== NOT EXECUTED
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
if ( *p == '\"' ) {
42888: 7a22 moveq #34,%d5 <== NOT EXECUTED 4288a: 1401 moveb %d1,%d2 <== NOT EXECUTED 4288c: 49c2 extbl %d2 <== NOT EXECUTED 4288e: ba82 cmpl %d2,%d5 <== NOT EXECUTED 42890: 672a beqs 428bc <rtems_bsp_cmdline_get_param+0x8c><== NOT EXECUTED
quotes++;
} else if ( ((quotes % 2) == 0) && *p == ' ' )
42892: 0803 0000 btst #0,%d3 <== NOT EXECUTED 42896: 6606 bnes 4289e <rtems_bsp_cmdline_get_param+0x6e><== NOT EXECUTED 42898: 7a20 moveq #32,%d5 <== NOT EXECUTED 4289a: ba82 cmpl %d2,%d5 <== NOT EXECUTED 4289c: 67a8 beqs 42846 <rtems_bsp_cmdline_get_param+0x16><== NOT EXECUTED
break;
value[i++] = *p++;
4289e: 5280 addql #1,%d0 <== NOT EXECUTED 428a0: 1581 8800 moveb %d1,%a2@(00000000,%a0:l) <== NOT EXECUTED
value[i] = '\0';
428a4: 421b clrb %a3@+ <== NOT EXECUTED
for (i=0 ; *p && i<length-1; ) {
if ( *p == '\"' ) {
quotes++;
} else if ( ((quotes % 2) == 0) && *p == ' ' )
break;
value[i++] = *p++;
428a6: 2040 moveal %d0,%a0 <== NOT EXECUTED
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
428a8: 1219 moveb %a1@+,%d1 <== NOT EXECUTED 428aa: 679a beqs 42846 <rtems_bsp_cmdline_get_param+0x16><== NOT EXECUTED 428ac: b880 cmpl %d0,%d4 <== NOT EXECUTED 428ae: 62d8 bhis 42888 <rtems_bsp_cmdline_get_param+0x58><== NOT EXECUTED
return NULL;
copy_string( p, value, length );
return value;
}
428b0: 200a movel %a2,%d0 <== NOT EXECUTED 428b2: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 428b8: 4e5e unlk %fp <== NOT EXECUTED 428ba: 4e75 rts <== NOT EXECUTED
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
if ( *p == '\"' ) {
quotes++;
428bc: 5283 addql #1,%d3 <== NOT EXECUTED 428be: 60de bras 4289e <rtems_bsp_cmdline_get_param+0x6e><== NOT EXECUTED
000428c0 <rtems_bsp_cmdline_get_param_raw>:
extern const char *bsp_boot_cmdline;
const char *rtems_bsp_cmdline_get_param_raw(
const char *name
)
{
428c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 428c4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
const char *p;
if ( !name )
428c8: 6606 bnes 428d0 <rtems_bsp_cmdline_get_param_raw+0x10><== NOT EXECUTED
return NULL;
if ( !bsp_boot_cmdline )
return NULL;
428ca: 4280 clrl %d0 <== NOT EXECUTED
p = strstr(bsp_boot_cmdline, name);
/* printf( "raw: %p (%s)\n", p, p ); */
return p;
}
428cc: 4e5e unlk %fp <== NOT EXECUTED 428ce: 4e75 rts <== NOT EXECUTED
const char *p;
if ( !name )
return NULL;
if ( !bsp_boot_cmdline )
428d0: 2239 0006 0990 movel 60990 <bsp_boot_cmdline>,%d1 <== NOT EXECUTED 428d6: 67f2 beqs 428ca <rtems_bsp_cmdline_get_param_raw+0xa><== NOT EXECUTED
return NULL;
p = strstr(bsp_boot_cmdline, name);
428d8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 428da: 2f01 movel %d1,%sp@- <== NOT EXECUTED 428dc: 4eb9 0005 08e2 jsr 508e2 <strstr> <== NOT EXECUTED 428e2: 508f addql #8,%sp <== NOT EXECUTED
/* printf( "raw: %p (%s)\n", p, p ); */ return p; }
428e4: 4e5e unlk %fp <== NOT EXECUTED
000428e8 <rtems_bsp_cmdline_get_param_rhs>:
const char *rtems_bsp_cmdline_get_param_rhs(
const char *name,
char *value,
size_t length
)
{
428e8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 428ec: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
428f0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
const char *rtems_bsp_cmdline_get_param_rhs(
const char *name,
char *value,
size_t length
)
{
428f4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 428f8: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
428fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 428fe: 2f04 movel %d4,%sp@- <== NOT EXECUTED 42900: 4eb9 0004 2830 jsr 42830 <rtems_bsp_cmdline_get_param> <== NOT EXECUTED
if ( !p )
42906: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
{
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
4290a: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !p )
4290c: 660e bnes 4291c <rtems_bsp_cmdline_get_param_rhs+0x34><== NOT EXECUTED
return NULL;
rhs = &p[strlen(name)];
if ( *rhs != '=' )
return NULL;
4290e: 4282 clrl %d2 <== NOT EXECUTED
if ( *(d-1) == '\"' )
d--;
*d = '\0';
return value;
}
42910: 2002 movel %d2,%d0 <== NOT EXECUTED 42912: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 42918: 4e5e unlk %fp <== NOT EXECUTED 4291a: 4e75 rts <== NOT EXECUTED
p = rtems_bsp_cmdline_get_param( name, value, length );
if ( !p )
return NULL;
rhs = &p[strlen(name)];
4291c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4291e: 4eb9 0005 045c jsr 5045c <strlen> <== NOT EXECUTED 42924: 588f addql #4,%sp <== NOT EXECUTED 42926: 2243 moveal %d3,%a1 <== NOT EXECUTED 42928: d3c0 addal %d0,%a1 <== NOT EXECUTED
if ( *rhs != '=' )
4292a: 723d moveq #61,%d1 <== NOT EXECUTED 4292c: 1011 moveb %a1@,%d0 <== NOT EXECUTED 4292e: 49c0 extbl %d0 <== NOT EXECUTED 42930: b280 cmpl %d0,%d1 <== NOT EXECUTED 42932: 66da bnes 4290e <rtems_bsp_cmdline_get_param_rhs+0x26><== NOT EXECUTED
return NULL;
rhs++;
42934: 5289 addql #1,%a1 <== NOT EXECUTED
if ( *rhs == '\"' )
42936: 7622 moveq #34,%d3 <== NOT EXECUTED 42938: 1011 moveb %a1@,%d0 <== NOT EXECUTED 4293a: 1200 moveb %d0,%d1 <== NOT EXECUTED 4293c: 49c1 extbl %d1 <== NOT EXECUTED 4293e: b681 cmpl %d1,%d3 <== NOT EXECUTED 42940: 6730 beqs 42972 <rtems_bsp_cmdline_get_param_rhs+0x8a><== NOT EXECUTED
rhs++;
for ( d=value ; *rhs ; )
42942: 4a00 tstb %d0 <== NOT EXECUTED 42944: 6732 beqs 42978 <rtems_bsp_cmdline_get_param_rhs+0x90><== NOT EXECUTED 42946: 2042 moveal %d2,%a0 <== NOT EXECUTED
#include <string.h>
#include <rtems/bspcmdline.h>
const char *rtems_bsp_cmdline_get_param_rhs(
42948: 5289 addql #1,%a1 <== NOT EXECUTED
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
4294a: 10c0 moveb %d0,%a0@+ <== NOT EXECUTED
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
4294c: 1019 moveb %a1@+,%d0 <== NOT EXECUTED
*d++ = *rhs++;
4294e: 2448 moveal %a0,%a2 <== NOT EXECUTED
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
42950: 66f8 bnes 4294a <rtems_bsp_cmdline_get_param_rhs+0x62><== NOT EXECUTED
*d++ = *rhs++;
if ( *(d-1) == '\"' )
42952: 204a moveal %a2,%a0 <== NOT EXECUTED 42954: 7222 moveq #34,%d1 <== NOT EXECUTED 42956: 1020 moveb %a0@-,%d0 <== NOT EXECUTED 42958: 49c0 extbl %d0 <== NOT EXECUTED 4295a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4295c: 670e beqs 4296c <rtems_bsp_cmdline_get_param_rhs+0x84><== NOT EXECUTED
d--;
*d = '\0';
4295e: 4212 clrb %a2@ <== NOT EXECUTED
return value;
}
42960: 2002 movel %d2,%d0 <== NOT EXECUTED 42962: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 42968: 4e5e unlk %fp <== NOT EXECUTED 4296a: 4e75 rts <== NOT EXECUTED
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
if ( *(d-1) == '\"' )
4296c: 2448 moveal %a0,%a2 <== NOT EXECUTED
d--;
*d = '\0';
4296e: 4212 clrb %a2@ <== NOT EXECUTED 42970: 60ee bras 42960 <rtems_bsp_cmdline_get_param_rhs+0x78><== NOT EXECUTED
if ( *rhs != '=' )
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
42972: 5289 addql #1,%a1 <== NOT EXECUTED 42974: 1011 moveb %a1@,%d0 <== NOT EXECUTED 42976: 60ca bras 42942 <rtems_bsp_cmdline_get_param_rhs+0x5a><== NOT EXECUTED
for ( d=value ; *rhs ; )
42978: 2442 moveal %d2,%a2 <== NOT EXECUTED
*d++ = *rhs++;
if ( *(d-1) == '\"' )
4297a: 204a moveal %a2,%a0 <== NOT EXECUTED 4297c: 7222 moveq #34,%d1 <== NOT EXECUTED 4297e: 1020 moveb %a0@-,%d0 <== NOT EXECUTED 42980: 49c0 extbl %d0 <== NOT EXECUTED 42982: b280 cmpl %d0,%d1 <== NOT EXECUTED 42984: 66d8 bnes 4295e <rtems_bsp_cmdline_get_param_rhs+0x76><== NOT EXECUTED 42986: 60e4 bras 4296c <rtems_bsp_cmdline_get_param_rhs+0x84><== NOT EXECUTED
00047e18 <rtems_build_id>:
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e18: 7218 moveq #24,%d1 <== NOT EXECUTED
uint32_t api,
uint32_t class,
uint32_t node,
uint32_t index
)
{
47e1a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47e1e: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 47e22: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47e24: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 47e28: e3aa lsll %d1,%d2 <== NOT EXECUTED
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e2a: 123c 001b moveb #27,%d1 <== NOT EXECUTED 47e2e: e3a8 lsll %d1,%d0 <== NOT EXECUTED 47e30: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e34: 8082 orl %d2,%d0 <== NOT EXECUTED
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
#if !defined(RTEMS_USE_16_BIT_OBJECT)
(( (Objects_Id) node ) << OBJECTS_NODE_START_BIT) |
47e36: 4841 swap %d1 <== NOT EXECUTED 47e38: 4241 clrw %d1 <== NOT EXECUTED
return _Objects_Build_id( api, class, node, index ); }
47e3a: 241f movel %sp@+,%d2 <== NOT EXECUTED
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e3c: 80ae 0014 orl %fp@(20),%d0 <== NOT EXECUTED 47e40: 4e5e unlk %fp <== NOT EXECUTED 47e42: 8081 orl %d1,%d0 <== NOT EXECUTED
...
00047e48 <rtems_build_name>:
char C1,
char C2,
char C3,
char C4
)
{
47e48: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
return _Objects_Build_name( C1, C2, C3, C4 );
47e4c: 102e 000f moveb %fp@(15),%d0 <== NOT EXECUTED
char C1,
char C2,
char C3,
char C4
)
{
47e50: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
return _Objects_Build_name( C1, C2, C3, C4 );
47e54: 142e 000b moveb %fp@(11),%d2 <== NOT EXECUTED 47e58: 122e 0013 moveb %fp@(19),%d1 <== NOT EXECUTED 47e5c: 7818 moveq #24,%d4 <== NOT EXECUTED 47e5e: 49c0 extbl %d0 <== NOT EXECUTED 47e60: 49c2 extbl %d2 <== NOT EXECUTED 47e62: 49c1 extbl %d1 <== NOT EXECUTED 47e64: e9aa lsll %d4,%d2 <== NOT EXECUTED 47e66: 4840 swap %d0 <== NOT EXECUTED 47e68: 4240 clrw %d0 <== NOT EXECUTED 47e6a: e189 lsll #8,%d1 <== NOT EXECUTED 47e6c: 162e 0017 moveb %fp@(23),%d3 <== NOT EXECUTED 47e70: 8082 orl %d2,%d0 <== NOT EXECUTED 47e72: 49c3 extbl %d3 <== NOT EXECUTED 47e74: 8081 orl %d1,%d0 <== NOT EXECUTED
}
47e76: 8083 orl %d3,%d0 <== NOT EXECUTED 47e78: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 47e7c: 4e5e unlk %fp <== NOT EXECUTED
000470b8 <rtems_chain_append_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
470b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 470bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 470be: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 470c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
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 );
470c4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 470c8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 470cc: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 470d0: 4eb9 0004 7678 jsr 47678 <_Chain_Append_with_empty_check> <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
470d6: 508f addql #8,%sp <== NOT EXECUTED 470d8: 4a00 tstb %d0 <== NOT EXECUTED 470da: 660e bnes 470ea <rtems_chain_append_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
470dc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 470e0: 4280 clrl %d0 <== NOT EXECUTED 470e2: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 470e6: 4e5e unlk %fp <== NOT EXECUTED 470e8: 4e75 rts <== NOT EXECUTED
{
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 );
470ea: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
470ee: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
{
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 );
470f2: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
470f6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 470fa: 4e5e unlk %fp <== NOT EXECUTED
{
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 );
470fc: 4ef9 0004 65f0 jmp 465f0 <rtems_event_send> <== NOT EXECUTED
...
00047104 <rtems_chain_get_with_notification>:
rtems_chain_control *chain,
rtems_id task,
rtems_event_set events,
rtems_chain_node **node
)
{
47104: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47108: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4710a: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4710e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
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 );
47110: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 47114: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47118: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4711c: 4eb9 0004 7718 jsr 47718 <_Chain_Get_with_empty_check> <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
47122: 508f addql #8,%sp <== NOT EXECUTED 47124: 4a00 tstb %d0 <== NOT EXECUTED 47126: 660e bnes 47136 <rtems_chain_get_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
47128: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4712c: 4280 clrl %d0 <== NOT EXECUTED 4712e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 47132: 4e5e unlk %fp <== NOT EXECUTED 47134: 4e75 rts <== NOT EXECUTED
{
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 );
47136: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
4713a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
{
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 );
4713e: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
47142: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47146: 4e5e unlk %fp <== NOT EXECUTED
{
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 );
47148: 4ef9 0004 65f0 jmp 465f0 <rtems_event_send> <== NOT EXECUTED
...
00047150 <rtems_chain_get_with_wait>:
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
47150: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 47154: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
) {
rtems_event_set out;
sc = rtems_event_receive(
47158: 2c0e movel %fp,%d6 <== NOT EXECUTED 4715a: 45f9 0004 7764 lea 47764 <_Chain_Get>,%a2 <== NOT EXECUTED 47160: 5986 subql #4,%d6 <== NOT EXECUTED 47162: 47f9 0004 6448 lea 46448 <rtems_event_receive>,%a3 <== NOT EXECUTED
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
47168: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4716c: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 47170: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
47174: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47176: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
47178: 588f addql #4,%sp <== NOT EXECUTED 4717a: 2400 movel %d0,%d2 <== NOT EXECUTED 4717c: 6622 bnes 471a0 <rtems_chain_get_with_wait+0x50> <== NOT EXECUTED
) {
rtems_event_set out;
sc = rtems_event_receive(
4717e: 2f06 movel %d6,%sp@- <== NOT EXECUTED 47180: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47182: 42a7 clrl %sp@- <== NOT EXECUTED 47184: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47186: 4e93 jsr %a3@ <== NOT EXECUTED
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
47188: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4718c: 4a80 tstl %d0 <== NOT EXECUTED 4718e: 67e4 beqs 47174 <rtems_chain_get_with_wait+0x24> <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
47190: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 47194: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
47196: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4719c: 4e5e unlk %fp <== NOT EXECUTED 4719e: 4e75 rts <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
471a0: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
471a4: 4280 clrl %d0 <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
471a6: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
471a8: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED 471ae: 4e5e unlk %fp <== NOT EXECUTED
...
000471b4 <rtems_chain_prepend_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
471b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 471b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 471ba: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 471be: 2f02 movel %d2,%sp@- <== NOT EXECUTED
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 );
471c0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 471c4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 471c8: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 471cc: 4eb9 0004 77d0 jsr 477d0 <_Chain_Prepend_with_empty_check> <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
471d2: 508f addql #8,%sp <== NOT EXECUTED 471d4: 4a00 tstb %d0 <== NOT EXECUTED 471d6: 660e bnes 471e6 <rtems_chain_prepend_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
471d8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 471dc: 4280 clrl %d0 <== NOT EXECUTED 471de: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 471e2: 4e5e unlk %fp <== NOT EXECUTED 471e4: 4e75 rts <== NOT EXECUTED
{
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 );
471e6: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
471ea: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
{
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 );
471ee: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
471f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 471f6: 4e5e unlk %fp <== NOT EXECUTED
{
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 );
471f8: 4ef9 0004 65f0 jmp 465f0 <rtems_event_send> <== NOT EXECUTED
...
000557b8 <rtems_clock_get>:
rtems_status_code rtems_clock_get(
rtems_clock_get_options option,
void *time_buffer
)
{
557b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 557bc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 557c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 557c2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if ( !time_buffer )
557c6: 4a8a tstl %a2 <== NOT EXECUTED 557c8: 6748 beqs 55812 <rtems_clock_get+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( option == RTEMS_CLOCK_GET_TOD )
557ca: 4a80 tstl %d0 <== NOT EXECUTED 557cc: 6734 beqs 55802 <rtems_clock_get+0x4a> <== NOT EXECUTED
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH )
557ce: 7201 moveq #1,%d1 <== NOT EXECUTED 557d0: b280 cmpl %d0,%d1 <== NOT EXECUTED 557d2: 674a beqs 5581e <rtems_clock_get+0x66> <== NOT EXECUTED
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) {
557d4: 7202 moveq #2,%d1 <== NOT EXECUTED 557d6: b280 cmpl %d0,%d1 <== NOT EXECUTED 557d8: 6754 beqs 5582e <rtems_clock_get+0x76> <== NOT EXECUTED
*interval = rtems_clock_get_ticks_since_boot();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) {
557da: 7203 moveq #3,%d1 <== NOT EXECUTED 557dc: b280 cmpl %d0,%d1 <== NOT EXECUTED 557de: 6762 beqs 55842 <rtems_clock_get+0x8a> <== NOT EXECUTED
*interval = rtems_clock_get_ticks_per_second();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
557e0: 7204 moveq #4,%d1 <== NOT EXECUTED 557e2: b280 cmpl %d0,%d1 <== NOT EXECUTED 557e4: 670c beqs 557f2 <rtems_clock_get+0x3a> <== NOT EXECUTED
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
557e6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
557ea: 720a moveq #10,%d1 <== NOT EXECUTED
}
557ec: 2001 movel %d1,%d0 <== NOT EXECUTED 557ee: 4e5e unlk %fp <== NOT EXECUTED 557f0: 4e75 rts <== NOT EXECUTED
*interval = rtems_clock_get_ticks_per_second();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
557f2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
}
557f6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 557fa: 4e5e unlk %fp <== NOT EXECUTED
*interval = rtems_clock_get_ticks_per_second();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
557fc: 4ef9 0005 5970 jmp 55970 <rtems_clock_get_tod_timeval> <== NOT EXECUTED
{
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( option == RTEMS_CLOCK_GET_TOD )
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
55802: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55806: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5580a: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( option == RTEMS_CLOCK_GET_TOD )
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
5580c: 4ef9 0005 58ac jmp 558ac <rtems_clock_get_tod> <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55812: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_clock_get_options option,
void *time_buffer
)
{
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
55816: 7209 moveq #9,%d1 <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55818: 2001 movel %d1,%d0 <== NOT EXECUTED 5581a: 4e5e unlk %fp <== NOT EXECUTED 5581c: 4e75 rts <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TOD )
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH )
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
5581e: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55822: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 55826: 4e5e unlk %fp <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TOD )
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH )
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
55828: 4ef9 0005 5858 jmp 55858 <rtems_clock_get_seconds_since_epoch><== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) {
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_since_boot();
5582e: 4eb9 0005 589c jsr 5589c <rtems_clock_get_ticks_since_boot><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55834: 4281 clrl %d1 <== NOT EXECUTED
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) {
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_since_boot();
55836: 2480 movel %d0,%a2@ <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55838: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5583c: 2001 movel %d1,%d0 <== NOT EXECUTED 5583e: 4e5e unlk %fp <== NOT EXECUTED 55840: 4e75 rts <== NOT EXECUTED
}
if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) {
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_per_second();
55842: 4eb9 0005 5884 jsr 55884 <rtems_clock_get_ticks_per_second><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55848: 4281 clrl %d1 <== NOT EXECUTED
}
if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) {
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_per_second();
5584a: 2480 movel %d0,%a2@ <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
5584c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 55850: 2001 movel %d1,%d0 <== NOT EXECUTED 55852: 4e5e unlk %fp <== NOT EXECUTED
...
00047074 <rtems_clock_get_seconds_since_epoch>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
47074: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47078: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !the_interval )
4707c: 4a88 tstl %a0 <== NOT EXECUTED 4707e: 671a beqs 4709a <rtems_clock_get_seconds_since_epoch+0x26><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
47080: 4a39 0006 a28c tstb 6a28c <_TOD_Is_set> <== NOT EXECUTED 47086: 670c beqs 47094 <rtems_clock_get_seconds_since_epoch+0x20><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
47088: 20b9 0006 a306 movel 6a306 <_TOD_Now>,%a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4708e: 4280 clrl %d0 <== NOT EXECUTED
}
47090: 4e5e unlk %fp <== NOT EXECUTED 47092: 4e75 rts <== NOT EXECUTED
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
47094: 700b moveq #11,%d0 <== NOT EXECUTED
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
47096: 4e5e unlk %fp <== NOT EXECUTED 47098: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
4709a: 7009 moveq #9,%d0 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
4709c: 4e5e unlk %fp <== NOT EXECUTED
00045d3c <rtems_clock_get_ticks_per_second>:
rtems_interval rtems_clock_get_ticks_per_second(void)
{
return TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
}
45d3c: 41f9 0005 e3f0 lea 5e3f0 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/score/thread.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
rtems_interval rtems_clock_get_ticks_per_second(void)
{
45d42: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
}
45d46: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 45d4c: 4e5e unlk %fp <== NOT EXECUTED 45d4e: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00045d54 <rtems_clock_get_ticks_since_boot>:
#include <rtems/score/thread.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
rtems_interval rtems_clock_get_ticks_since_boot(void)
{
45d54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Watchdog_Ticks_since_boot;
45d58: 2039 0005 fdb8 movel 5fdb8 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
}
45d5e: 4e5e unlk %fp <== NOT EXECUTED
...
000470c8 <rtems_clock_get_tod>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod(
rtems_time_of_day *time_buffer
)
{
470c8: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 470cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470ce: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 470d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_time_of_day *tmbuf = time_buffer;
struct tm time;
struct timeval now;
if ( !time_buffer )
470d4: 4a8a tstl %a2 <== NOT EXECUTED 470d6: 6700 00a6 beqw 4717e <rtems_clock_get_tod+0xb6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
470da: 4a39 0006 a28c tstb 6a28c <_TOD_Is_set> <== NOT EXECUTED 470e0: 660e bnes 470f0 <rtems_clock_get_tod+0x28> <== NOT EXECUTED
tmbuf->second = time.tm_sec;
tmbuf->ticks = now.tv_usec /
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
470e2: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
470e6: 700b moveq #11,%d0 <== NOT EXECUTED
tmbuf->second = time.tm_sec;
tmbuf->ticks = now.tv_usec /
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
470e8: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED 470ec: 4e5e unlk %fp <== NOT EXECUTED 470ee: 4e75 rts <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
470f0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 470f6: 40c2 movew %sr,%d2 <== NOT EXECUTED 470f8: 8082 orl %d2,%d0 <== NOT EXECUTED 470fa: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
470fc: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 47100: 4eb9 0004 8bf8 jsr 48bf8 <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
47106: 46c2 movew %d2,%sr <== NOT EXECUTED
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
47108: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
/* Obtain the current time */
_TOD_Get_timeval( &now );
/* Split it into a closer format */
gmtime_r( &now.tv_sec, &time );
4710e: 486e ffcc pea %fp@(-52) <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
47112: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 47116: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
4711a: 2d6e fff0 fff8 movel %fp@(-16),%fp@(-8) <== NOT EXECUTED
time->tv_usec = useconds;
47120: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED 47124: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 47128: 4eb9 0005 0c70 jsr 50c70 <gmtime_r> <== NOT EXECUTED
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
tmbuf->month = time.tm_mon + 1;
4712e: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED 47132: 5288 addql #1,%a0 <== NOT EXECUTED
tmbuf->minute = time.tm_min;
tmbuf->second = time.tm_sec;
tmbuf->ticks = now.tv_usec /
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
47134: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47138: 4280 clrl %d0 <== NOT EXECUTED
/* Split it into a closer format */
gmtime_r( &now.tv_sec, &time );
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
tmbuf->month = time.tm_mon + 1;
4713a: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
/* Split it into a closer format */
gmtime_r( &now.tv_sec, &time );
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
4713e: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 47142: 41e8 076c lea %a0@(1900),%a0 <== NOT EXECUTED
tmbuf->month = time.tm_mon + 1; tmbuf->day = time.tm_mday; tmbuf->hour = time.tm_hour; tmbuf->minute = time.tm_min; tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec /
47146: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
/* Split it into a closer format */
gmtime_r( &now.tv_sec, &time );
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
4714a: 2488 movel %a0,%a2@ <== NOT EXECUTED
tmbuf->month = time.tm_mon + 1; tmbuf->day = time.tm_mday; tmbuf->hour = time.tm_hour; tmbuf->minute = time.tm_min; tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec /
4714c: 41f9 0006 0c10 lea 60c10 <Configuration+0xc>,%a0 <== NOT EXECUTED 47152: 4c50 2002 remul %a0@,%d2,%d2 <== NOT EXECUTED
gmtime_r( &now.tv_sec, &time );
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
tmbuf->month = time.tm_mon + 1;
tmbuf->day = time.tm_mday;
47156: 256e ffd8 0008 movel %fp@(-40),%a2@(8) <== NOT EXECUTED
tmbuf->hour = time.tm_hour;
4715c: 256e ffd4 000c movel %fp@(-44),%a2@(12) <== NOT EXECUTED
tmbuf->minute = time.tm_min;
47162: 256e ffd0 0010 movel %fp@(-48),%a2@(16) <== NOT EXECUTED
tmbuf->second = time.tm_sec;
47168: 256e ffcc 0014 movel %fp@(-52),%a2@(20) <== NOT EXECUTED
tmbuf->ticks = now.tv_usec /
4716e: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
47172: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED 47176: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED 4717a: 4e5e unlk %fp <== NOT EXECUTED 4717c: 4e75 rts <== NOT EXECUTED 4717e: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
rtems_time_of_day *tmbuf = time_buffer;
struct tm time;
struct timeval now;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
47182: 7009 moveq #9,%d0 <== NOT EXECUTED
tmbuf->second = time.tm_sec;
tmbuf->ticks = now.tv_usec /
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
47184: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED 47188: 4e5e unlk %fp <== NOT EXECUTED
00055970 <rtems_clock_get_tod_timeval>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod_timeval(
struct timeval *time
)
{
55970: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 55974: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 55978: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !time )
5597c: 4a8a tstl %a2 <== NOT EXECUTED 5597e: 6750 beqs 559d0 <rtems_clock_get_tod_timeval+0x60><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
55980: 4a39 0007 eb80 tstb 7eb80 <_TOD_Is_set> <== NOT EXECUTED 55986: 660c bnes 55994 <rtems_clock_get_tod_timeval+0x24><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
55988: 700b moveq #11,%d0 <== NOT EXECUTED
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
}
5598a: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 55990: 4e5e unlk %fp <== NOT EXECUTED 55992: 4e75 rts <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
55994: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 5599a: 40c2 movew %sr,%d2 <== NOT EXECUTED 5599c: 8082 orl %d2,%d0 <== NOT EXECUTED 5599e: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
559a0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 559a4: 4eb9 0005 a5c0 jsr 5a5c0 <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
559aa: 46c2 movew %d2,%sr <== NOT EXECUTED
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
559ac: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
559b2: 588f addql #4,%sp <== NOT EXECUTED 559b4: 4280 clrl %d0 <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
559b6: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
559ba: 4c43 1801 remsl %d3,%d1,%d1 <== NOT EXECUTED
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
559be: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED
time->tv_usec = useconds;
559c2: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
559c6: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 559cc: 4e5e unlk %fp <== NOT EXECUTED 559ce: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_tod_timeval(
struct timeval *time
)
{
if ( !time )
return RTEMS_INVALID_ADDRESS;
559d0: 7009 moveq #9,%d0 <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
}
559d2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 559d8: 4e5e unlk %fp <== NOT EXECUTED
00045f38 <rtems_clock_get_uptime>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
45f38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45f3c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !uptime )
45f40: 6710 beqs 45f52 <rtems_clock_get_uptime+0x1a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_TOD_Get_uptime_as_timespec( uptime );
45f42: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45f44: 4eb9 0004 77c4 jsr 477c4 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45f4a: 588f addql #4,%sp <== NOT EXECUTED 45f4c: 4280 clrl %d0 <== NOT EXECUTED
}
45f4e: 4e5e unlk %fp <== NOT EXECUTED 45f50: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
if ( !uptime )
return RTEMS_INVALID_ADDRESS;
45f52: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Get_uptime_as_timespec( uptime );
return RTEMS_SUCCESSFUL;
}
45f54: 4e5e unlk %fp <== NOT EXECUTED
000471a8 <rtems_clock_set>:
*/
rtems_status_code rtems_clock_set(
rtems_time_of_day *time_buffer
)
{
471a8: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 471ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 471ae: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 471b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
struct timespec newtime;
if ( !time_buffer )
471b4: 4a8a tstl %a2 <== NOT EXECUTED 471b6: 6772 beqs 4722a <rtems_clock_set+0x82> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
471b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 471ba: 4eb9 0004 7380 jsr 47380 <_TOD_Validate> <== NOT EXECUTED 471c0: 588f addql #4,%sp <== NOT EXECUTED 471c2: 4a00 tstb %d0 <== NOT EXECUTED 471c4: 660e bnes 471d4 <rtems_clock_set+0x2c> <== NOT EXECUTED
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
471c6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
471ca: 7014 moveq #20,%d0 <== NOT EXECUTED
}
471cc: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 471d0: 4e5e unlk %fp <== NOT EXECUTED 471d2: 4e75 rts <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
newtime.tv_sec = _TOD_To_seconds( time_buffer );
471d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 471d6: 4eb9 0004 7278 jsr 47278 <_TOD_To_seconds> <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
471dc: 242a 0018 movel %a2@(24),%d2 <== NOT EXECUTED 471e0: 41f9 0006 0c10 lea 60c10 <Configuration+0xc>,%a0 <== NOT EXECUTED 471e6: 4c10 2800 mulsl %a0@,%d2 <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
newtime.tv_sec = _TOD_To_seconds( time_buffer );
471ea: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
471ee: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED 471f4: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
471f8: 2239 0006 a27c movel 6a27c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 471fe: 5281 addql #1,%d1 <== NOT EXECUTED 47200: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 47204: 23c1 0006 a27c movel %d1,6a27c <_Thread_Dispatch_disable_level><== NOT EXECUTED
rtems_configuration_get_nanoseconds_per_tick();
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
4720a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4720e: 4eb9 0004 8d60 jsr 48d60 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
47214: 4eb9 0004 a192 jsr 4a192 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
4721a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
rtems_configuration_get_nanoseconds_per_tick();
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4721e: 508f addql #8,%sp <== NOT EXECUTED 47220: 4280 clrl %d0 <== NOT EXECUTED
} return RTEMS_INVALID_CLOCK; }
47222: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 47226: 4e5e unlk %fp <== NOT EXECUTED 47228: 4e75 rts <== NOT EXECUTED 4722a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
)
{
struct timespec newtime;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
4722e: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
47230: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 47234: 4e5e unlk %fp <== NOT EXECUTED
00045d64 <rtems_clock_set_nanoseconds_extension>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_set_nanoseconds_extension(
rtems_nanoseconds_extension_routine routine
)
{
45d64: 4e56 0000 linkw %fp,#0 45d68: 202e 0008 movel %fp@(8),%d0
if ( !routine )
45d6c: 670c beqs 45d7a <rtems_clock_set_nanoseconds_extension+0x16><== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_Watchdog_Nanoseconds_since_tick_handler = routine;
45d6e: 23c0 0005 fdfe movel %d0,5fdfe <_Watchdog_Nanoseconds_since_tick_handler>
return RTEMS_SUCCESSFUL;
45d74: 4280 clrl %d0
}
45d76: 4e5e unlk %fp 45d78: 4e75 rts
rtems_status_code rtems_clock_set_nanoseconds_extension(
rtems_nanoseconds_extension_routine routine
)
{
if ( !routine )
return RTEMS_INVALID_ADDRESS;
45d7a: 7009 moveq #9,%d0 <== NOT EXECUTED
_Watchdog_Nanoseconds_since_tick_handler = routine;
return RTEMS_SUCCESSFUL;
}
45d7c: 4e5e unlk %fp <== NOT EXECUTED
00045d80 <rtems_clock_tick>:
*
* NOTE: This routine only works for leap-years through 2099.
*/
rtems_status_code rtems_clock_tick( void )
{
45d80: 4e56 0000 linkw %fp,#0
_TOD_Tickle_ticks();
45d84: 4eb9 0004 7428 jsr 47428 <_TOD_Tickle_ticks>
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void )
{
_Watchdog_Tickle( &_Watchdog_Ticks_chain );
45d8a: 4879 0005 fd4e pea 5fd4e <_Watchdog_Ticks_chain> <== NOT EXECUTED 45d90: 4eb9 0004 9ad4 jsr 49ad4 <_Watchdog_Tickle> <== NOT EXECUTED
_Watchdog_Tickle_ticks();
_Thread_Tickle_timeslice();
45d96: 4eb9 0004 9498 jsr 49498 <_Thread_Tickle_timeslice> <== NOT EXECUTED
if ( _Thread_Is_context_switch_necessary() &&
45d9c: 588f addql #4,%sp <== NOT EXECUTED
* otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void )
{
return ( _Thread_Dispatch_necessary );
45d9e: 1039 0006 0128 moveb 60128 <_Per_CPU_Information+0x18>,%d0 <== NOT EXECUTED 45da4: 6708 beqs 45dae <rtems_clock_tick+0x2e> <== NOT EXECUTED
* otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void )
{
return ( _Thread_Dispatch_disable_level == 0 );
45da6: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45dac: 6706 beqs 45db4 <rtems_clock_tick+0x34> <== NOT EXECUTED
_Thread_Is_dispatching_enabled() )
_Thread_Dispatch();
return RTEMS_SUCCESSFUL;
}
45dae: 4280 clrl %d0 <== NOT EXECUTED 45db0: 4e5e unlk %fp <== NOT EXECUTED 45db2: 4e75 rts <== NOT EXECUTED
_Thread_Tickle_timeslice();
if ( _Thread_Is_context_switch_necessary() &&
_Thread_Is_dispatching_enabled() )
_Thread_Dispatch();
45db4: 4eb9 0004 857c jsr 4857c <_Thread_Dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
45dba: 4280 clrl %d0 <== NOT EXECUTED 45dbc: 4e5e unlk %fp <== NOT EXECUTED
000433c6 <rtems_cpu_usage_report>:
);
#endif
}
void rtems_cpu_usage_report( void )
{
433c6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_cpu_usage_report_with_plugin( NULL, printk_plugin );
433ca: 4879 0004 4ed4 pea 44ed4 <printk_plugin> <== NOT EXECUTED 433d0: 42a7 clrl %sp@- <== NOT EXECUTED 433d2: 4eb9 0004 3210 jsr 43210 <rtems_cpu_usage_report_with_plugin><== NOT EXECUTED 433d8: 508f addql #8,%sp <== NOT EXECUTED
}
433da: 4e5e unlk %fp <== NOT EXECUTED
...
00043210 <rtems_cpu_usage_report_with_plugin>:
void rtems_cpu_usage_report_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
43210: 4e56 ff9c linkw %fp,#-100 <== NOT EXECUTED 43214: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 43218: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4321c: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
Timestamp_Control uptime, total, ran;
#else
uint32_t total_units = 0;
#endif
if ( !print )
43220: 4a8c tstl %a4 <== NOT EXECUTED 43222: 6700 0138 beqw 4335c <rtems_cpu_usage_report_with_plugin+0x14c><== NOT EXECUTED
* When not using nanosecond CPU usage resolution, we have to count
* the number of "ticks" we gave credit for to give the user a rough
* guideline as to what each number means proportionally.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
43226: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
}
}
}
#endif
(*print)(
4322a: 41f9 0006 a23c lea 6a23c <_Objects_Information_table+0x4>,%a0<== NOT EXECUTED
* the number of "ticks" we gave credit for to give the user a rough
* guideline as to what each number means proportionally.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
_Timestamp_Subtract( &CPU_usage_Uptime_at_last_reset, &uptime, &total );
43230: 2c0e movel %fp,%d6 <== NOT EXECUTED 43232: 0686 ffff ffe8 addil #-24,%d6 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
continue;
rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
43238: 280e movel %fp,%d4 <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
Timestamp_Control used;
_Timestamp_Subtract(
&_Thread_Time_of_last_context_switch, &uptime, &used
);
_Timestamp_Add_to( &ran, &used );
4323a: 2a0e movel %fp,%d5 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
continue;
rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
4323c: 0684 ffff ffcb addil #-53,%d4 <== NOT EXECUTED
_Timestamp_Subtract(
&_Thread_Time_of_last_context_switch, &uptime, &used
);
_Timestamp_Add_to( &ran, &used );
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
43242: 4bf9 0004 b140 lea 4b140 <_Timespec_Divide>,%a5 <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
Timestamp_Control used;
_Timestamp_Subtract(
&_Thread_Time_of_last_context_switch, &uptime, &used
);
_Timestamp_Add_to( &ran, &used );
43248: 0685 ffff ffe0 addil #-32,%d5 <== NOT EXECUTED
}
}
}
#endif
(*print)(
4324e: 2d48 ffc4 movel %a0,%fp@(-60) <== NOT EXECUTED
* When not using nanosecond CPU usage resolution, we have to count
* the number of "ticks" we gave credit for to give the user a rough
* guideline as to what each number means proportionally.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
43252: 4eb9 0004 8c94 jsr 48c94 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_Subtract( &CPU_usage_Uptime_at_last_reset, &uptime, &total );
43258: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4325a: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 4325e: 4879 0006 a754 pea 6a754 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED 43264: 4eb9 0004 b224 jsr 4b224 <_Timespec_Subtract> <== NOT EXECUTED
}
}
}
#endif
(*print)(
4326a: 4879 0005 f346 pea 5f346 <IntUartPollCallbacks.6307+0x20> <== NOT EXECUTED 43270: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43272: 4e94 jsr %a4@ <== NOT EXECUTED
/*PAGE
*
* rtems_cpu_usage_report
*/
void rtems_cpu_usage_report_with_plugin(
43274: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
43278: 226e ffc4 moveal %fp@(-60),%a1 <== NOT EXECUTED 4327c: 58ae ffc4 addql #4,%fp@(-60) <== NOT EXECUTED 43280: 2059 moveal %a1@+,%a0 <== NOT EXECUTED 43282: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
if ( information ) {
43286: 4a8b tstl %a3 <== NOT EXECUTED 43288: 6700 00a2 beqw 4332c <rtems_cpu_usage_report_with_plugin+0x11c><== NOT EXECUTED
for ( i=1 ; i <= information->maximum ; i++ ) {
4328c: 4a6b 000e tstw %a3@(14) <== NOT EXECUTED 43290: 6700 009a beqw 4332c <rtems_cpu_usage_report_with_plugin+0x11c><== NOT EXECUTED 43294: 7401 moveq #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
43296: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED 4329a: 2470 2c00 moveal %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
if ( information ) {
for ( i=1 ; i <= information->maximum ; i++ ) {
4329e: 5282 addql #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
432a0: 4a8a tstl %a2 <== NOT EXECUTED 432a2: 677c beqs 43320 <rtems_cpu_usage_report_with_plugin+0x110><== NOT EXECUTED
continue;
rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
432a4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 432a6: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED 432aa: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 432ae: 4eb9 0004 782c jsr 4782c <rtems_object_get_name> <== NOT EXECUTED
(*print)(
432b4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 432b6: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 432ba: 4879 0005 f4b8 pea 5f4b8 <IntUartPollCallbacks.6307+0x192> <== NOT EXECUTED 432c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 432c2: 4e94 jsr %a4@ <== NOT EXECUTED
/*
* If this is the currently executing thread, account for time
* since the last context switch.
*/
ran = the_thread->cpu_time_used;
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
432c4: 2079 0006 a746 moveal 6a746 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 432ca: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
/*
* If this is the currently executing thread, account for time
* since the last context switch.
*/
ran = the_thread->cpu_time_used;
432ce: 202a 0082 movel %a2@(130),%d0 <== NOT EXECUTED 432d2: 222a 0086 movel %a2@(134),%d1 <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
432d6: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
/*
* If this is the currently executing thread, account for time
* since the last context switch.
*/
ran = the_thread->cpu_time_used;
432da: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED 432de: 2d41 ffe4 movel %d1,%fp@(-28) <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
432e2: b5e8 0008 cmpal %a0@(8),%a2 <== NOT EXECUTED 432e6: 677e beqs 43366 <rtems_cpu_usage_report_with_plugin+0x156><== NOT EXECUTED
_Timestamp_Subtract(
&_Thread_Time_of_last_context_switch, &uptime, &used
);
_Timestamp_Add_to( &ran, &used );
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
432e8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
432ec: 2e3c 0000 03e8 movel #1000,%d7 <== NOT EXECUTED
_Timestamp_Subtract(
&_Thread_Time_of_last_context_switch, &uptime, &used
);
_Timestamp_Add_to( &ran, &used );
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
432f2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 432f6: 2f06 movel %d6,%sp@- <== NOT EXECUTED 432f8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 432fa: 4e95 jsr %a5@ <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
432fc: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 43300: 202e ffe4 movel %fp@(-28),%d0 <== NOT EXECUTED 43304: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 43308: 4c47 0000 remul %d7,%d0,%d0 <== NOT EXECUTED 4330c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4330e: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED 43312: 4879 0005 f4cb pea 5f4cb <IntUartPollCallbacks.6307+0x1a5> <== NOT EXECUTED 43318: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4331a: 4e94 jsr %a4@ <== NOT EXECUTED 4331c: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
if ( information ) {
for ( i=1 ; i <= information->maximum ; i++ ) {
43320: 4280 clrl %d0 <== NOT EXECUTED 43322: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED 43326: b480 cmpl %d0,%d2 <== NOT EXECUTED 43328: 6300 ff6c blsw 43296 <rtems_cpu_usage_report_with_plugin+0x86><== NOT EXECUTED
" ID | NAME | TICKS | PERCENT\n"
#endif
"------------+----------------------------------------+---------------+---------\n"
);
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
4332c: 206e ffc4 moveal %fp@(-60),%a0 <== NOT EXECUTED 43330: b1fc 0006 a248 cmpal #434760,%a0 <== NOT EXECUTED 43336: 6600 ff40 bnew 43278 <rtems_cpu_usage_report_with_plugin+0x68><== NOT EXECUTED
}
}
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)(
4333a: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED 4333e: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 43344: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED 43348: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4334a: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED 4334e: 4879 0005 f4e3 pea 5f4e3 <IntUartPollCallbacks.6307+0x1bd> <== NOT EXECUTED 43354: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43356: 4e94 jsr %a4@ <== NOT EXECUTED 43358: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
"-------------------------------------------------------------------------------\n",
_Watchdog_Ticks_since_boot - CPU_usage_Ticks_at_last_reset,
total_units
);
#endif
}
4335c: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED 43362: 4e5e unlk %fp <== NOT EXECUTED 43364: 4e75 rts <== NOT EXECUTED
* since the last context switch.
*/
ran = the_thread->cpu_time_used;
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
Timestamp_Control used;
_Timestamp_Subtract(
43366: 486e ffd8 pea %fp@(-40) <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
4336a: 2e3c 0000 03e8 movel #1000,%d7 <== NOT EXECUTED
* since the last context switch.
*/
ran = the_thread->cpu_time_used;
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
Timestamp_Control used;
_Timestamp_Subtract(
43370: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 43374: 4879 0006 a32a pea 6a32a <_Thread_Time_of_last_context_switch><== NOT EXECUTED 4337a: 4eb9 0004 b224 jsr 4b224 <_Timespec_Subtract> <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &used
);
_Timestamp_Add_to( &ran, &used );
43380: 486e ffd8 pea %fp@(-40) <== NOT EXECUTED 43384: 2f05 movel %d5,%sp@- <== NOT EXECUTED 43386: 4eb9 0004 b0f8 jsr 4b0f8 <_Timespec_Add_to> <== NOT EXECUTED 4338c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
43390: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 43394: 486e fffc pea %fp@(-4) <== NOT EXECUTED 43398: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4339a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4339c: 4e95 jsr %a5@ <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
4339e: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 433a2: 202e ffe4 movel %fp@(-28),%d0 <== NOT EXECUTED 433a6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 433aa: 4c47 0000 remul %d7,%d0,%d0 <== NOT EXECUTED 433ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED 433b0: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED 433b4: 4879 0005 f4cb pea 5f4cb <IntUartPollCallbacks.6307+0x1a5> <== NOT EXECUTED 433ba: 2f03 movel %d3,%sp@- <== NOT EXECUTED 433bc: 4e94 jsr %a4@ <== NOT EXECUTED 433be: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED 433c2: 6000 ff5c braw 43320 <rtems_cpu_usage_report_with_plugin+0x110><== NOT EXECUTED
000433f4 <rtems_cpu_usage_reset>:
/*
* rtems_cpu_usage_reset
*/
void rtems_cpu_usage_reset( void )
{
433f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &CPU_usage_Uptime_at_last_reset );
433f8: 4879 0006 a754 pea 6a754 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED 433fe: 4eb9 0004 8c94 jsr 48c94 <_TOD_Get_uptime> <== NOT EXECUTED
_Thread_Time_of_last_context_switch = CPU_usage_Uptime_at_last_reset;
#else
CPU_usage_Ticks_at_last_reset = _Watchdog_Ticks_since_boot;
#endif
rtems_iterate_over_all_threads(CPU_usage_Per_thread_handler);
43404: 487a ffda pea %pc@(433e0 <CPU_usage_Per_thread_handler>)<== NOT EXECUTED
*/
void rtems_cpu_usage_reset( void )
{
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &CPU_usage_Uptime_at_last_reset );
_Thread_Time_of_last_context_switch = CPU_usage_Uptime_at_last_reset;
43408: 2039 0006 a754 movel 6a754 <CPU_usage_Uptime_at_last_reset>,%d0<== NOT EXECUTED 4340e: 2239 0006 a758 movel 6a758 <CPU_usage_Uptime_at_last_reset+0x4>,%d1<== NOT EXECUTED 43414: 23c0 0006 a32a movel %d0,6a32a <_Thread_Time_of_last_context_switch><== NOT EXECUTED 4341a: 23c1 0006 a32e movel %d1,6a32e <_Thread_Time_of_last_context_switch+0x4><== NOT EXECUTED
#else
CPU_usage_Ticks_at_last_reset = _Watchdog_Ticks_since_boot;
#endif
rtems_iterate_over_all_threads(CPU_usage_Per_thread_handler);
43420: 4eb9 0004 92e8 jsr 492e8 <rtems_iterate_over_all_threads> <== NOT EXECUTED 43426: 508f addql #8,%sp <== NOT EXECUTED
}
43428: 4e5e unlk %fp <== NOT EXECUTED
0004c3d0 <rtems_debug_disable>:
* rtems_debug_disable
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
4c3d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level &= ~to_be_disabled;
4c3d4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c3d8: 4680 notl %d0 <== NOT EXECUTED
}
4c3da: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
_Debug_Level &= ~to_be_disabled;
4c3dc: c1b9 0005 fd36 andl %d0,5fd36 <_Debug_Level> <== NOT EXECUTED
}
0004c3be <rtems_debug_enable>:
* rtems_debug_enable
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
4c3be: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level |= to_be_enabled;
4c3c2: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4c3c6: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
_Debug_Level |= to_be_enabled;
4c3c8: 81b9 0005 fd36 orl %d0,5fd36 <_Debug_Level> <== NOT EXECUTED
}
0004c3e4 <rtems_debug_is_enabled>:
* rtems_debug_is_enabled
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
4c3e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (_Debug_Level & level) ? true : false;
4c3e8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4c3ec: 4e5e unlk %fp <== NOT EXECUTED
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
return (_Debug_Level & level) ? true : false;
4c3ee: c0b9 0005 fd36 andl 5fd36 <_Debug_Level>,%d0 <== NOT EXECUTED 4c3f4: 56c0 sne %d0 <== NOT EXECUTED
}
4c3f6: 4480 negl %d0 <== NOT EXECUTED
...
0004e828 <rtems_deviceio_errno>:
[RTEMS_IO_ERROR] = EIO,
[RTEMS_PROXY_BLOCKING] = EIO
};
int rtems_deviceio_errno(rtems_status_code sc)
{
4e828: 4e56 0000 linkw %fp,#0 4e82c: 202e 0008 movel %fp@(8),%d0 4e830: 2f02 movel %d2,%sp@-
if (sc == RTEMS_SUCCESSFUL) {
4e832: 4a80 tstl %d0
4e834: 660a bnes 4e840 <rtems_deviceio_errno+0x18> <== NEVER TAKEN
errno = eno;
return -1;
}
}
4e836: 242e fffc movel %fp@(-4),%d2
};
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
4e83a: 4280 clrl %d0
errno = eno;
return -1;
}
}
4e83c: 4e5e unlk %fp 4e83e: 4e75 rts
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
4e840: 721c moveq #28,%d1 <== NOT EXECUTED 4e842: b280 cmpl %d0,%d1 <== NOT EXECUTED 4e844: 651e bcss 4e864 <rtems_deviceio_errno+0x3c> <== NOT EXECUTED
eno = status_code_to_errno [sc];
4e846: 41f9 0005 d9b8 lea 5d9b8 <status_code_to_errno>,%a0 <== NOT EXECUTED 4e84c: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2 <== NOT EXECUTED
}
errno = eno;
4e850: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4e856: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4e858: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e85a: 2082 movel %d2,%a0@ <== NOT EXECUTED
return -1;
}
}
4e85c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4e860: 4e5e unlk %fp <== NOT EXECUTED 4e862: 4e75 rts <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e864: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
4e86a: 7416 moveq #22,%d2 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e86c: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4e86e: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e870: 2082 movel %d2,%a0@ <== NOT EXECUTED 4e872: 60e8 bras 4e85c <rtems_deviceio_errno+0x34> <== NOT EXECUTED
00042afe <rtems_error>:
int rtems_error(
rtems_error_code_t error_flag,
const char *printf_format,
...
)
{
42afe: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42b02: 2f02 movel %d2,%sp@- <== NOT EXECUTED
va_list arglist;
int chars_written;
va_start(arglist, printf_format);
chars_written = rtems_verror(error_flag, printf_format, arglist);
42b04: 486e 0010 pea %fp@(16) <== NOT EXECUTED 42b08: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
int rtems_error(
rtems_error_code_t error_flag,
const char *printf_format,
...
)
{
42b0c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
va_list arglist;
int chars_written;
va_start(arglist, printf_format);
chars_written = rtems_verror(error_flag, printf_format, arglist);
42b10: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42b12: 4eba fe40 jsr %pc@(42954 <rtems_verror>) <== NOT EXECUTED
va_end(arglist);
if (error_flag & RTEMS_ERROR_PANIC) {
42b16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 42b1a: 0802 001d btst #29,%d2 <== NOT EXECUTED 42b1e: 660e bnes 42b2e <rtems_error+0x30> <== NOT EXECUTED
rtems_error(0, "fatal error, exiting");
_exit(errno);
}
if (error_flag & RTEMS_ERROR_ABORT) {
42b20: 0802 001c btst #28,%d2 <== NOT EXECUTED 42b24: 6626 bnes 42b4c <rtems_error+0x4e> <== NOT EXECUTED
rtems_error(0, "fatal error, aborting");
abort();
}
return chars_written;
}
42b26: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 42b2a: 4e5e unlk %fp <== NOT EXECUTED 42b2c: 4e75 rts <== NOT EXECUTED
va_start(arglist, printf_format);
chars_written = rtems_verror(error_flag, printf_format, arglist);
va_end(arglist);
if (error_flag & RTEMS_ERROR_PANIC) {
rtems_error(0, "fatal error, exiting");
42b2e: 4879 0005 cf36 pea 5cf36 <IMFS_ops+0x7e> <== NOT EXECUTED 42b34: 42a7 clrl %sp@- <== NOT EXECUTED 42b36: 4eb9 0004 2afe jsr 42afe <rtems_error> <== NOT EXECUTED
_exit(errno);
42b3c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 42b42: 2040 moveal %d0,%a0 <== NOT EXECUTED 42b44: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 42b46: 4eb9 0004 35fe jsr 435fe <_exit> <== NOT EXECUTED
}
if (error_flag & RTEMS_ERROR_ABORT) {
rtems_error(0, "fatal error, aborting");
42b4c: 4879 0005 cf4b pea 5cf4b <IMFS_ops+0x93> <== NOT EXECUTED 42b52: 42a7 clrl %sp@- <== NOT EXECUTED 42b54: 4eb9 0004 2afe jsr 42afe <rtems_error> <== NOT EXECUTED
abort();
42b5a: 4eb9 0004 e8dc jsr 4e8dc <abort> <== NOT EXECUTED
00045dc0 <rtems_event_receive>:
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45dc0: 4e56 0000 linkw %fp,#0 45dc4: 202e 0008 movel %fp@(8),%d0 45dc8: 206e 0014 moveal %fp@(20),%a0
RTEMS_API_Control *api;
if ( !event_out )
45dcc: 4a88 tstl %a0
45dce: 674c beqs 45e1c <rtems_event_receive+0x5c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
45dd0: 2279 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a1 45dd6: 2269 010a moveal %a1@(266),%a1
if ( _Event_sets_Is_empty( event_in ) ) {
45dda: 4a80 tstl %d0
45ddc: 6606 bnes 45de4 <rtems_event_receive+0x24> <== ALWAYS TAKEN
*event_out = api->pending_events;
45dde: 2091 movel %a1@,%a0@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
_Thread_Enable_dispatch();
return( _Thread_Executing->Wait.return_code );
}
45de0: 4e5e unlk %fp <== NOT EXECUTED 45de2: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45de4: 2239 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d1 45dea: 5281 addql #1,%d1 45dec: 23c1 0005 fc8c movel %d1,5fc8c <_Thread_Dispatch_disable_level>
*event_out = api->pending_events;
return RTEMS_SUCCESSFUL;
}
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
45df2: 2f08 movel %a0,%sp@- 45df4: 2f2e 0010 movel %fp@(16),%sp@- 45df8: 2f2e 000c movel %fp@(12),%sp@- 45dfc: 2f00 movel %d0,%sp@- 45dfe: 4eb9 0004 5e24 jsr 45e24 <_Event_Seize>
_Thread_Enable_dispatch();
45e04: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
return( _Thread_Executing->Wait.return_code );
45e0a: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 45e10: 4fef 0010 lea %sp@(16),%sp
}
45e14: 4e5e unlk %fp
}
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
_Thread_Enable_dispatch();
return( _Thread_Executing->Wait.return_code );
45e16: 2028 0034 movel %a0@(52),%d0
}
45e1a: 4e75 rts
)
{
RTEMS_API_Control *api;
if ( !event_out )
return RTEMS_INVALID_ADDRESS;
45e1c: 7009 moveq #9,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
_Thread_Enable_dispatch();
return( _Thread_Executing->Wait.return_code );
}
45e1e: 4e5e unlk %fp <== NOT EXECUTED
...
00045f68 <rtems_event_send>:
rtems_status_code rtems_event_send(
rtems_id id,
rtems_event_set event_in
)
{
45f68: 4e56 fffc linkw %fp,#-4 45f6c: 2f02 movel %d2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
the_thread = _Thread_Get( id, &location );
45f6e: 486e fffc pea %fp@(-4) 45f72: 2f2e 0008 movel %fp@(8),%sp@- 45f76: 4eb9 0004 870c jsr 4870c <_Thread_Get>
switch ( location ) {
45f7c: 508f addql #8,%sp 45f7e: 4aae fffc tstl %fp@(-4)
45f82: 6634 bnes 45fb8 <rtems_event_send+0x50> <== NEVER TAKEN
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
45f84: 2240 moveal %d0,%a1
rtems_event_set *the_event_set
)
{
ISR_Level level;
_ISR_Disable( level );
45f86: 223c 0000 0700 movel #1792,%d1 45f8c: 2069 010a moveal %a1@(266),%a0 45f90: 40c2 movew %sr,%d2 45f92: 8282 orl %d2,%d1 45f94: 46c1 movew %d1,%sr
*the_event_set |= the_new_events;
45f96: 222e 000c movel %fp@(12),%d1 45f9a: 8390 orl %d1,%a0@
_ISR_Enable( level );
45f9c: 46c2 movew %d2,%sr
_Event_sets_Post( event_in, &api->pending_events );
_Event_Surrender( the_thread );
45f9e: 2f00 movel %d0,%sp@- 45fa0: 4eb9 0004 5fc4 jsr 45fc4 <_Event_Surrender>
_Thread_Enable_dispatch();
45fa6: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45fac: 242e fff8 movel %fp@(-8),%d2
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
_Event_sets_Post( event_in, &api->pending_events );
_Event_Surrender( the_thread );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
45fb0: 588f addql #4,%sp 45fb2: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45fb4: 4e5e unlk %fp 45fb6: 4e75 rts
45fb8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45fbc: 7004 moveq #4,%d0 <== NOT EXECUTED
}
45fbe: 4e5e unlk %fp <== NOT EXECUTED
...
0004836c <rtems_extension_create>:
rtems_status_code rtems_extension_create(
rtems_name name,
const rtems_extensions_table *extension_table,
rtems_id *id
)
{
4836c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 48370: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 48374: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 48378: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
Extension_Control *the_extension;
if ( !id )
4837c: 4a8a tstl %a2 <== NOT EXECUTED 4837e: 6700 00a0 beqw 48420 <rtems_extension_create+0xb4> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
48382: 4a82 tstl %d2 <== NOT EXECUTED 48384: 660c bnes 48392 <rtems_extension_create+0x26> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
48386: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48388: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4838e: 4e5e unlk %fp <== NOT EXECUTED 48390: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
48392: 2039 0006 a27c movel 6a27c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48398: 5280 addql #1,%d0 <== NOT EXECUTED 4839a: 23c0 0006 a27c movel %d0,6a27c <_Thread_Dispatch_disable_level><== NOT EXECUTED
#ifndef __EXTENSION_MANAGER_inl
#define __EXTENSION_MANAGER_inl
RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Allocate( void )
{
return (Extension_Control *) _Objects_Allocate( &_Extension_Information );
483a0: 4879 0006 a40a pea 6a40a <_Extension_Information> <== NOT EXECUTED 483a6: 4eb9 0004 9340 jsr 49340 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
483ac: 588f addql #4,%sp <== NOT EXECUTED 483ae: 2640 moveal %d0,%a3 <== NOT EXECUTED 483b0: 4a80 tstl %d0 <== NOT EXECUTED 483b2: 675a beqs 4840e <rtems_extension_create+0xa2> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
User_extensions_Control *extension,
const User_extensions_Table *extension_table
)
{
extension->Callouts = *extension_table;
483b4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 483b8: 2758 0024 movel %a0@+,%a3@(36) <== NOT EXECUTED 483bc: 2758 0028 movel %a0@+,%a3@(40) <== NOT EXECUTED 483c0: 2758 002c movel %a0@+,%a3@(44) <== NOT EXECUTED 483c4: 2758 0030 movel %a0@+,%a3@(48) <== NOT EXECUTED 483c8: 2758 0034 movel %a0@+,%a3@(52) <== NOT EXECUTED 483cc: 2758 0038 movel %a0@+,%a3@(56) <== NOT EXECUTED 483d0: 2758 003c movel %a0@+,%a3@(60) <== NOT EXECUTED 483d4: 2750 0040 movel %a0@,%a3@(64) <== NOT EXECUTED
_User_extensions_Add_set( extension );
483d8: 486b 0010 pea %a3@(16) <== NOT EXECUTED 483dc: 4eb9 0004 b274 jsr 4b274 <_User_extensions_Add_set> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
483e2: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483e6: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483e8: 2079 0006 a422 moveal 6a422 <_Extension_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483ee: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483f0: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
483f4: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Extension_Information,
&the_extension->Object,
(Objects_Name) name
);
*id = the_extension->Object.id;
483f8: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
483fa: 4eb9 0004 a192 jsr 4a192 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48400: 588f addql #4,%sp <== NOT EXECUTED 48402: 4280 clrl %d0 <== NOT EXECUTED
}
48404: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4840a: 4e5e unlk %fp <== NOT EXECUTED 4840c: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
_Thread_Enable_dispatch();
4840e: 4eb9 0004 a192 jsr 4a192 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
48414: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48416: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4841c: 4e5e unlk %fp <== NOT EXECUTED 4841e: 4e75 rts <== NOT EXECUTED
)
{
Extension_Control *the_extension;
if ( !id )
return RTEMS_INVALID_ADDRESS;
48420: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48422: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 48428: 4e5e unlk %fp <== NOT EXECUTED
00048214 <rtems_extension_delete>:
#include <rtems/extension.h>
rtems_status_code rtems_extension_delete(
rtems_id id
)
{
48214: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48218: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Extension_Control *)
_Objects_Get( &_Extension_Information, id, location );
4821a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4821e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48222: 4879 0006 9d5a pea 69d5a <_Extension_Information> <== NOT EXECUTED 48228: 4eb9 0004 9560 jsr 49560 <_Objects_Get> <== NOT EXECUTED
Extension_Control *the_extension;
Objects_Locations location;
the_extension = _Extension_Get( id, &location );
switch ( location ) {
4822e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48232: 2440 moveal %d0,%a2 <== NOT EXECUTED 48234: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48238: 663a bnes 48274 <rtems_extension_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_User_extensions_Remove_set( &the_extension->Extension );
4823a: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4823e: 4eb9 0004 aef4 jsr 4aef4 <_User_extensions_Remove_set> <== NOT EXECUTED
_Objects_Close( &_Extension_Information, &the_extension->Object );
48244: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48246: 4879 0006 9d5a pea 69d5a <_Extension_Information> <== NOT EXECUTED 4824c: 4eb9 0004 9130 jsr 49130 <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Extension_Free (
Extension_Control *the_extension
)
{
_Objects_Free( &_Extension_Information, &the_extension->Object );
48252: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48254: 4879 0006 9d5a pea 69d5a <_Extension_Information> <== NOT EXECUTED 4825a: 4eb9 0004 93f4 jsr 493f4 <_Objects_Free> <== NOT EXECUTED
_Extension_Free( the_extension );
_Thread_Enable_dispatch();
48260: 4eb9 0004 9dee jsr 49dee <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48266: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
_User_extensions_Remove_set( &the_extension->Extension );
_Objects_Close( &_Extension_Information, &the_extension->Object );
_Extension_Free( the_extension );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4826a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4826e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48270: 4e5e unlk %fp <== NOT EXECUTED 48272: 4e75 rts <== NOT EXECUTED 48274: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48278: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4827a: 4e5e unlk %fp <== NOT EXECUTED
...
00049310 <rtems_extension_ident>:
rtems_status_code rtems_extension_ident(
rtems_name name,
rtems_id *id
)
{
49310: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
49314: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49318: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4931e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49322: 4879 0006 35ba pea 635ba <_Extension_Information> <== NOT EXECUTED 49328: 4eb9 0004 a734 jsr 4a734 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
4932e: 41f9 0006 0a22 lea 60a22 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
49334: 4e5e unlk %fp <== NOT EXECUTED 49336: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00042c50 <rtems_filesystem_dirname>:
int rtems_filesystem_dirname(
const char *pathname
)
{
42c50: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 42c54: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 42c58: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int len = strlen( pathname );
42c5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42c5e: 4eb9 0004 fd64 jsr 4fd64 <strlen> <== NOT EXECUTED 42c64: 588f addql #4,%sp <== NOT EXECUTED 42c66: 2400 movel %d0,%d2 <== NOT EXECUTED
while ( len ) {
42c68: 671c beqs 42c86 <rtems_filesystem_dirname+0x36> <== NOT EXECUTED
flags,
pathloc,
follow_link );
}
int rtems_filesystem_dirname(
42c6a: d5c0 addal %d0,%a2 <== NOT EXECUTED 42c6c: 47f9 0004 3c28 lea 43c28 <rtems_filesystem_is_separator>,%a3<== NOT EXECUTED
)
{
int len = strlen( pathname );
while ( len ) {
len--;
42c72: 5382 subql #1,%d2 <== NOT EXECUTED
if ( rtems_filesystem_is_separator( pathname[len] ) )
42c74: 1022 moveb %a2@-,%d0 <== NOT EXECUTED 42c76: 49c0 extbl %d0 <== NOT EXECUTED 42c78: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42c7a: 4e93 jsr %a3@ <== NOT EXECUTED 42c7c: 588f addql #4,%sp <== NOT EXECUTED 42c7e: 4a80 tstl %d0 <== NOT EXECUTED 42c80: 6604 bnes 42c86 <rtems_filesystem_dirname+0x36> <== NOT EXECUTED
const char *pathname
)
{
int len = strlen( pathname );
while ( len ) {
42c82: 4a82 tstl %d2 <== NOT EXECUTED 42c84: 66ec bnes 42c72 <rtems_filesystem_dirname+0x22> <== NOT EXECUTED
if ( rtems_filesystem_is_separator( pathname[len] ) )
break;
}
return len;
}
42c86: 2002 movel %d2,%d0 <== NOT EXECUTED 42c88: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 42c8e: 4e5e unlk %fp <== NOT EXECUTED
00042b94 <rtems_filesystem_evaluate_relative_path>:
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc,
int follow_link
)
{
42b94: 4e56 fff0 linkw %fp,#-16 42b98: 48d7 041c moveml %d2-%d4/%a2,%sp@ 42b9c: 246e 0014 moveal %fp@(20),%a2
if ( !pathloc )
rtems_set_errno_and_return_minus_one( EIO );
#endif
result = (*pathloc->ops->evalpath_h)( pathname, pathnamelen, flags, pathloc );
42ba0: 2f0a movel %a2,%sp@- 42ba2: 206a 000c moveal %a2@(12),%a0
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc,
int follow_link
)
{
42ba6: 262e 0010 movel %fp@(16),%d3
if ( !pathloc )
rtems_set_errno_and_return_minus_one( EIO );
#endif
result = (*pathloc->ops->evalpath_h)( pathname, pathnamelen, flags, pathloc );
42baa: 2f03 movel %d3,%sp@- 42bac: 2f2e 000c movel %fp@(12),%sp@- 42bb0: 2f2e 0008 movel %fp@(8),%sp@-
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc,
int follow_link
)
{
42bb4: 282e 0018 movel %fp@(24),%d4
if ( !pathloc )
rtems_set_errno_and_return_minus_one( EIO );
#endif
result = (*pathloc->ops->evalpath_h)( pathname, pathnamelen, flags, pathloc );
42bb8: 2050 moveal %a0@,%a0 42bba: 4e90 jsr %a0@
/*
* Get the Node type and determine if you need to follow the link or
* not.
*/
if ( (result == 0) && follow_link ) {
42bbc: 4fef 0010 lea %sp@(16),%sp
if ( !pathloc )
rtems_set_errno_and_return_minus_one( EIO );
#endif
result = (*pathloc->ops->evalpath_h)( pathname, pathnamelen, flags, pathloc );
42bc0: 2400 movel %d0,%d2
/*
* Get the Node type and determine if you need to follow the link or
* not.
*/
if ( (result == 0) && follow_link ) {
42bc2: 6604 bnes 42bc8 <rtems_filesystem_evaluate_relative_path+0x34>
42bc4: 4a84 tstl %d4
42bc6: 660c bnes 42bd4 <rtems_filesystem_evaluate_relative_path+0x40>
result = (*pathloc->ops->eval_link_h)( pathloc, flags );
}
}
return result;
}
42bc8: 2002 movel %d2,%d0 42bca: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 42bd0: 4e5e unlk %fp 42bd2: 4e75 rts
* not.
*/
if ( (result == 0) && follow_link ) {
type = (*pathloc->ops->node_type_h)( pathloc );
42bd4: 206a 000c moveal %a2@(12),%a0 42bd8: 2f0a movel %a2,%sp@- 42bda: 2068 0010 moveal %a0@(16),%a0 42bde: 4e90 jsr %a0@
if ( ( type == RTEMS_FILESYSTEM_HARD_LINK ) ||
42be0: 588f addql #4,%sp 42be2: 7201 moveq #1,%d1 42be4: 5780 subql #3,%d0 42be6: b280 cmpl %d0,%d1
42be8: 65de bcss 42bc8 <rtems_filesystem_evaluate_relative_path+0x34><== ALWAYS TAKEN
* pathloc will be passed up (and eventually released).
* Hence, the (valid) originial node that we submit to
* eval_link_h() should be released by the handler.
*/
result = (*pathloc->ops->eval_link_h)( pathloc, flags );
42bea: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED 42bee: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 42bf2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 42bf6: 2268 0034 moveal %a0@(52),%a1 <== NOT EXECUTED
}
}
return result;
}
42bfa: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 42c00: 4e5e unlk %fp <== NOT EXECUTED
* pathloc will be passed up (and eventually released).
* Hence, the (valid) originial node that we submit to
* eval_link_h() should be released by the handler.
*/
result = (*pathloc->ops->eval_link_h)( pathloc, flags );
42c02: 4ed1 jmp %a1@ <== NOT EXECUTED
0004b448 <rtems_filesystem_get_mount_handler>:
rtems_filesystem_fsmount_me_t
rtems_filesystem_get_mount_handler(
const char *type
)
{
4b448: 4e56 fff8 linkw %fp,#-8 4b44c: 202e 0008 movel %fp@(8),%d0
find_arg fa = {
4b450: 42ae fffc clrl %fp@(-4) 4b454: 2d40 fff8 movel %d0,%fp@(-8)
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4b458: 6718 beqs 4b472 <rtems_filesystem_get_mount_handler+0x2a><== NEVER TAKEN
rtems_filesystem_iterate( find_handler, &fa );
4b45a: 486e fff8 pea %fp@(-8) 4b45e: 487a fefc pea %pc@(4b35c <find_handler>) 4b462: 4eb9 0004 b39e jsr 4b39e <rtems_filesystem_iterate> 4b468: 202e fffc movel %fp@(-4),%d0 4b46c: 508f addql #8,%sp
}
return fa.mount_h;
}
4b46e: 4e5e unlk %fp 4b470: 4e75 rts
find_arg fa = {
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4b472: 4280 clrl %d0 <== NOT EXECUTED
rtems_filesystem_iterate( find_handler, &fa );
}
return fa.mount_h;
}
4b474: 4e5e unlk %fp <== NOT EXECUTED
00043bb4 <rtems_filesystem_get_start_loc>:
#include "rtems/libio_.h"
void rtems_filesystem_get_start_loc(const char *path,
int *index,
rtems_filesystem_location_info_t *loc)
{
43bb4: 4e56 0000 linkw %fp,#0 43bb8: 206e 0008 moveal %fp@(8),%a0 43bbc: 2f0a movel %a2,%sp@- 43bbe: 246e 000c moveal %fp@(12),%a2 43bc2: 2f02 movel %d2,%sp@- 43bc4: 242e 0010 movel %fp@(16),%d2
if (rtems_filesystem_is_separator(path[0])) {
43bc8: 1010 moveb %a0@,%d0 43bca: 49c0 extbl %d0 43bcc: 2f00 movel %d0,%sp@- 43bce: 4eb9 0004 3c28 jsr 43c28 <rtems_filesystem_is_separator> 43bd4: 588f addql #4,%sp 43bd6: 4a80 tstl %d0
43bd8: 6622 bnes 43bfc <rtems_filesystem_get_start_loc+0x48><== ALWAYS TAKEN
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*loc = rtems_filesystem_current;
43bda: 2279 0005 e54c moveal 5e54c <rtems_current_user_env>,%a1 <== NOT EXECUTED 43be0: 2042 moveal %d2,%a0 <== NOT EXECUTED 43be2: 5889 addql #4,%a1 <== NOT EXECUTED 43be4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 43be6: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 43be8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 43bea: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 43bec: 2091 movel %a1@,%a0@ <== NOT EXECUTED
*index = 0;
}
}
43bee: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*loc = rtems_filesystem_current;
*index = 0;
43bf2: 4292 clrl %a2@ <== NOT EXECUTED
} }
43bf4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 43bf8: 4e5e unlk %fp <== NOT EXECUTED 43bfa: 4e75 rts <== NOT EXECUTED
void rtems_filesystem_get_start_loc(const char *path,
int *index,
rtems_filesystem_location_info_t *loc)
{
if (rtems_filesystem_is_separator(path[0])) {
*loc = rtems_filesystem_root;
43bfc: 2279 0005 e54c moveal 5e54c <rtems_current_user_env>,%a1 43c02: 2042 moveal %d2,%a0
*index = 1;
43c04: 7001 moveq #1,%d0
void rtems_filesystem_get_start_loc(const char *path,
int *index,
rtems_filesystem_location_info_t *loc)
{
if (rtems_filesystem_is_separator(path[0])) {
*loc = rtems_filesystem_root;
43c06: 20e9 0018 movel %a1@(24),%a0@+ 43c0a: 20e9 001c movel %a1@(28),%a0@+ 43c0e: 20e9 0020 movel %a1@(32),%a0@+ 43c12: 20e9 0024 movel %a1@(36),%a0@+ 43c16: 20a9 0028 movel %a1@(40),%a0@
}
else {
*loc = rtems_filesystem_current;
*index = 0;
}
}
43c1a: 242e fff8 movel %fp@(-8),%d2
int *index,
rtems_filesystem_location_info_t *loc)
{
if (rtems_filesystem_is_separator(path[0])) {
*loc = rtems_filesystem_root;
*index = 1;
43c1e: 2480 movel %d0,%a2@
}
else {
*loc = rtems_filesystem_current;
*index = 0;
}
}
43c20: 246e fffc moveal %fp@(-4),%a2
43c24: 4e5e unlk %fp <== NOT EXECUTED
0004b610 <rtems_filesystem_get_sym_start_loc>:
#include "rtems/libio_.h"
void rtems_filesystem_get_sym_start_loc(const char *path,
int *index,
rtems_filesystem_location_info_t *loc)
{
4b610: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b614: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b618: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b61a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (rtems_filesystem_is_separator(path[0])) {
4b61e: 1010 moveb %a0@,%d0 <== NOT EXECUTED 4b620: 49c0 extbl %d0 <== NOT EXECUTED 4b622: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b624: 4eb9 0004 3c28 jsr 43c28 <rtems_filesystem_is_separator> <== NOT EXECUTED 4b62a: 588f addql #4,%sp <== NOT EXECUTED 4b62c: 4a80 tstl %d0 <== NOT EXECUTED 4b62e: 660a bnes 4b63a <rtems_filesystem_get_sym_start_loc+0x2a><== NOT EXECUTED
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*index = 0;
4b630: 4292 clrl %a2@ <== NOT EXECUTED
}
}
4b632: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b636: 4e5e unlk %fp <== NOT EXECUTED 4b638: 4e75 rts <== NOT EXECUTED
void rtems_filesystem_get_sym_start_loc(const char *path,
int *index,
rtems_filesystem_location_info_t *loc)
{
if (rtems_filesystem_is_separator(path[0])) {
*loc = rtems_filesystem_root;
4b63a: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
*index = 1;
4b63e: 7001 moveq #1,%d0 <== NOT EXECUTED
void rtems_filesystem_get_sym_start_loc(const char *path,
int *index,
rtems_filesystem_location_info_t *loc)
{
if (rtems_filesystem_is_separator(path[0])) {
*loc = rtems_filesystem_root;
4b640: 2279 0005 e54c moveal 5e54c <rtems_current_user_env>,%a1 <== NOT EXECUTED 4b646: 20e9 0018 movel %a1@(24),%a0@+ <== NOT EXECUTED 4b64a: 20e9 001c movel %a1@(28),%a0@+ <== NOT EXECUTED 4b64e: 20e9 0020 movel %a1@(32),%a0@+ <== NOT EXECUTED 4b652: 20e9 0024 movel %a1@(36),%a0@+ <== NOT EXECUTED 4b656: 20a9 0028 movel %a1@(40),%a0@ <== NOT EXECUTED
*index = 1;
4b65a: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
else {
*index = 0;
}
}
4b65c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b660: 4e5e unlk %fp <== NOT EXECUTED
000427ec <rtems_filesystem_initialize>:
/*
* Set the default umask to "022".
*/
rtems_filesystem_umask = 022;
427ec: 7012 moveq #18,%d0
* configuration is a single instantiation of the IMFS or miniIMFS with
* a single "/dev" directory in it.
*/
void rtems_filesystem_initialize( void )
{
427ee: 4e56 ffe0 linkw %fp,#-32
/*
* Set the default umask to "022".
*/
rtems_filesystem_umask = 022;
427f2: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0
* configuration is a single instantiation of the IMFS or miniIMFS with
* a single "/dev" directory in it.
*/
void rtems_filesystem_initialize( void )
{
427f8: 48d7 1c00 moveml %a2-%a4,%sp@
/*
* Set the default umask to "022".
*/
rtems_filesystem_umask = 022;
427fc: 2140 002c movel %d0,%a0@(44)
/*
* mount the first filesystem.
*/
if ( rtems_filesystem_mount_table_size == 0 )
42800: 4ab9 0005 cb4e tstl 5cb4e <rtems_filesystem_mount_table_size> 42806: 6700 00c2 beqw 428ca <rtems_filesystem_initialize+0xde>
rtems_fatal_error_occurred( 0xABCD0001 );
mt = &rtems_filesystem_mount_table[0];
4280a: 2079 0005 e33c moveal 5e33c <rtems_filesystem_mount_table>,%a0
status = mount( mt->device, mt->mount_point, mt->type, mt->fsoptions, NULL );
42810: 42a7 clrl %sp@- 42812: 2f28 0004 movel %a0@(4),%sp@- 42816: 2f10 movel %a0@,%sp@- 42818: 2f28 000c movel %a0@(12),%sp@- 4281c: 2f28 0008 movel %a0@(8),%sp@- 42820: 4eb9 0004 325c jsr 4325c <mount>
if ( status == -1 )
42826: 4fef 0014 lea %sp@(20),%sp 4282a: 72ff moveq #-1,%d1 4282c: b280 cmpl %d0,%d1 4282e: 6700 00b2 beqw 428e2 <rtems_filesystem_initialize+0xf6>
rtems_fatal_error_occurred( 0xABCD0002 );
rtems_filesystem_link_counts = 0;
42832: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0
* gonna hit performance.
*
* Till Straumann, 10/25/2002
*/
/* Clone the root pathloc */
rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);
42838: 45ee ffec lea %fp@(-20),%a2 4283c: 49f9 0004 2c04 lea 42c04 <rtems_filesystem_evaluate_path>,%a4
rtems_filesystem_root = loc;
42842: 264e moveal %fp,%a3
status = mount( mt->device, mt->mount_point, mt->type, mt->fsoptions, NULL );
if ( status == -1 )
rtems_fatal_error_occurred( 0xABCD0002 );
rtems_filesystem_link_counts = 0;
42844: 4240 clrw %d0 42846: 3140 0030 movew %d0,%a0@(48)
* gonna hit performance.
*
* Till Straumann, 10/25/2002
*/
/* Clone the root pathloc */
rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);
4284a: 42a7 clrl %sp@- 4284c: 2f0a movel %a2,%sp@- 4284e: 42a7 clrl %sp@- 42850: 4878 0001 pea 1 <ADD> 42854: 4879 0005 cf00 pea 5cf00 <IMFS_ops+0x48> 4285a: 4e94 jsr %a4@
rtems_filesystem_root = loc;
4285c: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0 42862: 2163 0028 movel %a3@-,%a0@(40) 42866: 216e fff8 0024 movel %fp@(-8),%a0@(36) 4286c: 2152 0018 movel %a2@,%a0@(24) 42870: 216e fff0 001c movel %fp@(-16),%a0@(28) 42876: 216e fff4 0020 movel %fp@(-12),%a0@(32)
/* One more clone for the current node */
rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);
4287c: 42a7 clrl %sp@- 4287e: 2f0a movel %a2,%sp@- 42880: 42a7 clrl %sp@- 42882: 4878 0001 pea 1 <ADD> 42886: 4879 0005 cf00 pea 5cf00 <IMFS_ops+0x48> 4288c: 4e94 jsr %a4@
rtems_filesystem_current = loc;
4288e: 2079 0005 e54c moveal 5e54c <rtems_current_user_env>,%a0 42894: 5888 addql #4,%a0
*
* NOTE: UNIX root is 755 and owned by root/root (0/0). It is actually
* created that way by the IMFS.
*/
status = mkdir( "/dev", 0777);
42896: 4fef 0028 lea %sp@(40),%sp
/* Clone the root pathloc */
rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);
rtems_filesystem_root = loc;
/* One more clone for the current node */
rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);
rtems_filesystem_current = loc;
4289a: 20d2 movel %a2@,%a0@+ 4289c: 20ee fff0 movel %fp@(-16),%a0@+ 428a0: 20ee fff4 movel %fp@(-12),%a0@+ 428a4: 20ee fff8 movel %fp@(-8),%a0@+ 428a8: 2093 movel %a3@,%a0@
*
* NOTE: UNIX root is 755 and owned by root/root (0/0). It is actually
* created that way by the IMFS.
*/
status = mkdir( "/dev", 0777);
428aa: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> 428ae: 4879 0005 cf02 pea 5cf02 <IMFS_ops+0x4a> 428b4: 4eb9 0004 30fc jsr 430fc <mkdir>
if ( status != 0 )
428ba: 508f addql #8,%sp 428bc: 4a80 tstl %d0
428be: 6616 bnes 428d6 <rtems_filesystem_initialize+0xea><== 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. */ }
428c0: 4cee 1c00 ffe0 moveml %fp@(-32),%a2-%a4 428c6: 4e5e unlk %fp 428c8: 4e75 rts
/*
* mount the first filesystem.
*/
if ( rtems_filesystem_mount_table_size == 0 )
rtems_fatal_error_occurred( 0xABCD0001 );
428ca: 2f3c abcd 0001 movel #-1412628479,%sp@- <== NOT EXECUTED 428d0: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred> <== NOT EXECUTED
* created that way by the IMFS.
*/
status = mkdir( "/dev", 0777);
if ( status != 0 )
rtems_fatal_error_occurred( 0xABCD0003 );
428d6: 2f3c abcd 0003 movel #-1412628477,%sp@- <== NOT EXECUTED 428dc: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred> <== NOT EXECUTED
mt = &rtems_filesystem_mount_table[0];
status = mount( mt->device, mt->mount_point, mt->type, mt->fsoptions, NULL );
if ( status == -1 )
rtems_fatal_error_occurred( 0xABCD0002 );
428e2: 2f3c abcd 0002 movel #-1412628478,%sp@- <== NOT EXECUTED 428e8: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred> <== NOT EXECUTED
...
00043c28 <rtems_filesystem_is_separator>:
*
* NOTE: This function handles MS-DOS and UNIX style names.
*/
int rtems_filesystem_is_separator(char ch)
{
43c28: 4e56 0000 linkw %fp,#0 43c2c: 122e 000b moveb %fp@(11),%d1 43c30: 2f02 movel %d2,%sp@-
return ((ch == '/') || (ch == '\\') || (ch == '\0'));
43c32: 742f moveq #47,%d2 43c34: 1001 moveb %d1,%d0 43c36: 49c0 extbl %d0 43c38: b480 cmpl %d0,%d2
43c3a: 6716 beqs 43c52 <rtems_filesystem_is_separator+0x2a>
43c3c: 143c 005c moveb #92,%d2 43c40: b480 cmpl %d0,%d2
43c42: 670e beqs 43c52 <rtems_filesystem_is_separator+0x2a><== NEVER TAKEN
43c44: 4a01 tstb %d1 43c46: 57c0 seq %d0
}
43c48: 241f movel %sp@+,%d2
* NOTE: This function handles MS-DOS and UNIX style names.
*/
int rtems_filesystem_is_separator(char ch)
{
return ((ch == '/') || (ch == '\\') || (ch == '\0'));
43c4a: 49c0 extbl %d0 43c4c: 4480 negl %d0
}
43c4e: 4e5e unlk %fp 43c50: 4e75 rts 43c52: 241f movel %sp@+,%d2
* NOTE: This function handles MS-DOS and UNIX style names.
*/
int rtems_filesystem_is_separator(char ch)
{
return ((ch == '/') || (ch == '\\') || (ch == '\0'));
43c54: 7001 moveq #1,%d0
}
43c56: 4e5e unlk %fp
...
0004b39e <rtems_filesystem_iterate>:
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
4b39e: 4e56 fff0 linkw %fp,#-16 4b3a2: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 4b3a6: 266e 0008 moveal %fp@(8),%a3 4b3aa: 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 ) {
4b3ae: 4ab9 0005 cb2e tstl 5cb2e <rtems_filesystem_table>
4b3b4: 672a beqs 4b3e0 <rtems_filesystem_iterate+0x42> <== NEVER TAKEN
4b3b6: 45f9 0005 cb2e lea 5cb2e <rtems_filesystem_table>,%a2
stop = (*routine)( table_entry, routine_arg );
4b3bc: 2f03 movel %d3,%sp@- 4b3be: 2f0a movel %a2,%sp@-
++table_entry;
4b3c0: 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 );
4b3c2: 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 ) {
4b3c4: 508f addql #8,%sp
stop = (*routine)( table_entry, routine_arg );
4b3c6: 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 ) {
4b3c8: 4a92 tstl %a2@
4b3ca: 6710 beqs 4b3dc <rtems_filesystem_iterate+0x3e>
4b3cc: 4a00 tstb %d0
4b3ce: 67ec beqs 4b3bc <rtems_filesystem_iterate+0x1e> <== NEVER TAKEN
}
rtems_libio_unlock();
}
return stop;
}
4b3d0: 1002 moveb %d2,%d0 4b3d2: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 4b3d8: 4e5e unlk %fp 4b3da: 4e75 rts
while ( table_entry->type && !stop ) {
stop = (*routine)( table_entry, routine_arg );
++table_entry;
}
if ( !stop ) {
4b3dc: 4a00 tstb %d0
4b3de: 66f0 bnes 4b3d0 <rtems_filesystem_iterate+0x32> <== ALWAYS TAKEN
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4b3e0: 42a7 clrl %sp@- <== NOT EXECUTED 4b3e2: 42a7 clrl %sp@- <== NOT EXECUTED 4b3e4: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b3ea: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b3f0: 2479 0005 e550 moveal 5e550 <filesystem_chain>,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b3f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b3fa: b5fc 0005 e554 cmpal #386388,%a2 <== NOT EXECUTED 4b400: 6734 beqs 4b436 <rtems_filesystem_iterate+0x98> <== NOT EXECUTED
!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 );
4b402: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b404: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4b408: 4e93 jsr %a3@ <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b40a: 2452 moveal %a2@,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b40c: 508f addql #8,%sp <== NOT EXECUTED
!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 );
4b40e: 1400 moveb %d0,%d2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b410: b5fc 0005 e554 cmpal #386388,%a2 <== NOT EXECUTED 4b416: 6704 beqs 4b41c <rtems_filesystem_iterate+0x7e> <== NOT EXECUTED
node = rtems_chain_first( &filesystem_chain );
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
4b418: 4a00 tstb %d0 <== NOT EXECUTED 4b41a: 67e6 beqs 4b402 <rtems_filesystem_iterate+0x64> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b41c: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b422: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 4b428: 588f addql #4,%sp <== NOT EXECUTED
}
rtems_libio_unlock();
}
return stop;
}
4b42a: 1002 moveb %d2,%d0 <== NOT EXECUTED 4b42c: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4b432: 4e5e unlk %fp <== NOT EXECUTED 4b434: 4e75 rts <== NOT EXECUTED 4b436: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b43c: 4202 clrb %d2 <== NOT EXECUTED 4b43e: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 4b444: 588f addql #4,%sp <== NOT EXECUTED 4b446: 60e2 bras 4b42a <rtems_filesystem_iterate+0x8c> <== NOT EXECUTED
000431e0 <rtems_filesystem_mount_iterate>:
bool rtems_filesystem_mount_iterate(
rtems_per_filesystem_mount_routine routine,
void *routine_arg
)
{
431e0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 431e4: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
431e8: 42a7 clrl %sp@- <== NOT EXECUTED 431ea: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 431ee: 42a7 clrl %sp@- <== NOT EXECUTED 431f0: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 431f6: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 431fa: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
stop = (*routine)( mt_entry, routine_arg );
}
rtems_libio_unlock();
return stop;
}
43200: 2479 0005 e430 moveal 5e430 <mount_chain>,%a2 <== NOT EXECUTED
{
rtems_chain_node *node = NULL;
bool stop = false;
rtems_libio_lock();
for (
43206: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4320a: b5fc 0005 e434 cmpal #386100,%a2 <== NOT EXECUTED 43210: 6730 beqs 43242 <rtems_filesystem_mount_iterate+0x62><== NOT EXECUTED
node = rtems_chain_next( node )
) {
const rtems_filesystem_mount_table_entry_t *mt_entry =
(rtems_filesystem_mount_table_entry_t *) node;
stop = (*routine)( mt_entry, routine_arg );
43212: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43214: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43216: 4e93 jsr %a3@ <== NOT EXECUTED
}
rtems_libio_unlock();
return stop;
}
43218: 2452 moveal %a2@,%a2 <== NOT EXECUTED
{
rtems_chain_node *node = NULL;
bool stop = false;
rtems_libio_lock();
for (
4321a: 508f addql #8,%sp <== NOT EXECUTED
node = rtems_chain_next( node )
) {
const rtems_filesystem_mount_table_entry_t *mt_entry =
(rtems_filesystem_mount_table_entry_t *) node;
stop = (*routine)( mt_entry, routine_arg );
4321c: 1400 moveb %d0,%d2 <== NOT EXECUTED
{
rtems_chain_node *node = NULL;
bool stop = false;
rtems_libio_lock();
for (
4321e: b5fc 0005 e434 cmpal #386100,%a2 <== NOT EXECUTED 43224: 6704 beqs 4322a <rtems_filesystem_mount_iterate+0x4a><== NOT EXECUTED
node = rtems_chain_first( &mount_chain );
!rtems_chain_is_tail( &mount_chain, node ) && !stop;
43226: 4a00 tstb %d0 <== NOT EXECUTED 43228: 67e8 beqs 43212 <rtems_filesystem_mount_iterate+0x32><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4322a: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 43230: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
stop = (*routine)( mt_entry, routine_arg );
}
rtems_libio_unlock();
return stop;
}
43236: 1002 moveb %d2,%d0 <== NOT EXECUTED 43238: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4323e: 4e5e unlk %fp <== NOT EXECUTED 43240: 4e75 rts <== NOT EXECUTED 43242: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
rtems_per_filesystem_mount_routine routine,
void *routine_arg
)
{
rtems_chain_node *node = NULL;
bool stop = false;
43248: 4202 clrb %d2 <== NOT EXECUTED 4324a: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
stop = (*routine)( mt_entry, routine_arg );
}
rtems_libio_unlock();
return stop;
}
43250: 1002 moveb %d2,%d0 <== NOT EXECUTED 43252: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 43258: 4e5e unlk %fp <== NOT EXECUTED
00042c92 <rtems_filesystem_prefix_separators>:
int rtems_filesystem_prefix_separators(
const char *pathname,
int pathnamelen
)
{
42c92: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 42c96: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 42c9a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/* * Eat any separators at start of the path. */ int stripped = 0; while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
42c9e: 1012 moveb %a2@,%d0 <== NOT EXECUTED
int rtems_filesystem_prefix_separators(
const char *pathname,
int pathnamelen
)
{
42ca0: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/* * Eat any separators at start of the path. */ int stripped = 0; while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
42ca4: 4a00 tstb %d0 <== NOT EXECUTED 42ca6: 6730 beqs 42cd8 <rtems_filesystem_prefix_separators+0x46><== NOT EXECUTED 42ca8: 4a83 tstl %d3 <== NOT EXECUTED 42caa: 672c beqs 42cd8 <rtems_filesystem_prefix_separators+0x46><== NOT EXECUTED
}
return len;
}
int rtems_filesystem_prefix_separators(
42cac: 528a addql #1,%a2 <== NOT EXECUTED
)
{
/*
* Eat any separators at start of the path.
*/
int stripped = 0;
42cae: 4282 clrl %d2 <== NOT EXECUTED 42cb0: 47f9 0004 3c28 lea 43c28 <rtems_filesystem_is_separator>,%a3<== NOT EXECUTED
while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
42cb6: 49c0 extbl %d0 <== NOT EXECUTED 42cb8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42cba: 4e93 jsr %a3@ <== NOT EXECUTED 42cbc: 588f addql #4,%sp <== NOT EXECUTED 42cbe: 4a80 tstl %d0 <== NOT EXECUTED 42cc0: 670a beqs 42ccc <rtems_filesystem_prefix_separators+0x3a><== NOT EXECUTED
{
pathname++;
pathnamelen--;
stripped++;
42cc2: 5282 addql #1,%d2 <== NOT EXECUTED
{
/*
* Eat any separators at start of the path.
*/
int stripped = 0;
while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
42cc4: 101a moveb %a2@+,%d0 <== NOT EXECUTED 42cc6: 6704 beqs 42ccc <rtems_filesystem_prefix_separators+0x3a><== NOT EXECUTED 42cc8: b483 cmpl %d3,%d2 <== NOT EXECUTED 42cca: 66ea bnes 42cb6 <rtems_filesystem_prefix_separators+0x24><== NOT EXECUTED
pathname++;
pathnamelen--;
stripped++;
}
return stripped;
}
42ccc: 2002 movel %d2,%d0 <== NOT EXECUTED 42cce: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 42cd4: 4e5e unlk %fp <== NOT EXECUTED 42cd6: 4e75 rts <== NOT EXECUTED
)
{
/*
* Eat any separators at start of the path.
*/
int stripped = 0;
42cd8: 4282 clrl %d2 <== NOT EXECUTED
pathname++;
pathnamelen--;
stripped++;
}
return stripped;
}
42cda: 2002 movel %d2,%d0 <== NOT EXECUTED 42cdc: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 42ce2: 4e5e unlk %fp <== NOT EXECUTED
...
0004b478 <rtems_filesystem_register>:
int
rtems_filesystem_register(
const char *type,
rtems_filesystem_fsmount_me_t mount_h
)
{
4b478: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b47c: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4b480: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
size_t type_size = strlen(type) + 1;
4b484: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b486: 4eb9 0004 fd64 jsr 4fd64 <strlen> <== NOT EXECUTED 4b48c: 588f addql #4,%sp <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size; filesystem_node *fsn = malloc( fsn_size );
4b48e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b490: 4868 0011 pea %a0@(17) <== NOT EXECUTED
rtems_filesystem_register(
const char *type,
rtems_filesystem_fsmount_me_t mount_h
)
{
size_t type_size = strlen(type) + 1;
4b494: 2600 movel %d0,%d3 <== NOT EXECUTED 4b496: 5283 addql #1,%d3 <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size; filesystem_node *fsn = malloc( fsn_size );
4b498: 4eb9 0004 302c jsr 4302c <malloc> <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
4b49e: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_fsmount_me_t mount_h
)
{
size_t type_size = strlen(type) + 1;
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
4b4a0: 2440 moveal %d0,%a2 <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
4b4a2: 4a80 tstl %d0 <== NOT EXECUTED 4b4a4: 6700 0098 beqw 4b53e <rtems_filesystem_register+0xc6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
memcpy(type_storage, type, type_size);
4b4a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
)
{
size_t type_size = strlen(type) + 1;
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
char *type_storage = (char *) fsn + sizeof( *fsn );
4b4aa: 2600 movel %d0,%d3 <== NOT EXECUTED 4b4ac: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
if ( fsn == NULL )
rtems_set_errno_and_return_minus_one( ENOMEM );
memcpy(type_storage, type, type_size);
4b4b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b4b4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b4b6: 4eb9 0004 f1b8 jsr 4f1b8 <memcpy> <== NOT EXECUTED
fsn->entry.type = type_storage; fsn->entry.mount_h = mount_h;
4b4bc: 256e 000c 000c movel %fp@(12),%a2@(12) <== NOT EXECUTED
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4b4c2: 42a7 clrl %sp@- <== NOT EXECUTED 4b4c4: 42a7 clrl %sp@- <== NOT EXECUTED 4b4c6: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
if ( fsn == NULL )
rtems_set_errno_and_return_minus_one( ENOMEM );
memcpy(type_storage, type, type_size);
fsn->entry.type = type_storage;
4b4cc: 2543 0008 movel %d3,%a2@(8) <== NOT EXECUTED 4b4d0: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
fsn->entry.mount_h = mount_h;
rtems_libio_lock();
if ( rtems_filesystem_get_mount_handler( type ) == NULL ) {
4b4d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b4d8: 4eb9 0004 b448 jsr 4b448 <rtems_filesystem_get_mount_handler><== NOT EXECUTED 4b4de: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4b4e2: 4a80 tstl %d0 <== NOT EXECUTED 4b4e4: 662a bnes 4b510 <rtems_filesystem_register+0x98> <== NOT EXECUTED 4b4e6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b4e8: 4879 0005 e550 pea 5e550 <filesystem_chain> <== NOT EXECUTED 4b4ee: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b4f4: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b4fa: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 4b500: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
return 0;
4b504: 4280 clrl %d0 <== NOT EXECUTED
}
4b506: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4b50c: 4e5e unlk %fp <== NOT EXECUTED 4b50e: 4e75 rts <== NOT EXECUTED 4b510: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b516: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
rtems_libio_lock();
if ( rtems_filesystem_get_mount_handler( type ) == NULL ) {
rtems_chain_append( &filesystem_chain, &fsn->node );
} else {
rtems_libio_unlock();
free( fsn );
4b51c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b51e: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4b524: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4b52a: 508f addql #8,%sp <== NOT EXECUTED 4b52c: 7216 moveq #22,%d1 <== NOT EXECUTED 4b52e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b530: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
4b532: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
rtems_chain_append( &filesystem_chain, &fsn->node );
} else {
rtems_libio_unlock();
free( fsn );
rtems_set_errno_and_return_minus_one( EINVAL );
4b538: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
4b53a: 4e5e unlk %fp <== NOT EXECUTED 4b53c: 4e75 rts <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
rtems_set_errno_and_return_minus_one( ENOMEM );
4b53e: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4b544: 740c moveq #12,%d2 <== NOT EXECUTED 4b546: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b548: 70ff moveq #-1,%d0 <== NOT EXECUTED 4b54a: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
return 0;
}
4b54c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4b552: 4e5e unlk %fp <== NOT EXECUTED
0004b556 <rtems_filesystem_unregister>:
int
rtems_filesystem_unregister(
const char *type
)
{
4b556: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b55a: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4b55e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_chain_node *node = NULL;
if ( type == NULL ) {
4b562: 6700 0094 beqw 4b5f8 <rtems_filesystem_unregister+0xa2><== NOT EXECUTED
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4b566: 42a7 clrl %sp@- <== NOT EXECUTED 4b568: 42a7 clrl %sp@- <== NOT EXECUTED 4b56a: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b570: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b576: 2479 0005 e550 moveal 5e550 <filesystem_chain>,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4b57c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b580: b5fc 0005 e554 cmpal #386388,%a2 <== NOT EXECUTED 4b586: 671e beqs 4b5a6 <rtems_filesystem_unregister+0x50><== NOT EXECUTED 4b588: 47f9 0004 f80c lea 4f80c <strcmp>,%a3 <== NOT EXECUTED
!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 ) {
4b58e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b590: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 4b594: 4e93 jsr %a3@ <== NOT EXECUTED 4b596: 508f addql #8,%sp <== NOT EXECUTED 4b598: 4a80 tstl %d0 <== NOT EXECUTED 4b59a: 6730 beqs 4b5cc <rtems_filesystem_unregister+0x76><== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b59c: 2452 moveal %a2@,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4b59e: b5fc 0005 e554 cmpal #386388,%a2 <== NOT EXECUTED 4b5a4: 66e8 bnes 4b58e <rtems_filesystem_unregister+0x38><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b5a6: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b5ac: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4b5b2: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4b5b8: 588f addql #4,%sp <== NOT EXECUTED 4b5ba: 7202 moveq #2,%d1 <== NOT EXECUTED 4b5bc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b5be: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4b5c0: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4b5c6: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4b5c8: 4e5e unlk %fp <== NOT EXECUTED 4b5ca: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4b5cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b5ce: 4eb9 0004 6f1c jsr 46f1c <_Chain_Extract> <== NOT EXECUTED
) {
filesystem_node *fsn = (filesystem_node *) node;
if ( strcmp( fsn->entry.type, type ) == 0 ) {
rtems_chain_extract( node );
free( fsn );
4b5d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b5d6: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED 4b5dc: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b5e2: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 4b5e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_libio_unlock();
return 0;
4b5ec: 4280 clrl %d0 <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b5ee: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4b5f4: 4e5e unlk %fp <== NOT EXECUTED 4b5f6: 4e75 rts <== NOT EXECUTED
)
{
rtems_chain_node *node = NULL;
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
4b5f8: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4b5fe: 7416 moveq #22,%d2 <== NOT EXECUTED 4b600: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b602: 70ff moveq #-1,%d0 <== NOT EXECUTED 4b604: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b606: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4b60c: 4e5e unlk %fp <== NOT EXECUTED
00048b60 <rtems_get_version_string>:
#endif
#include <rtems/system.h>
const char *rtems_get_version_string(void)
{
48b60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _RTEMS_version; }
48b64: 203c 0006 1342 movel #398146,%d0 <== NOT EXECUTED 48b6a: 4e5e unlk %fp <== NOT EXECUTED
...
00043932 <rtems_gxx_getspecific>:
void *rtems_gxx_getspecific(__gthread_key_t key)
{
43932: 4e56 fffc linkw %fp,#-4
rtems_status_code status; void *p= 0;
43936: 204e moveal %fp,%a0
key = NULL;
return 0;
}
void *rtems_gxx_getspecific(__gthread_key_t key)
{
43938: 2f0a movel %a2,%sp@- 4393a: 246e 0008 moveal %fp@(8),%a2
rtems_status_code status; void *p= 0;
4393e: 42a0 clrl %a0@-
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_get( RTEMS_SELF, (void **)key, &p );
43940: 2f08 movel %a0,%sp@- 43942: 2f0a movel %a2,%sp@- 43944: 42a7 clrl %sp@- 43946: 4eb9 0004 790c jsr 4790c <rtems_task_variable_get>
if ( status == RTEMS_SUCCESSFUL ) {
4394c: 4fef 000c lea %sp@(12),%sp 43950: 4a80 tstl %d0
43952: 660a bnes 4395e <rtems_gxx_getspecific+0x2c> <== ALWAYS TAKEN
/* We do not have to do this, but what the heck ! */
p= key->val;
43954: 2012 movel %a2@,%d0 <== NOT EXECUTED
p,
rtems_task_self()
);
#endif
return p;
}
43956: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4395a: 4e5e unlk %fp <== NOT EXECUTED 4395c: 4e75 rts <== NOT EXECUTED
p= key->val;
} else {
/* fisrt time, always set to zero, it is unknown the value that the others
* threads are using at the moment of this call
*/
status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
4395e: 2f2a 0004 movel %a2@(4),%sp@- 43962: 2f0a movel %a2,%sp@- 43964: 42a7 clrl %sp@- 43966: 4eb9 0004 77a8 jsr 477a8 <rtems_task_variable_add>
if ( status != RTEMS_SUCCESSFUL ) {
4396c: 4fef 000c lea %sp@(12),%sp 43970: 4a80 tstl %d0
43972: 660e bnes 43982 <rtems_gxx_getspecific+0x50> <== ALWAYS TAKEN
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_GXX_KEY_ADD_FAILED
);
}
key->val = (void *)0;
43974: 4292 clrl %a2@ <== NOT EXECUTED 43976: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
p,
rtems_task_self()
);
#endif
return p;
}
4397a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4397e: 4e5e unlk %fp <== NOT EXECUTED 43980: 4e75 rts <== NOT EXECUTED
/* fisrt time, always set to zero, it is unknown the value that the others
* threads are using at the moment of this call
*/
status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
if ( status != RTEMS_SUCCESSFUL ) {
_Internal_error_Occurred(
43982: 4878 0015 pea 15 <OPER2+0x1> 43986: 4878 0001 pea 1 <ADD> 4398a: 42a7 clrl %sp@- 4398c: 4eb9 0004 8858 jsr 48858 <_Internal_error_Occurred>
000438b0 <rtems_gxx_key_create>:
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
438b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 438b4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* 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 ) );
438b6: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
}
return 0;
}
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
438ba: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
* 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 ) );
438be: 4eb9 0004 3cc4 jsr 43cc4 <malloc> <== NOT EXECUTED
*key = new_key;
438c4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
"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 );
438c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 438ca: 2f00 movel %d0,%sp@- <== NOT EXECUTED
* 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;
438cc: 2080 movel %d0,%a0@ <== NOT EXECUTED
new_key->val = NULL;
438ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
new_key->dtor = dtor;
438d0: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
* 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;
438d4: 4290 clrl %a0@ <== NOT EXECUTED
"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 );
438d6: 42a7 clrl %sp@- <== NOT EXECUTED 438d8: 4eb9 0004 77a8 jsr 477a8 <rtems_task_variable_add> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
return 0;
return -1;
}
438de: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
#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 )
return 0;
438e2: 4a80 tstl %d0 <== NOT EXECUTED 438e4: 56c0 sne %d0 <== NOT EXECUTED
);
#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 )
438e6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return 0;
return -1;
}
438ea: 4e5e unlk %fp <== NOT EXECUTED
#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 )
return 0;
438ec: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043900 <rtems_gxx_key_delete>:
int rtems_gxx_key_delete (__gthread_key_t key)
{
43900: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43904: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43906: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
#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 );
4390a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4390c: 42a7 clrl %sp@- <== NOT EXECUTED 4390e: 4eb9 0004 7864 jsr 47864 <rtems_task_variable_delete> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
43914: 508f addql #8,%sp <== NOT EXECUTED 43916: 4a80 tstl %d0 <== NOT EXECUTED 43918: 660e bnes 43928 <rtems_gxx_key_delete+0x28> <== NOT EXECUTED
/* Hmm - hopefully all tasks using this key have gone away... */
if ( key ) free( *(void **)key );
4391a: 4a8a tstl %a2 <== NOT EXECUTED 4391c: 670a beqs 43928 <rtems_gxx_key_delete+0x28> <== NOT EXECUTED 4391e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 43920: 4eb9 0004 3718 jsr 43718 <free> <== NOT EXECUTED 43926: 588f addql #4,%sp <== NOT EXECUTED
return 0;
}
key = NULL;
return 0;
}
43928: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4392c: 4280 clrl %d0 <== NOT EXECUTED 4392e: 4e5e unlk %fp <== NOT EXECUTED
000438f0 <rtems_gxx_key_dtor>:
printk( "gxx_wrappers: dtor key=%x, ptr=%x\n", key, ptr );
#endif
key->val = 0;
return 0;
}
438f0: 4280 clrl %d0 <== NOT EXECUTED
return 0;
return -1;
}
int rtems_gxx_key_dtor (__gthread_key_t key, void *ptr)
{
438f2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: dtor key=%x, ptr=%x\n", key, ptr );
#endif
key->val = 0;
438f6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return 0; }
438fa: 4e5e unlk %fp <== NOT EXECUTED
{
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: dtor key=%x, ptr=%x\n", key, ptr );
#endif
key->val = 0;
438fc: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
}
00043a24 <rtems_gxx_mutex_destroy>:
int rtems_gxx_mutex_destroy (__gthread_mutex_t *mutex)
{
43a24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43a28: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: destroy mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_delete(*(rtems_id *)mutex);
43a2c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 43a2e: 4eb9 0004 7038 jsr 47038 <rtems_semaphore_delete> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
43a34: 588f addql #4,%sp <== NOT EXECUTED
return 0;
return -1;
}
43a36: 4e5e unlk %fp <== NOT EXECUTED
printk( "gxx_wrappers: destroy mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_delete(*(rtems_id *)mutex);
if ( status == RTEMS_SUCCESSFUL )
return 0;
43a38: 4a80 tstl %d0 <== NOT EXECUTED 43a3a: 56c0 sne %d0 <== NOT EXECUTED 43a3c: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
000439c8 <rtems_gxx_mutex_init>:
/*
* MUTEX support
*/
void rtems_gxx_mutex_init (__gthread_mutex_t *mutex)
{
439c8: 4e56 0000 linkw %fp,#0
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: mutex init =%X\n", *mutex );
#endif
status = rtems_semaphore_create(
439cc: 2f2e 0008 movel %fp@(8),%sp@- 439d0: 42a7 clrl %sp@- 439d2: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f> 439d6: 4878 0001 pea 1 <ADD> 439da: 2f3c 4743 4332 movel #1195590450,%sp@- 439e0: 4eb9 0004 6e74 jsr 46e74 <rtems_semaphore_create>
RTEMS_PRIORITY|RTEMS_BINARY_SEMAPHORE|
RTEMS_INHERIT_PRIORITY|RTEMS_NO_PRIORITY_CEILING|RTEMS_LOCAL,
0,
(rtems_id *)mutex
);
if ( status != RTEMS_SUCCESSFUL ) {
439e6: 4fef 0014 lea %sp@(20),%sp 439ea: 4a80 tstl %d0
439ec: 6604 bnes 439f2 <rtems_gxx_mutex_init+0x2a> <== ALWAYS TAKEN
);
}
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: mutex init complete =%X\n", *mutex );
#endif
}
439ee: 4e5e unlk %fp <== NOT EXECUTED 439f0: 4e75 rts <== NOT EXECUTED
"gxx_wrappers: mutex init failed %s (%d)\n",
rtems_status_text(status),
status
);
#endif
_Internal_error_Occurred(
439f2: 4878 0016 pea 16 <OPER2+0x2> 439f6: 4878 0001 pea 1 <ADD> 439fa: 42a7 clrl %sp@- 439fc: 4eb9 0004 8858 jsr 48858 <_Internal_error_Occurred>
00043a02 <rtems_gxx_mutex_lock>:
printk( "gxx_wrappers: mutex init complete =%X\n", *mutex );
#endif
}
int rtems_gxx_mutex_lock (__gthread_mutex_t *mutex)
{
43a02: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: lock mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_obtain(
43a06: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43a0a: 42a7 clrl %sp@- <== NOT EXECUTED 43a0c: 42a7 clrl %sp@- <== NOT EXECUTED 43a0e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 43a10: 4eb9 0004 7110 jsr 47110 <rtems_semaphore_obtain> <== NOT EXECUTED
*(rtems_id *)mutex,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if ( status == RTEMS_SUCCESSFUL )
43a16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
return -1;
}
43a1a: 4e5e unlk %fp <== NOT EXECUTED
*(rtems_id *)mutex,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if ( status == RTEMS_SUCCESSFUL )
return 0;
43a1c: 4a80 tstl %d0 <== NOT EXECUTED 43a1e: 56c0 sne %d0 <== NOT EXECUTED 43a20: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043a40 <rtems_gxx_mutex_trylock>:
int rtems_gxx_mutex_trylock (__gthread_mutex_t *mutex)
{
43a40: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: trylock mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_obtain (*(rtems_id *)mutex, RTEMS_NO_WAIT, 0);
43a44: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43a48: 42a7 clrl %sp@- <== NOT EXECUTED 43a4a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 43a4e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 43a50: 4eb9 0004 7110 jsr 47110 <rtems_semaphore_obtain> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
43a56: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
return -1;
}
43a5a: 4e5e unlk %fp <== NOT EXECUTED
printk( "gxx_wrappers: trylock mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_obtain (*(rtems_id *)mutex, RTEMS_NO_WAIT, 0);
if ( status == RTEMS_SUCCESSFUL )
return 0;
43a5c: 4a80 tstl %d0 <== NOT EXECUTED 43a5e: 56c0 sne %d0 <== NOT EXECUTED 43a60: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043a64 <rtems_gxx_mutex_unlock>:
int rtems_gxx_mutex_unlock (__gthread_mutex_t *mutex)
{
43a64: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43a68: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: unlock mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_release( *(rtems_id *)mutex );
43a6c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 43a6e: 4eb9 0004 7250 jsr 47250 <rtems_semaphore_release> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
43a74: 588f addql #4,%sp <== NOT EXECUTED
return 0;
return -1;
}
43a76: 4e5e unlk %fp <== NOT EXECUTED
printk( "gxx_wrappers: unlock mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_release( *(rtems_id *)mutex );
if ( status == RTEMS_SUCCESSFUL )
return 0;
43a78: 4a80 tstl %d0 <== NOT EXECUTED 43a7a: 56c0 sne %d0 <== NOT EXECUTED 43a7c: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043834 <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))
{
43834: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 43838: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4383c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );
#endif
if ( *(volatile __gthread_once_t *)once == 0 ) {
43840: 2012 movel %a2@,%d0 <== NOT EXECUTED 43842: 670c beqs 43850 <rtems_gxx_once+0x1c> <== NOT EXECUTED
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
if ( o == 0 )
(*func)();
}
return 0;
}
43844: 4280 clrl %d0 <== NOT EXECUTED 43846: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 4384c: 4e5e unlk %fp <== NOT EXECUTED 4384e: 4e75 rts <== NOT EXECUTED
if ( *(volatile __gthread_once_t *)once == 0 ) {
rtems_mode saveMode;
__gthread_once_t o;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
43850: 240e movel %fp,%d2 <== NOT EXECUTED 43852: 5982 subql #4,%d2 <== NOT EXECUTED 43854: 47f9 0004 756c lea 4756c <rtems_task_mode>,%a3 <== NOT EXECUTED 4385a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4385c: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 43860: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 43864: 4e93 jsr %a3@ <== NOT EXECUTED
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
43866: 2012 movel %a2@,%d0 <== NOT EXECUTED 43868: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4386c: 6626 bnes 43894 <rtems_gxx_once+0x60> <== NOT EXECUTED
*(volatile __gthread_once_t *)once = 1;
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
4386e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43870: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
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;
43874: 7001 moveq #1,%d0 <== NOT EXECUTED
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
43876: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
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;
4387a: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
4387c: 4e93 jsr %a3@ <== NOT EXECUTED
if ( o == 0 )
(*func)();
4387e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 43882: 4e90 jsr %a0@ <== NOT EXECUTED 43884: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
} return 0; }
43888: 4280 clrl %d0 <== NOT EXECUTED 4388a: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 43890: 4e5e unlk %fp <== NOT EXECUTED 43892: 4e75 rts <== NOT EXECUTED
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);
43894: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43896: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 4389a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4389e: 4e93 jsr %a3@ <== NOT EXECUTED 438a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( o == 0 )
(*func)();
}
return 0;
}
438a4: 4280 clrl %d0 <== NOT EXECUTED 438a6: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 438ac: 4e5e unlk %fp <== NOT EXECUTED
00043a80 <rtems_gxx_recursive_mutex_init>:
void rtems_gxx_recursive_mutex_init(__gthread_recursive_mutex_t *mutex)
{
43a80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_gxx_mutex_init(mutex); }
43a84: 4e5e unlk %fp <== NOT EXECUTED
return -1;
}
void rtems_gxx_recursive_mutex_init(__gthread_recursive_mutex_t *mutex)
{
rtems_gxx_mutex_init(mutex);
43a86: 4ef9 0004 39c8 jmp 439c8 <rtems_gxx_mutex_init> <== NOT EXECUTED
00043a8c <rtems_gxx_recursive_mutex_lock>:
}
int rtems_gxx_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex)
{
43a8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_lock(mutex); }
43a90: 4e5e unlk %fp <== NOT EXECUTED
rtems_gxx_mutex_init(mutex);
}
int rtems_gxx_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex)
{
return rtems_gxx_mutex_lock(mutex);
43a92: 4ef9 0004 3a02 jmp 43a02 <rtems_gxx_mutex_lock> <== NOT EXECUTED
00043a98 <rtems_gxx_recursive_mutex_trylock>:
}
int rtems_gxx_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex)
{
43a98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_trylock(mutex); }
43a9c: 4e5e unlk %fp <== NOT EXECUTED
return rtems_gxx_mutex_lock(mutex);
}
int rtems_gxx_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex)
{
return rtems_gxx_mutex_trylock(mutex);
43a9e: 4ef9 0004 3a40 jmp 43a40 <rtems_gxx_mutex_trylock> <== NOT EXECUTED
00043aa4 <rtems_gxx_recursive_mutex_unlock>:
}
int rtems_gxx_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex)
{
43aa4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_unlock(mutex); }
43aa8: 4e5e unlk %fp <== NOT EXECUTED
return rtems_gxx_mutex_trylock(mutex);
}
int rtems_gxx_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex)
{
return rtems_gxx_mutex_unlock(mutex);
43aaa: 4ef9 0004 3a64 jmp 43a64 <rtems_gxx_mutex_unlock> <== NOT EXECUTED
00043992 <rtems_gxx_setspecific>:
#endif
return p;
}
int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr)
{
43992: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43996: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43998: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
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 );
4399c: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 439a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 439a2: 42a7 clrl %sp@- <== NOT EXECUTED 439a4: 4eb9 0004 77a8 jsr 477a8 <rtems_task_variable_add> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
439aa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 439ae: 4a80 tstl %d0 <== NOT EXECUTED 439b0: 660c bnes 439be <rtems_gxx_setspecific+0x2c> <== NOT EXECUTED
/* now let's set the proper value */
key->val = (void *)ptr;
439b2: 24ae 000c movel %fp@(12),%a2@ <== NOT EXECUTED
return 0;
}
return -1;
}
439b6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 439ba: 4e5e unlk %fp <== NOT EXECUTED 439bc: 4e75 rts <== NOT EXECUTED 439be: 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;
439c2: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
439c4: 4e5e unlk %fp <== NOT EXECUTED
00047c60 <rtems_heap_allocate_aligned_with_boundary>:
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
if (
47c60: 7003 moveq #3,%d0 <== NOT EXECUTED
void *rtems_heap_allocate_aligned_with_boundary(
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
47c62: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (
47c66: b0b9 0006 6216 cmpl 66216 <_System_state_Current>,%d0 <== NOT EXECUTED 47c6c: 6726 beqs 47c94 <rtems_heap_allocate_aligned_with_boundary+0x34><== NOT EXECUTED
&& !malloc_is_system_state_OK()
) {
return NULL;
}
malloc_deferred_frees_process();
47c6e: 4eb9 0004 6ba4 jsr 46ba4 <malloc_deferred_frees_process> <== NOT EXECUTED
/* FIXME: Statistics, boundary checks */
return _Protected_heap_Allocate_aligned_with_boundary(
47c74: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 47c78: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47c7c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47c80: 2f39 0006 3e70 movel 63e70 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 47c86: 4eb9 0004 cecc jsr 4cecc <_Protected_heap_Allocate_aligned_with_boundary><== NOT EXECUTED 47c8c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment,
boundary
);
}
47c90: 4e5e unlk %fp <== NOT EXECUTED 47c92: 4e75 rts <== NOT EXECUTED
uintptr_t boundary
)
{
if (
_System_state_Is_up( _System_state_Get() )
&& !malloc_is_system_state_OK()
47c94: 4eb9 0004 6b64 jsr 46b64 <malloc_is_system_state_OK> <== NOT EXECUTED 47c9a: 4a00 tstb %d0 <== NOT EXECUTED 47c9c: 66d0 bnes 47c6e <rtems_heap_allocate_aligned_with_boundary+0xe><== NOT EXECUTED
) {
return NULL;
47c9e: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment,
boundary
);
}
47ca0: 4e5e unlk %fp <== NOT EXECUTED
00046b32 <rtems_initialize_start_multitasking>:
46b32: 7002 moveq #2,%d0
}
void rtems_initialize_start_multitasking(void)
{
46b34: 4e56 0000 linkw %fp,#0
****** APPLICATION RUNS HERE ****** ****** RETURNS WHEN SYSTEM IS SHUT DOWN ****** ******************************************************************* ******************************************************************* *******************************************************************/ }
46b38: 4e5e unlk %fp 46b3a: 23c0 0005 fdfa movel %d0,5fdfa <_System_state_Current>
void rtems_initialize_start_multitasking(void)
{
_System_state_Set( SYSTEM_STATE_BEGIN_MULTITASKING );
_Thread_Start_multitasking();
46b40: 4ef9 0004 92d8 jmp 492d8 <_Thread_Start_multitasking>
...
00046198 <rtems_interrupt_catch>:
rtems_status_code rtems_interrupt_catch(
rtems_isr_entry new_isr_handler,
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
)
{
46198: 4e56 0000 linkw %fp,#0 4619c: 222e 0008 movel %fp@(8),%d1 461a0: 202e 000c movel %fp@(12),%d0 461a4: 206e 0010 moveal %fp@(16),%a0
if ( !_ISR_Is_vector_number_valid( vector ) )
461a8: 0c80 0000 00ff cmpil #255,%d0
461ae: 621e bhis 461ce <rtems_interrupt_catch+0x36> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) )
461b0: 4a81 tstl %d1
461b2: 6720 beqs 461d4 <rtems_interrupt_catch+0x3c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) )
461b4: 4a88 tstl %a0
461b6: 671c beqs 461d4 <rtems_interrupt_catch+0x3c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_ISR_Install_vector(
461b8: 2f08 movel %a0,%sp@- 461ba: 2f01 movel %d1,%sp@- 461bc: 2f00 movel %d0,%sp@- 461be: 4eb9 0004 9d0e jsr 49d0e <_CPU_ISR_install_vector>
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
461c4: 4fef 000c lea %sp@(12),%sp 461c8: 4280 clrl %d0
}
461ca: 4e5e unlk %fp 461cc: 4e75 rts
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
)
{
if ( !_ISR_Is_vector_number_valid( vector ) )
return RTEMS_INVALID_NUMBER;
461ce: 700a moveq #10,%d0 <== NOT EXECUTED
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}
461d0: 4e5e unlk %fp <== NOT EXECUTED 461d2: 4e75 rts <== NOT EXECUTED
if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) )
return RTEMS_INVALID_ADDRESS;
if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) )
return RTEMS_INVALID_ADDRESS;
461d4: 7009 moveq #9,%d0 <== NOT EXECUTED
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}
461d6: 4e5e unlk %fp <== NOT EXECUTED
...
000471e0 <rtems_interrupt_disable>:
rtems_interrupt_level rtems_interrupt_disable( void )
{
rtems_interrupt_level previous_level;
_ISR_Disable( previous_level );
471e0: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
*/
#undef rtems_interrupt_disable
rtems_interrupt_level rtems_interrupt_disable( void )
{
471e6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_interrupt_level previous_level;
_ISR_Disable( previous_level );
471ea: 40c0 movew %sr,%d0 <== NOT EXECUTED 471ec: 8280 orl %d0,%d1 <== NOT EXECUTED 471ee: 46c1 movew %d1,%sr <== NOT EXECUTED
return previous_level;
}
471f0: 4e5e unlk %fp <== NOT EXECUTED
000471f4 <rtems_interrupt_enable>:
#undef rtems_interrupt_enable
void rtems_interrupt_enable(
rtems_interrupt_level previous_level
)
{
471f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_ISR_Enable( previous_level );
471f8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 471fc: 46c0 movew %d0,%sr <== NOT EXECUTED
}
471fe: 4e5e unlk %fp <== NOT EXECUTED
00047202 <rtems_interrupt_flash>:
#undef rtems_interrupt_flash
void rtems_interrupt_flash(
rtems_interrupt_level previous_level
)
{
47202: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_ISR_Flash( previous_level );
47206: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4720a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 47210: 46c1 movew %d1,%sr <== NOT EXECUTED 47212: 8081 orl %d1,%d0 <== NOT EXECUTED 47214: 46c0 movew %d0,%sr <== NOT EXECUTED
}
47216: 4e5e unlk %fp <== NOT EXECUTED
0004721a <rtems_interrupt_is_in_progress>:
*/
#undef rtems_interrupt_is_in_progress
bool rtems_interrupt_is_in_progress( void )
{
4721a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _ISR_Is_in_progress();
4721e: 4ab9 0006 18c8 tstl 618c8 <_Per_CPU_Information+0x8> <== NOT EXECUTED 47224: 56c0 sne %d0 <== NOT EXECUTED
}
47226: 4e5e unlk %fp <== NOT EXECUTED 47228: 4480 negl %d0 <== NOT EXECUTED
00046b4c <rtems_interrupt_level_attribute>:
rtems_attribute rtems_interrupt_level_attribute(
uint32_t level
)
{
return RTEMS_INTERRUPT_LEVEL(level);
}
46b4c: 7007 moveq #7,%d0 <== NOT EXECUTED
uint32_t rtems_interrupt_mask = RTEMS_INTERRUPT_MASK;
rtems_attribute rtems_interrupt_level_attribute(
uint32_t level
)
{
46b4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return RTEMS_INTERRUPT_LEVEL(level); }
46b52: c0ae 0008 andl %fp@(8),%d0 <== NOT EXECUTED 46b56: 4e5e unlk %fp <== NOT EXECUTED
...
0004e530 <rtems_io_close>:
rtems_status_code rtems_io_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e530: 4e56 0000 linkw %fp,#0 4e534: 202e 0008 movel %fp@(8),%d0 4e538: 2f03 movel %d3,%sp@- 4e53a: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e53c: b0b9 0006 0508 cmpl 60508 <_IO_Number_of_drivers>,%d0
4e542: 6420 bccs 4e564 <rtems_io_close+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
4e544: 2600 movel %d0,%d3 4e546: 2400 movel %d0,%d2 4e548: e78b lsll #3,%d3 4e54a: eb8a lsll #5,%d2 4e54c: 2279 0006 050c moveal 6050c <_IO_Driver_address_table>,%a1 4e552: 9483 subl %d3,%d2 4e554: 2271 2808 moveal %a1@(00000008,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e558: 4a89 tstl %a1
4e55a: 6712 beqs 4e56e <rtems_io_close+0x3e> <== NEVER TAKEN
}
4e55c: 241f movel %sp@+,%d2 4e55e: 261f movel %sp@+,%d3 4e560: 4e5e unlk %fp
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e562: 4ed1 jmp %a1@
}
4e564: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e566: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e568: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e56a: 4e5e unlk %fp <== NOT EXECUTED 4e56c: 4e75 rts <== NOT EXECUTED 4e56e: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e570: 4280 clrl %d0 <== NOT EXECUTED
}
4e572: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e574: 4e5e unlk %fp <== NOT EXECUTED
0004e578 <rtems_io_control>:
rtems_status_code rtems_io_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e578: 4e56 0000 linkw %fp,#0 4e57c: 202e 0008 movel %fp@(8),%d0 4e580: 2f03 movel %d3,%sp@- 4e582: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e584: b0b9 0006 0508 cmpl 60508 <_IO_Number_of_drivers>,%d0
4e58a: 6420 bccs 4e5ac <rtems_io_control+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
4e58c: 2600 movel %d0,%d3 4e58e: 2400 movel %d0,%d2 4e590: e78b lsll #3,%d3 4e592: eb8a lsll #5,%d2 4e594: 2279 0006 050c moveal 6050c <_IO_Driver_address_table>,%a1 4e59a: 9483 subl %d3,%d2 4e59c: 2271 2814 moveal %a1@(00000014,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e5a0: 4a89 tstl %a1
4e5a2: 6712 beqs 4e5b6 <rtems_io_control+0x3e> <== NEVER TAKEN
}
4e5a4: 241f movel %sp@+,%d2 4e5a6: 261f movel %sp@+,%d3 4e5a8: 4e5e unlk %fp
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e5aa: 4ed1 jmp %a1@
}
4e5ac: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e5ae: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e5b0: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e5b2: 4e5e unlk %fp <== NOT EXECUTED 4e5b4: 4e75 rts <== NOT EXECUTED 4e5b6: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e5b8: 4280 clrl %d0 <== NOT EXECUTED
}
4e5ba: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e5bc: 4e5e unlk %fp <== NOT EXECUTED
0004c3fc <rtems_io_initialize>:
rtems_status_code rtems_io_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4c3fc: 4e56 0000 linkw %fp,#0 4c400: 202e 0008 movel %fp@(8),%d0 4c404: 2f03 movel %d3,%sp@- 4c406: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4c408: b0b9 0006 0508 cmpl 60508 <_IO_Number_of_drivers>,%d0
4c40e: 6420 bccs 4c430 <rtems_io_initialize+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
4c410: 2600 movel %d0,%d3 4c412: 2400 movel %d0,%d2 4c414: e78b lsll #3,%d3 4c416: 2279 0006 050c moveal 6050c <_IO_Driver_address_table>,%a1 4c41c: 93c3 subal %d3,%a1 4c41e: eb8a lsll #5,%d2 4c420: 2271 2800 moveal %a1@(00000000,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c424: 4a89 tstl %a1
4c426: 6712 beqs 4c43a <rtems_io_initialize+0x3e> }
4c428: 241f movel %sp@+,%d2 4c42a: 261f movel %sp@+,%d3 4c42c: 4e5e unlk %fp
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c42e: 4ed1 jmp %a1@
}
4c430: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4c432: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4c434: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c436: 4e5e unlk %fp <== NOT EXECUTED 4c438: 4e75 rts <== NOT EXECUTED
4c43a: 241f movel %sp@+,%d2
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c43c: 4280 clrl %d0
}
4c43e: 261f movel %sp@+,%d3
4c440: 4e5e unlk %fp <== NOT EXECUTED
0004274e <rtems_io_lookup_name>:
rtems_status_code rtems_io_lookup_name(
const char *name,
rtems_driver_name_t *device_info
)
{
4274e: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 42752: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 42756: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
rtems_filesystem_location_info_t loc;
int result;
rtems_filesystem_node_types_t node_type;
result = rtems_filesystem_evaluate_path(
4275a: 45f9 0004 fd64 lea 4fd64 <strlen>,%a2 <== NOT EXECUTED 42760: 240e movel %fp,%d2 <== NOT EXECUTED 42762: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED 42768: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4276a: 4e92 jsr %a2@ <== NOT EXECUTED 4276c: 7201 moveq #1,%d1 <== NOT EXECUTED 4276e: 2e81 movel %d1,%sp@ <== NOT EXECUTED 42770: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42772: 42a7 clrl %sp@- <== NOT EXECUTED 42774: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42776: 2f03 movel %d3,%sp@- <== NOT EXECUTED 42778: 4eb9 0004 2c04 jsr 42c04 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
name, strlen( name ), 0x00, &loc, true );
the_jnode = loc.node_access;
node_type = (*loc.ops->node_type_h)( &loc );
4277e: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
rtems_filesystem_location_info_t loc;
int result;
rtems_filesystem_node_types_t node_type;
result = rtems_filesystem_evaluate_path(
42782: 2800 movel %d0,%d4 <== NOT EXECUTED
name, strlen( name ), 0x00, &loc, true );
the_jnode = loc.node_access;
node_type = (*loc.ops->node_type_h)( &loc );
42784: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int result;
rtems_filesystem_node_types_t node_type;
result = rtems_filesystem_evaluate_path(
name, strlen( name ), 0x00, &loc, true );
the_jnode = loc.node_access;
42786: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
node_type = (*loc.ops->node_type_h)( &loc );
4278a: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4278e: 4e90 jsr %a0@ <== NOT EXECUTED
if ( (result != 0) || node_type != RTEMS_FILESYSTEM_DEVICE ) {
42790: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 42794: 4a84 tstl %d4 <== NOT EXECUTED 42796: 6606 bnes 4279e <rtems_io_lookup_name+0x50> <== NOT EXECUTED 42798: 7202 moveq #2,%d1 <== NOT EXECUTED 4279a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4279c: 6716 beqs 427b4 <rtems_io_lookup_name+0x66> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4279e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 427a0: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
427a6: 588f addql #4,%sp <== NOT EXECUTED 427a8: 700d moveq #13,%d0 <== NOT EXECUTED
device_info->minor = the_jnode->info.device.minor;
rtems_filesystem_freenode( &loc );
return RTEMS_SUCCESSFUL;
}
427aa: 4cee 0c1c ffd8 moveml %fp@(-40),%d2-%d4/%a2-%a3 <== NOT EXECUTED 427b0: 4e5e unlk %fp <== NOT EXECUTED 427b2: 4e75 rts <== NOT EXECUTED
if ( (result != 0) || node_type != RTEMS_FILESYSTEM_DEVICE ) {
rtems_filesystem_freenode( &loc );
return RTEMS_UNSATISFIED;
}
device_info->device_name = (char *) name;
427b4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 427b8: 2083 movel %d3,%a0@ <== NOT EXECUTED
device_info->device_name_length = strlen( name );
427ba: 2f03 movel %d3,%sp@- <== NOT EXECUTED 427bc: 4e92 jsr %a2@ <== NOT EXECUTED 427be: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
device_info->major = the_jnode->info.device.major;
427c2: 41eb 004c lea %a3@(76),%a0 <== NOT EXECUTED
device_info->minor = the_jnode->info.device.minor;
427c6: 47eb 0050 lea %a3@(80),%a3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
return RTEMS_UNSATISFIED;
}
device_info->device_name = (char *) name;
device_info->device_name_length = strlen( name );
427ca: 2340 0004 movel %d0,%a1@(4) <== NOT EXECUTED
device_info->major = the_jnode->info.device.major;
427ce: 2350 0008 movel %a0@,%a1@(8) <== NOT EXECUTED
device_info->minor = the_jnode->info.device.minor;
427d2: 2353 000c movel %a3@,%a1@(12) <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
427d6: 2e82 movel %d2,%sp@ <== NOT EXECUTED 427d8: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
427de: 588f addql #4,%sp <== NOT EXECUTED 427e0: 4280 clrl %d0 <== NOT EXECUTED
}
427e2: 4cee 0c1c ffd8 moveml %fp@(-40),%d2-%d4/%a2-%a3 <== NOT EXECUTED 427e8: 4e5e unlk %fp <== NOT EXECUTED
0004e5c0 <rtems_io_open>:
rtems_status_code rtems_io_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e5c0: 4e56 0000 linkw %fp,#0 4e5c4: 202e 0008 movel %fp@(8),%d0 4e5c8: 2f03 movel %d3,%sp@- 4e5ca: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e5cc: b0b9 0006 0508 cmpl 60508 <_IO_Number_of_drivers>,%d0
4e5d2: 6420 bccs 4e5f4 <rtems_io_open+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
4e5d4: 2600 movel %d0,%d3 4e5d6: 2400 movel %d0,%d2 4e5d8: e78b lsll #3,%d3 4e5da: eb8a lsll #5,%d2 4e5dc: 2279 0006 050c moveal 6050c <_IO_Driver_address_table>,%a1 4e5e2: 9483 subl %d3,%d2 4e5e4: 2271 2804 moveal %a1@(00000004,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e5e8: 4a89 tstl %a1
4e5ea: 6712 beqs 4e5fe <rtems_io_open+0x3e> <== NEVER TAKEN
}
4e5ec: 241f movel %sp@+,%d2 4e5ee: 261f movel %sp@+,%d3 4e5f0: 4e5e unlk %fp
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e5f2: 4ed1 jmp %a1@
}
4e5f4: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e5f6: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e5f8: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e5fa: 4e5e unlk %fp <== NOT EXECUTED 4e5fc: 4e75 rts <== NOT EXECUTED 4e5fe: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e600: 4280 clrl %d0 <== NOT EXECUTED
}
4e602: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e604: 4e5e unlk %fp <== NOT EXECUTED
0004e608 <rtems_io_read>:
rtems_status_code rtems_io_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e608: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e60c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4e610: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e612: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e614: b0b9 0006 0508 cmpl 60508 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED 4e61a: 6420 bccs 4e63c <rtems_io_read+0x34> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
4e61c: 2600 movel %d0,%d3 <== NOT EXECUTED 4e61e: 2400 movel %d0,%d2 <== NOT EXECUTED 4e620: e78b lsll #3,%d3 <== NOT EXECUTED 4e622: eb8a lsll #5,%d2 <== NOT EXECUTED 4e624: 2279 0006 050c moveal 6050c <_IO_Driver_address_table>,%a1 <== NOT EXECUTED 4e62a: 9483 subl %d3,%d2 <== NOT EXECUTED 4e62c: 2271 280c moveal %a1@(0000000c,%d2:l),%a1 <== NOT EXECUTED
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e630: 4a89 tstl %a1 <== NOT EXECUTED 4e632: 6712 beqs 4e646 <rtems_io_read+0x3e> <== NOT EXECUTED
}
4e634: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e636: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e638: 4e5e unlk %fp <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e63a: 4ed1 jmp %a1@ <== NOT EXECUTED
}
4e63c: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e63e: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e640: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e642: 4e5e unlk %fp <== NOT EXECUTED 4e644: 4e75 rts <== NOT EXECUTED 4e646: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e648: 4280 clrl %d0 <== NOT EXECUTED
}
4e64a: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e64c: 4e5e unlk %fp <== NOT EXECUTED
00048094 <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
)
{
48094: 4e56 fff4 linkw %fp,#-12 48098: 226e 000c moveal %fp@(12),%a1 4809c: 48d7 040c moveml %d2-%d3/%a2,%sp@ 480a0: 242e 0008 movel %fp@(8),%d2 480a4: 246e 0010 moveal %fp@(16),%a2
rtems_device_major_number major_limit = _IO_Number_of_drivers;
480a8: 2039 0006 4750 movel 64750 <_IO_Number_of_drivers>,%d0
if ( rtems_interrupt_is_in_progress() )
480ae: 4ab9 0006 4360 tstl 64360 <_Per_CPU_Information+0x8> 480b4: 6600 009c bnew 48152 <rtems_io_register_driver+0xbe>
return RTEMS_CALLED_FROM_ISR;
if ( registered_major == NULL )
480b8: 4a8a tstl %a2 480ba: 6700 00ea beqw 481a6 <rtems_io_register_driver+0x112>
return RTEMS_INVALID_ADDRESS;
/* Set it to an invalid value */
*registered_major = major_limit;
480be: 2480 movel %d0,%a2@
if ( driver_table == NULL )
480c0: 4a89 tstl %a1 480c2: 6700 00e2 beqw 481a6 <rtems_io_register_driver+0x112>
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
480c6: 4a91 tstl %a1@ 480c8: 6700 00d4 beqw 4819e <rtems_io_register_driver+0x10a>
return RTEMS_INVALID_ADDRESS;
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
480cc: b480 cmpl %d0,%d2
480ce: 6476 bccs 48146 <rtems_io_register_driver+0xb2> <== NEVER TAKEN
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
480d0: 2039 0006 3ed4 movel 63ed4 <_Thread_Dispatch_disable_level>,%d0 480d6: 5280 addql #1,%d0 480d8: 23c0 0006 3ed4 movel %d0,63ed4 <_Thread_Dispatch_disable_level>
return RTEMS_INVALID_NUMBER;
_Thread_Disable_dispatch();
if ( major == 0 ) {
480de: 4a82 tstl %d2
480e0: 667c bnes 4815e <rtems_io_register_driver+0xca> <== NEVER TAKEN
static rtems_status_code rtems_io_obtain_major_number(
rtems_device_major_number *major
)
{
rtems_device_major_number n = _IO_Number_of_drivers;
480e2: 2039 0006 4750 movel 64750 <_IO_Number_of_drivers>,%d0
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
480e8: 6700 0106 beqw 481f0 <rtems_io_register_driver+0x15c> 480ec: 2239 0006 4754 movel 64754 <_IO_Driver_address_table>,%d1 480f2: 2041 moveal %d1,%a0
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
480f4: 4a90 tstl %a0@ 480f6: 6700 008e beqw 48186 <rtems_io_register_driver+0xf2>
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 ) {
480fa: 5282 addql #1,%d2 480fc: 41e8 0018 lea %a0@(24),%a0 48100: b480 cmpl %d0,%d2
48102: 65f0 bcss 480f4 <rtems_io_register_driver+0x60> <== ALWAYS TAKEN
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
48104: 2482 movel %d2,%a2@
if ( m != n )
48106: b480 cmpl %d0,%d2 48108: 6700 00e8 beqw 481f2 <rtems_io_register_driver+0x15e> 4810c: 2602 movel %d2,%d3 4810e: 2002 movel %d2,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
48110: 2041 moveal %d1,%a0
}
/* Assigns invalid value in case of failure */
*major = m;
if ( m != n )
48112: e78b lsll #3,%d3 48114: eb88 lsll #5,%d0 48116: 9083 subl %d3,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
48118: d1c0 addal %d0,%a0 4811a: 20d9 movel %a1@+,%a0@+ 4811c: 20d9 movel %a1@+,%a0@+ 4811e: 20d9 movel %a1@+,%a0@+ 48120: 20d9 movel %a1@+,%a0@+ 48122: 20d9 movel %a1@+,%a0@+ 48124: 2091 movel %a1@,%a0@
_Thread_Enable_dispatch();
48126: 4eb9 0004 9ca6 jsr 49ca6 <_Thread_Enable_dispatch>
return rtems_io_initialize( major, 0, NULL );
4812c: 2d42 0008 movel %d2,%fp@(8)
}
48130: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
48136: 42ae 0010 clrl %fp@(16) 4813a: 42ae 000c clrl %fp@(12)
}
4813e: 4e5e unlk %fp
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
48140: 4ef9 0005 07ac jmp 507ac <rtems_io_initialize>
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
48146: 700a moveq #10,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48148: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4814e: 4e5e unlk %fp <== NOT EXECUTED 48150: 4e75 rts <== NOT EXECUTED
)
{
rtems_device_major_number major_limit = _IO_Number_of_drivers;
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
48152: 7012 moveq #18,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48154: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4815a: 4e5e unlk %fp <== NOT EXECUTED 4815c: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return sc;
}
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
4815e: 2202 movel %d2,%d1 <== NOT EXECUTED 48160: 2002 movel %d2,%d0 <== NOT EXECUTED 48162: e789 lsll #3,%d1 <== NOT EXECUTED 48164: eb88 lsll #5,%d0 <== NOT EXECUTED 48166: 2079 0006 4754 moveal 64754 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 4816c: 9081 subl %d1,%d0 <== NOT EXECUTED 4816e: d1c0 addal %d0,%a0 <== NOT EXECUTED
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
48170: 4a90 tstl %a0@ <== NOT EXECUTED 48172: 673e beqs 481b2 <rtems_io_register_driver+0x11e> <== NOT EXECUTED
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();
48174: 4eb9 0004 9ca6 jsr 49ca6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
4817a: 700c moveq #12,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
4817c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 48182: 4e5e unlk %fp <== NOT EXECUTED 48184: 4e75 rts <== NOT EXECUTED
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
48186: 4aa8 0004 tstl %a0@(4) 4818a: 6700 ff78 beqw 48104 <rtems_io_register_driver+0x70>
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 ) {
4818e: 5282 addql #1,%d2 48190: 41e8 0018 lea %a0@(24),%a0 48194: b480 cmpl %d0,%d2 48196: 6500 ff5c bcsw 480f4 <rtems_io_register_driver+0x60>
4819a: 6000 ff68 braw 48104 <rtems_io_register_driver+0x70> <== NOT EXECUTED
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
4819e: 4aa9 0004 tstl %a1@(4) 481a2: 6600 ff28 bnew 480cc <rtems_io_register_driver+0x38>
if ( driver_table == NULL )
return RTEMS_INVALID_ADDRESS;
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
481a6: 7009 moveq #9,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
481a8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 481ae: 4e5e unlk %fp <== NOT EXECUTED 481b0: 4e75 rts <== NOT EXECUTED
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
481b2: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 481b6: 66bc bnes 48174 <rtems_io_register_driver+0xe0> <== NOT EXECUTED 481b8: 2239 0006 4754 movel 64754 <_IO_Driver_address_table>,%d1 <== NOT EXECUTED
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
481be: 2041 moveal %d1,%a0 <== NOT EXECUTED 481c0: d1c0 addal %d0,%a0 <== NOT EXECUTED
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
*registered_major = major;
481c2: 2482 movel %d2,%a2@ <== NOT EXECUTED
}
_IO_Driver_address_table [major] = *driver_table;
481c4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481c6: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481c8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481ca: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481cc: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481ce: 2091 movel %a1@,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
481d0: 4eb9 0004 9ca6 jsr 49ca6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return rtems_io_initialize( major, 0, NULL );
481d6: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
481da: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
481e0: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED 481e4: 42ae 000c clrl %fp@(12) <== NOT EXECUTED
}
481e8: 4e5e unlk %fp <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
481ea: 4ef9 0005 07ac jmp 507ac <rtems_io_initialize> <== NOT EXECUTED
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
481f0: 4292 clrl %a2@ <== NOT EXECUTED
if ( major == 0 ) {
rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
if ( sc != RTEMS_SUCCESSFUL ) {
_Thread_Enable_dispatch();
481f2: 4eb9 0004 9ca6 jsr 49ca6 <_Thread_Enable_dispatch> <== NOT EXECUTED
*major = m;
if ( m != n )
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
481f8: 7005 moveq #5,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
481fa: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 48200: 4e5e unlk %fp <== NOT EXECUTED
00048204 <rtems_io_unregister_driver>:
*/
rtems_status_code rtems_io_unregister_driver(
rtems_device_major_number major
)
{
48204: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48208: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
4820c: 4ab9 0006 4360 tstl 64360 <_Per_CPU_Information+0x8> <== NOT EXECUTED 48212: 6644 bnes 48258 <rtems_io_unregister_driver+0x54><== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
48214: b0b9 0006 4750 cmpl 64750 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED 4821a: 6506 bcss 48222 <rtems_io_unregister_driver+0x1e><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
4821c: 700d moveq #13,%d0 <== NOT EXECUTED
}
4821e: 4e5e unlk %fp <== NOT EXECUTED 48220: 4e75 rts <== NOT EXECUTED 48222: 2239 0006 3ed4 movel 63ed4 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 48228: 5281 addql #1,%d1 <== NOT EXECUTED 4822a: 23c1 0006 3ed4 movel %d1,63ed4 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
_Thread_Disable_dispatch();
memset(
&_IO_Driver_address_table[major],
48230: 2200 movel %d0,%d1 <== NOT EXECUTED 48232: eb88 lsll #5,%d0 <== NOT EXECUTED 48234: e789 lsll #3,%d1 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
_Thread_Disable_dispatch();
memset(
48236: 2079 0006 4754 moveal 64754 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED
&_IO_Driver_address_table[major],
4823c: 9081 subl %d1,%d0 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
_Thread_Disable_dispatch();
memset(
4823e: d1c0 addal %d0,%a0 <== NOT EXECUTED 48240: 4298 clrl %a0@+ <== NOT EXECUTED 48242: 4298 clrl %a0@+ <== NOT EXECUTED 48244: 4298 clrl %a0@+ <== NOT EXECUTED 48246: 4298 clrl %a0@+ <== NOT EXECUTED 48248: 4298 clrl %a0@+ <== NOT EXECUTED 4824a: 4290 clrl %a0@ <== NOT EXECUTED
&_IO_Driver_address_table[major],
0,
sizeof( rtems_driver_address_table )
);
_Thread_Enable_dispatch();
4824c: 4eb9 0004 9ca6 jsr 49ca6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48252: 4280 clrl %d0 <== NOT EXECUTED
}
return RTEMS_UNSATISFIED;
}
48254: 4e5e unlk %fp <== NOT EXECUTED 48256: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_io_unregister_driver(
rtems_device_major_number major
)
{
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
48258: 7012 moveq #18,%d0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
}
4825a: 4e5e unlk %fp <== NOT EXECUTED
...
0004e650 <rtems_io_write>:
rtems_status_code rtems_io_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e650: 4e56 0000 linkw %fp,#0 4e654: 202e 0008 movel %fp@(8),%d0 4e658: 2f03 movel %d3,%sp@- 4e65a: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e65c: b0b9 0006 0508 cmpl 60508 <_IO_Number_of_drivers>,%d0
4e662: 6420 bccs 4e684 <rtems_io_write+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
4e664: 2600 movel %d0,%d3 4e666: 2400 movel %d0,%d2 4e668: e78b lsll #3,%d3 4e66a: eb8a lsll #5,%d2 4e66c: 2279 0006 050c moveal 6050c <_IO_Driver_address_table>,%a1 4e672: 9483 subl %d3,%d2 4e674: 2271 2810 moveal %a1@(00000010,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e678: 4a89 tstl %a1
4e67a: 6712 beqs 4e68e <rtems_io_write+0x3e> <== NEVER TAKEN
}
4e67c: 241f movel %sp@+,%d2 4e67e: 261f movel %sp@+,%d3 4e680: 4e5e unlk %fp
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e682: 4ed1 jmp %a1@
}
4e684: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e686: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e688: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e68a: 4e5e unlk %fp <== NOT EXECUTED 4e68c: 4e75 rts <== NOT EXECUTED 4e68e: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e690: 4280 clrl %d0 <== NOT EXECUTED
}
4e692: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e694: 4e5e unlk %fp <== NOT EXECUTED
000492e8 <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)
{
492e8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 492ec: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 492f0: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
uint32_t i;
uint32_t api_index;
Thread_Control *the_thread;
Objects_Information *information;
if ( !routine )
492f4: 4a8b tstl %a3 <== NOT EXECUTED 492f6: 673e beqs 49336 <rtems_iterate_over_all_threads+0x4e><== NOT EXECUTED 492f8: 49f9 0006 a23c lea 6a23c <_Objects_Information_table+0x4>,%a4<== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
492fe: 205c moveal %a4@+,%a0 <== NOT EXECUTED 49300: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED
if ( !information )
49304: 4a8a tstl %a2 <== NOT EXECUTED 49306: 6726 beqs 4932e <rtems_iterate_over_all_threads+0x46><== NOT EXECUTED
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
49308: 4a6a 000e tstw %a2@(14) <== NOT EXECUTED 4930c: 6720 beqs 4932e <rtems_iterate_over_all_threads+0x46><== NOT EXECUTED 4930e: 7401 moveq #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
49310: 206a 0018 moveal %a2@(24),%a0 <== NOT EXECUTED 49314: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
49318: 5282 addql #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
4931a: 4a80 tstl %d0 <== NOT EXECUTED 4931c: 6706 beqs 49324 <rtems_iterate_over_all_threads+0x3c><== NOT EXECUTED
continue;
(*routine)(the_thread);
4931e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49320: 4e93 jsr %a3@ <== NOT EXECUTED 49322: 588f addql #4,%sp <== NOT EXECUTED
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
49324: 4280 clrl %d0 <== NOT EXECUTED 49326: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 4932a: b480 cmpl %d0,%d2 <== NOT EXECUTED 4932c: 63e2 blss 49310 <rtems_iterate_over_all_threads+0x28><== NOT EXECUTED
Objects_Information *information;
if ( !routine )
return;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
4932e: b9fc 0006 a248 cmpal #434760,%a4 <== NOT EXECUTED 49334: 66c8 bnes 492fe <rtems_iterate_over_all_threads+0x16><== NOT EXECUTED
(*routine)(the_thread);
}
}
}
49336: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4933c: 4e5e unlk %fp <== NOT EXECUTED
0004b10e <rtems_libio_allocate>:
* This routine searches the IOP Table for an unused entry. If it
* finds one, it returns it. Otherwise, it returns NULL.
*/
rtems_libio_t *rtems_libio_allocate( void )
{
4b10e: 4e56 fffc linkw %fp,#-4 4b112: 2f0a movel %a2,%sp@-
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4b114: 42a7 clrl %sp@- 4b116: 42a7 clrl %sp@- 4b118: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- 4b11e: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain>
rtems_status_code rc;
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
4b124: 2039 0005 fb38 movel 5fb38 <rtems_libio_iop_freelist>,%d0 4b12a: 4fef 000c lea %sp@(12),%sp
4b12e: 6618 bnes 4b148 <rtems_libio_allocate+0x3a> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b130: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@-
rtems_libio_iop_freelist = next;
goto done;
}
failed:
iop = 0;
4b136: 95ca subal %a2,%a2 4b138: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
done:
rtems_libio_unlock();
return iop;
}
4b13e: 200a movel %a2,%d0 4b140: 246e fff8 moveal %fp@(-8),%a2 4b144: 4e5e unlk %fp 4b146: 4e75 rts
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b148: 486e fffc pea %fp@(-4)
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
4b14c: 90b9 0005 fb34 subl 5fb34 <rtems_libio_iops>,%d0 4b152: 223c b6db 6db7 movel #-1227133513,%d1
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b158: 42a7 clrl %sp@- 4b15a: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
4b15e: e680 asrl #3,%d0 4b160: 4c01 0800 mulsl %d1,%d0
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b164: 4878 0001 pea 1 <ADD> 4b168: 0080 4c42 4900 oril #1279412480,%d0 4b16e: 2f00 movel %d0,%sp@- 4b170: 4eb9 0004 61dc jsr 461dc <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
0,
&sema
);
if (rc != RTEMS_SUCCESSFUL)
4b176: 4fef 0014 lea %sp@(20),%sp 4b17a: 4a80 tstl %d0
4b17c: 66b2 bnes 4b130 <rtems_libio_allocate+0x22>
goto failed;
iop = rtems_libio_iop_freelist;
4b17e: 2479 0005 fb38 moveal 5fb38 <rtems_libio_iop_freelist>,%a2
next = iop->data1;
(void) memset( iop, 0, sizeof(rtems_libio_t) );
4b184: 204a moveal %a2,%a0
iop->flags = LIBIO_FLAGS_OPEN;
4b186: 223c 0000 0100 movel #256,%d1
&sema
);
if (rc != RTEMS_SUCCESSFUL)
goto failed;
iop = rtems_libio_iop_freelist;
next = iop->data1;
4b18c: 202a 0034 movel %a2@(52),%d0
(void) memset( iop, 0, sizeof(rtems_libio_t) );
4b190: 4298 clrl %a0@+ 4b192: 4298 clrl %a0@+ 4b194: 4298 clrl %a0@+ 4b196: 4298 clrl %a0@+ 4b198: 4298 clrl %a0@+ 4b19a: 4298 clrl %a0@+ 4b19c: 4298 clrl %a0@+ 4b19e: 4298 clrl %a0@+ 4b1a0: 4298 clrl %a0@+ 4b1a2: 4298 clrl %a0@+ 4b1a4: 4298 clrl %a0@+ 4b1a6: 4298 clrl %a0@+ 4b1a8: 4298 clrl %a0@+ 4b1aa: 4290 clrl %a0@
iop->flags = LIBIO_FLAGS_OPEN;
iop->sem = sema;
4b1ac: 256e fffc 002c movel %fp@(-4),%a2@(44)
if (rc != RTEMS_SUCCESSFUL)
goto failed;
iop = rtems_libio_iop_freelist;
next = iop->data1;
(void) memset( iop, 0, sizeof(rtems_libio_t) );
iop->flags = LIBIO_FLAGS_OPEN;
4b1b2: 2541 0014 movel %d1,%a2@(20) 4b1b6: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@-
iop->sem = sema;
rtems_libio_iop_freelist = next;
4b1bc: 23c0 0005 fb38 movel %d0,5fb38 <rtems_libio_iop_freelist> 4b1c2: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
iop = 0;
done:
rtems_libio_unlock();
return iop;
}
4b1c8: 200a movel %a2,%d0 4b1ca: 246e fff8 moveal %fp@(-8),%a2
4b1ce: 4e5e unlk %fp <== NOT EXECUTED
0004b1d2 <rtems_libio_free>:
*/
void rtems_libio_free(
rtems_libio_t *iop
)
{
4b1d2: 4e56 0000 linkw %fp,#0 4b1d6: 2f0a movel %a2,%sp@- 4b1d8: 246e 0008 moveal %fp@(8),%a2
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4b1dc: 42a7 clrl %sp@- 4b1de: 42a7 clrl %sp@- 4b1e0: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- 4b1e6: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain>
rtems_libio_lock();
if (iop->sem)
4b1ec: 202a 002c movel %a2@(44),%d0 4b1f0: 4fef 000c lea %sp@(12),%sp
4b1f4: 6630 bnes 4b226 <rtems_libio_free+0x54> <== ALWAYS TAKEN
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
4b1f6: 41f9 0005 fb38 lea 5fb38 <rtems_libio_iop_freelist>,%a0 <== NOT EXECUTED
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b1fc: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED
iop->data1 = rtems_libio_iop_freelist;
4b202: 2550 0034 movel %a0@,%a2@(52) <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b206: 41f9 0005 fb3c lea 5fb3c <rtems_libio_semaphore>,%a0 <== NOT EXECUTED 4b20c: 2d50 0008 movel %a0@,%fp@(8) <== NOT EXECUTED
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b210: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
4b214: 23ca 0005 fb38 movel %a2,5fb38 <rtems_libio_iop_freelist> <== NOT EXECUTED
rtems_libio_unlock();
}
4b21a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b21e: 4e5e unlk %fp <== NOT EXECUTED 4b220: 4ef9 0004 65b8 jmp 465b8 <rtems_semaphore_release> <== NOT EXECUTED
)
{
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
4b226: 2f00 movel %d0,%sp@- 4b228: 4eb9 0004 63a0 jsr 463a0 <rtems_semaphore_delete> 4b22e: 588f addql #4,%sp
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
4b230: 41f9 0005 fb38 lea 5fb38 <rtems_libio_iop_freelist>,%a0
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b236: 203c ffff feff movel #-257,%d0
iop->data1 = rtems_libio_iop_freelist;
4b23c: 2550 0034 movel %a0@,%a2@(52) 4b240: 41f9 0005 fb3c lea 5fb3c <rtems_libio_semaphore>,%a0 4b246: 2d50 0008 movel %a0@,%fp@(8)
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b24a: c1aa 0014 andl %d0,%a2@(20)
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
4b24e: 23ca 0005 fb38 movel %a2,5fb38 <rtems_libio_iop_freelist>
rtems_libio_unlock();
}
4b254: 246e fffc moveal %fp@(-4),%a2 4b258: 4e5e unlk %fp 4b25a: 4ef9 0004 65b8 jmp 465b8 <rtems_semaphore_release>
00042e18 <rtems_libio_init>:
*
* Called by BSP startup code to initialize the libio subsystem.
*/
void rtems_libio_init( void )
{
42e18: 4e56 0000 linkw %fp,#0 42e1c: 2f02 movel %d2,%sp@-
rtems_status_code rc;
uint32_t i;
rtems_libio_t *iop;
if (rtems_libio_number_iops > 0)
42e1e: 2439 0005 e334 movel 5e334 <rtems_libio_number_iops>,%d2
42e24: 674a beqs 42e70 <rtems_libio_init+0x58> <== NEVER TAKEN
{
rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
42e26: 4878 0038 pea 38 <DBL_MANT_DIG+0x3> 42e2a: 2f02 movel %d2,%sp@- 42e2c: 4eb9 0004 28f0 jsr 428f0 <calloc>
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
42e32: 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,
42e34: 2040 moveal %d0,%a0 42e36: 23c0 0005 fb34 movel %d0,5fb34 <rtems_libio_iops>
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
42e3c: 6778 beqs 42eb6 <rtems_libio_init+0x9e> <== NEVER TAKEN
rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
iop = rtems_libio_iop_freelist = rtems_libio_iops;
42e3e: 23c0 0005 fb38 movel %d0,5fb38 <rtems_libio_iop_freelist>
for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
42e44: 7201 moveq #1,%d1 42e46: b282 cmpl %d2,%d1
42e48: 6422 bccs 42e6c <rtems_libio_init+0x54> <== NEVER TAKEN
* rtems_libio_init
*
* Called by BSP startup code to initialize the libio subsystem.
*/
void rtems_libio_init( void )
42e4a: 2040 moveal %d0,%a0 42e4c: 41e8 0038 lea %a0@(56),%a0
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++)
iop->data1 = iop + 1;
42e50: 2148 fffc movel %a0,%a0@(-4) 42e54: 5281 addql #1,%d1 42e56: 41e8 0038 lea %a0@(56),%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++)
42e5a: b481 cmpl %d1,%d2
42e5c: 66f2 bnes 42e50 <rtems_libio_init+0x38>
* rtems_libio_init
*
* Called by BSP startup code to initialize the libio subsystem.
*/
void rtems_libio_init( void )
42e5e: 5381 subql #1,%d1 42e60: 2401 movel %d1,%d2
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++)
42e62: 2040 moveal %d0,%a0
* rtems_libio_init
*
* Called by BSP startup code to initialize the libio subsystem.
*/
void rtems_libio_init( void )
42e64: e78a lsll #3,%d2 42e66: ed89 lsll #6,%d1 42e68: 9282 subl %d2,%d1
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++)
42e6a: d1c1 addal %d1,%a0
iop->data1 = iop + 1;
iop->data1 = NULL;
42e6c: 42a8 0034 clrl %a0@(52)
/*
* Create the binary semaphore used to provide mutual exclusion
* on the IOP Table.
*/
rc = rtems_semaphore_create(
42e70: 4879 0005 fb3c pea 5fb3c <rtems_libio_semaphore> 42e76: 42a7 clrl %sp@- 42e78: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f> 42e7c: 4878 0001 pea 1 <ADD> 42e80: 2f3c 4c42 494f movel #1279412559,%sp@- 42e86: 4eb9 0004 61dc jsr 461dc <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&rtems_libio_semaphore
);
if ( rc != RTEMS_SUCCESSFUL )
42e8c: 4fef 0014 lea %sp@(20),%sp 42e90: 4a80 tstl %d0
42e92: 661a bnes 42eae <rtems_libio_init+0x96> <== NEVER TAKEN
/*
* Initialize the base file system infrastructure.
*/
if (rtems_fs_init_helper)
42e94: 2279 0005 e330 moveal 5e330 <rtems_fs_init_helper>,%a1 42e9a: 4a89 tstl %a1
42e9c: 6708 beqs 42ea6 <rtems_libio_init+0x8e> <== NEVER TAKEN
(* rtems_fs_init_helper)();
}
42e9e: 242e fffc movel %fp@(-4),%d2 42ea2: 4e5e unlk %fp
/*
* Initialize the base file system infrastructure.
*/
if (rtems_fs_init_helper)
(* rtems_fs_init_helper)();
42ea4: 4ed1 jmp %a1@
}
42ea6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 42eaa: 4e5e unlk %fp <== NOT EXECUTED 42eac: 4e75 rts <== NOT EXECUTED
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&rtems_libio_semaphore
);
if ( rc != RTEMS_SUCCESSFUL )
rtems_fatal_error_occurred( rc );
42eae: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42eb0: 4eb9 0004 6bc0 jsr 46bc0 <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);
42eb6: 4878 001a pea 1a <OPER2+0x6> <== NOT EXECUTED 42eba: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred> <== NOT EXECUTED
0004b2de <rtems_libio_is_file_open>:
*/
int rtems_libio_is_file_open(
void *node_access
)
{
4b2de: 4e56 0000 linkw %fp,#0 4b2e2: 2f02 movel %d2,%sp@- 4b2e4: 242e 0008 movel %fp@(8),%d2
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4b2e8: 42a7 clrl %sp@- 4b2ea: 42a7 clrl %sp@- 4b2ec: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- 4b2f2: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain>
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b2f8: 2079 0005 fb34 moveal 5fb34 <rtems_libio_iops>,%a0 4b2fe: 4fef 000c lea %sp@(12),%sp 4b302: 2279 0005 e334 moveal 5e334 <rtems_libio_number_iops>,%a1 4b308: 4a89 tstl %a1
4b30a: 6720 beqs 4b32c <rtems_libio_is_file_open+0x4e> <== NEVER TAKEN
* given file refers to an active file descriptor.
*
* If the given file is open a 1 is returned, otherwise a 0 is returned.
*/
int rtems_libio_is_file_open(
4b30c: 41e8 0014 lea %a0@(20),%a0
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b310: 4280 clrl %d0
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b312: 2210 movel %a0@,%d1
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b314: 5280 addql #1,%d0
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b316: 0281 0000 0100 andil #256,%d1
4b31c: 6706 beqs 4b324 <rtems_libio_is_file_open+0x46>
/*
* Check if this node is under the file system that we
* are trying to dismount.
*/
if ( iop->pathinfo.node_access == node_access ) {
4b31e: b4a8 0004 cmpl %a0@(4),%d2
4b322: 6720 beqs 4b344 <rtems_libio_is_file_open+0x66>
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b324: 41e8 0038 lea %a0@(56),%a0 4b328: b3c0 cmpal %d0,%a1
4b32a: 62e6 bhis 4b312 <rtems_libio_is_file_open+0x34> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b32c: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
int rtems_libio_is_file_open(
void *node_access
)
{
rtems_libio_t *iop;
int result=0;
4b332: 4282 clrl %d2 <== NOT EXECUTED 4b334: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b33a: 2002 movel %d2,%d0 <== NOT EXECUTED 4b33c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4b340: 4e5e unlk %fp <== NOT EXECUTED 4b342: 4e75 rts <== NOT EXECUTED
4b344: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@-
* Check if this node is under the file system that we
* are trying to dismount.
*/
if ( iop->pathinfo.node_access == node_access ) {
result = 1;
4b34a: 7401 moveq #1,%d2 4b34c: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
}
rtems_libio_unlock();
return result;
}
4b352: 2002 movel %d2,%d0 4b354: 242e fffc movel %fp@(-4),%d2
4b358: 4e5e unlk %fp <== NOT EXECUTED
0004b260 <rtems_libio_is_open_files_in_fs>:
*/
int rtems_libio_is_open_files_in_fs(
rtems_filesystem_mount_table_entry_t * fs_mt_entry
)
{
4b260: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b264: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b266: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
4b26a: 42a7 clrl %sp@- <== NOT EXECUTED 4b26c: 42a7 clrl %sp@- <== NOT EXECUTED 4b26e: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b274: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b27a: 2079 0005 fb34 moveal 5fb34 <rtems_libio_iops>,%a0 <== NOT EXECUTED 4b280: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b284: 2279 0005 e334 moveal 5e334 <rtems_libio_number_iops>,%a1 <== NOT EXECUTED 4b28a: 4a89 tstl %a1 <== NOT EXECUTED 4b28c: 6720 beqs 4b2ae <rtems_libio_is_open_files_in_fs+0x4e><== NOT EXECUTED
*
* If there is at least one node in the file system referenced by the mount
* table entry a 1 is returned, otherwise a 0 is returned.
*/
int rtems_libio_is_open_files_in_fs(
4b28e: 41e8 0014 lea %a0@(20),%a0 <== NOT EXECUTED
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b292: 4280 clrl %d0 <== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b294: 2210 movel %a0@,%d1 <== NOT EXECUTED
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b296: 5280 addql #1,%d0 <== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b298: 0281 0000 0100 andil #256,%d1 <== NOT EXECUTED 4b29e: 6706 beqs 4b2a6 <rtems_libio_is_open_files_in_fs+0x46><== NOT EXECUTED
/*
* Check if this node is under the file system that we
* are trying to dismount.
*/
if ( iop->pathinfo.mt_entry == fs_mt_entry ) {
4b2a0: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED 4b2a4: 6720 beqs 4b2c6 <rtems_libio_is_open_files_in_fs+0x66><== NOT EXECUTED
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b2a6: 41e8 0038 lea %a0@(56),%a0 <== NOT EXECUTED 4b2aa: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 4b2ac: 62e6 bhis 4b294 <rtems_libio_is_open_files_in_fs+0x34><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b2ae: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
int rtems_libio_is_open_files_in_fs(
rtems_filesystem_mount_table_entry_t * fs_mt_entry
)
{
rtems_libio_t *iop;
int result = 0;
4b2b4: 4282 clrl %d2 <== NOT EXECUTED 4b2b6: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b2bc: 2002 movel %d2,%d0 <== NOT EXECUTED 4b2be: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4b2c2: 4e5e unlk %fp <== NOT EXECUTED 4b2c4: 4e75 rts <== NOT EXECUTED 4b2c6: 2f39 0005 fb3c movel 5fb3c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
* Check if this node is under the file system that we
* are trying to dismount.
*/
if ( iop->pathinfo.mt_entry == fs_mt_entry ) {
result = 1;
4b2cc: 7401 moveq #1,%d2 <== NOT EXECUTED 4b2ce: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b2d4: 2002 movel %d2,%d0 <== NOT EXECUTED 4b2d6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4b2da: 4e5e unlk %fp <== NOT EXECUTED
00044440 <rtems_libio_set_private_env>:
rtems_status_code rtems_libio_set_private_env(void)
{
44440: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 44444: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_id task_id = rtems_task_self();
44448: 4eb9 0004 73bc jsr 473bc <rtems_task_self> <== NOT EXECUTED
rtems_filesystem_location_info_t root_loc;
rtems_filesystem_location_info_t current_loc;
rtems_user_env_t *new_env = NULL;
int rv = 0;
rv = rtems_filesystem_evaluate_path("/", 1, 0, &root_loc, 0);
4444e: 45ee ffec lea %fp@(-20),%a2 <== NOT EXECUTED 44452: 47f9 0004 3150 lea 43150 <rtems_filesystem_evaluate_path>,%a3<== NOT EXECUTED
}
rtems_status_code rtems_libio_set_private_env(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_id task_id = rtems_task_self();
44458: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_filesystem_location_info_t root_loc;
rtems_filesystem_location_info_t current_loc;
rtems_user_env_t *new_env = NULL;
int rv = 0;
rv = rtems_filesystem_evaluate_path("/", 1, 0, &root_loc, 0);
4445a: 42a7 clrl %sp@- <== NOT EXECUTED 4445c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4445e: 42a7 clrl %sp@- <== NOT EXECUTED 44460: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44464: 4879 0005 d8e6 pea 5d8e6 <IMFS_ops+0x48> <== NOT EXECUTED 4446a: 4e93 jsr %a3@ <== NOT EXECUTED
if (rv != 0)
4446c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 44470: 4a80 tstl %d0 <== NOT EXECUTED 44472: 670c beqs 44480 <rtems_libio_set_private_env+0x40><== NOT EXECUTED
error_1:
rtems_filesystem_freenode(&root_loc);
error_0:
return RTEMS_NO_MEMORY;
44474: 701a moveq #26,%d0 <== NOT EXECUTED
}
44476: 4cee 1c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4447c: 4e5e unlk %fp <== NOT EXECUTED 4447e: 4e75 rts <== NOT EXECUTED
rv = rtems_filesystem_evaluate_path("/", 1, 0, &root_loc, 0);
if (rv != 0)
goto error_0;
rv = rtems_filesystem_evaluate_path("/", 1, 0, ¤t_loc, 0);
44480: 42a7 clrl %sp@- <== NOT EXECUTED 44482: 49ee ffd8 lea %fp@(-40),%a4 <== NOT EXECUTED 44486: 2f0c movel %a4,%sp@- <== NOT EXECUTED 44488: 42a7 clrl %sp@- <== NOT EXECUTED 4448a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4448e: 4879 0005 d8e6 pea 5d8e6 <IMFS_ops+0x48> <== NOT EXECUTED 44494: 4e93 jsr %a3@ <== NOT EXECUTED
if (rv != 0)
44496: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4449a: 47f9 0004 3234 lea 43234 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED 444a0: 4a80 tstl %d0 <== NOT EXECUTED 444a2: 6600 00b4 bnew 44558 <rtems_libio_set_private_env+0x118><== NOT EXECUTED
* Bharath: I'm not sure if the check can be reduced to
* if( rtems_current_user_env->task_id != task_id ) {
*/
if (
rtems_current_user_env == &rtems_global_user_env
444a6: 2679 0005 ef14 moveal 5ef14 <rtems_current_user_env>,%a3 <== NOT EXECUTED
/*
* Bharath: I'm not sure if the check can be reduced to
* if( rtems_current_user_env->task_id != task_id ) {
*/
if (
444ac: b7fc 0006 0554 cmpal #394580,%a3 <== NOT EXECUTED 444b2: 6704 beqs 444b8 <rtems_libio_set_private_env+0x78><== NOT EXECUTED
rtems_current_user_env == &rtems_global_user_env
|| rtems_current_user_env->task_id != task_id
444b4: b493 cmpl %a3@,%d2 <== NOT EXECUTED 444b6: 6734 beqs 444ec <rtems_libio_set_private_env+0xac><== NOT EXECUTED
) {
new_env = malloc(sizeof(rtems_user_env_t));
444b8: 4878 0048 pea 48 <DBL_MANT_DIG+0x13> <== NOT EXECUTED 444bc: 4eb9 0004 3870 jsr 43870 <malloc> <== NOT EXECUTED
if (new_env == NULL)
444c2: 588f addql #4,%sp <== NOT EXECUTED
if (
rtems_current_user_env == &rtems_global_user_env
|| rtems_current_user_env->task_id != task_id
) {
new_env = malloc(sizeof(rtems_user_env_t));
444c4: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (new_env == NULL)
444c6: 4a80 tstl %d0 <== NOT EXECUTED 444c8: 6700 0082 beqw 4454c <rtems_libio_set_private_env+0x10c><== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
new_env->refcnt = 1;
#endif
sc = rtems_task_variable_add(
444cc: 487a ff2a pea %pc@(443f8 <free_user_env>) <== NOT EXECUTED 444d0: 4879 0005 ef14 pea 5ef14 <rtems_current_user_env> <== NOT EXECUTED 444d6: 42a7 clrl %sp@- <== NOT EXECUTED 444d8: 4eb9 0004 748c jsr 4748c <rtems_task_variable_add> <== NOT EXECUTED
RTEMS_SELF,
(void*)&rtems_current_user_env,
(void(*)(void *))free_user_env
);
if (sc != RTEMS_SUCCESSFUL)
444de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 444e2: 4a80 tstl %d0 <== NOT EXECUTED 444e4: 665c bnes 44542 <rtems_libio_set_private_env+0x102><== NOT EXECUTED
goto error_3;
rtems_current_user_env = new_env;
444e6: 23cb 0005 ef14 movel %a3,5ef14 <rtems_current_user_env> <== NOT EXECUTED
}
/* Inherit the global values */
*rtems_current_user_env = rtems_global_user_env;
444ec: 4878 0048 pea 48 <DBL_MANT_DIG+0x13> <== NOT EXECUTED 444f0: 4879 0006 0554 pea 60554 <rtems_global_user_env> <== NOT EXECUTED 444f6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 444f8: 4eb9 0004 fb28 jsr 4fb28 <memcpy> <== NOT EXECUTED
* Clone the pathlocs. In contrast to most other code we must _not_ free the * original locs because what we are trying to do here is forking off clones. * The reason is a pathloc can be allocated by the file system and needs to * be freed when deleting the environment. */ rtems_filesystem_root = root_loc;
444fe: 276e fff4 0020 movel %fp@(-12),%a3@(32) <== NOT EXECUTED
rtems_filesystem_current = current_loc;
44504: 41eb 0004 lea %a3@(4),%a0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
44508: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4450c: 4280 clrl %d0 <== NOT EXECUTED
* Clone the pathlocs. In contrast to most other code we must _not_ free the * original locs because what we are trying to do here is forking off clones. * The reason is a pathloc can be allocated by the file system and needs to * be freed when deleting the environment. */ rtems_filesystem_root = root_loc;
4450e: 276e fff8 0024 movel %fp@(-8),%a3@(36) <== NOT EXECUTED 44514: 276e fffc 0028 movel %fp@(-4),%a3@(40) <== NOT EXECUTED 4451a: 276e fff0 001c movel %fp@(-16),%a3@(28) <== NOT EXECUTED 44520: 2752 0018 movel %a2@,%a3@(24) <== NOT EXECUTED
rtems_filesystem_current = current_loc;
44524: 20d4 movel %a4@,%a0@+ <== NOT EXECUTED 44526: 20ee ffdc movel %fp@(-36),%a0@+ <== NOT EXECUTED 4452a: 20ee ffe0 movel %fp@(-32),%a0@+ <== NOT EXECUTED 4452e: 20ee ffe4 movel %fp@(-28),%a0@+ <== NOT EXECUTED 44532: 20ae ffe8 movel %fp@(-24),%a0@ <== NOT EXECUTED
}
/* Inherit the global values */
*rtems_current_user_env = rtems_global_user_env;
rtems_current_user_env->task_id = task_id;
44536: 2682 movel %d2,%a3@ <== NOT EXECUTED
error_1:
rtems_filesystem_freenode(&root_loc);
error_0:
return RTEMS_NO_MEMORY;
}
44538: 4cee 1c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4453e: 4e5e unlk %fp <== NOT EXECUTED 44540: 4e75 rts <== NOT EXECUTED
rtems_filesystem_current = current_loc;
return RTEMS_SUCCESSFUL;
error_3:
free(new_env);
44542: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44544: 4eb9 0004 3248 jsr 43248 <free> <== NOT EXECUTED 4454a: 588f addql #4,%sp <== NOT EXECUTED
error_2:
rtems_filesystem_freenode(¤t_loc);
4454c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4454e: 47f9 0004 3234 lea 43234 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED 44554: 4e93 jsr %a3@ <== NOT EXECUTED 44556: 588f addql #4,%sp <== NOT EXECUTED
error_1:
rtems_filesystem_freenode(&root_loc);
44558: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4455a: 4e93 jsr %a3@ <== NOT EXECUTED 4455c: 588f addql #4,%sp <== NOT EXECUTED
error_0:
return RTEMS_NO_MEMORY;
4455e: 701a moveq #26,%d0 <== NOT EXECUTED
}
44560: 4cee 1c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a4 <== NOT EXECUTED 44566: 4e5e unlk %fp <== NOT EXECUTED
0004456a <rtems_libio_share_private_env>:
* b) mutex access to rtems_filesystem_current, rtems_filesytem_root
* while changing any of those (chdir(), chroot()).
*/
rtems_status_code rtems_libio_share_private_env(rtems_id task_id)
{
4456a: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4456e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 44570: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44572: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_id current_task_id;
/*
* get current task id
*/
current_task_id = rtems_task_self();
44576: 4eb9 0004 73bc jsr 473bc <rtems_task_self> <== NOT EXECUTED 4457c: 2600 movel %d0,%d3 <== NOT EXECUTED
/*
* If this was an attempt to share the task with self,
* if somebody wanted to do it... Lets tell them, its shared
*/
if( task_id == current_task_id )
4457e: b082 cmpl %d2,%d0 <== NOT EXECUTED 44580: 673a beqs 445bc <rtems_libio_share_private_env+0x52><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
/*
* Try to get the requested user environment
*/
sc = rtems_task_variable_get(
44582: 486e fffc pea %fp@(-4) <== NOT EXECUTED 44586: 4879 0005 ef14 pea 5ef14 <rtems_current_user_env> <== NOT EXECUTED 4458c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4458e: 4eb9 0004 7548 jsr 47548 <rtems_task_variable_get> <== NOT EXECUTED
(void*)&shared_user_env );
/*
* If it was not successful, return the error code
*/
if (sc != RTEMS_SUCCESSFUL)
44594: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 44598: 4a80 tstl %d0 <== NOT EXECUTED 4459a: 6614 bnes 445b0 <rtems_libio_share_private_env+0x46><== NOT EXECUTED
* If we have a current environment in place, we need to
* free it, since we will be sharing the variable with the
* shared_user_env
*/
if (rtems_current_user_env->task_id==current_task_id) {
4459c: 2079 0005 ef14 moveal 5ef14 <rtems_current_user_env>,%a0 <== NOT EXECUTED 445a2: b690 cmpl %a0@,%d3 <== NOT EXECUTED 445a4: 6724 beqs 445ca <rtems_libio_share_private_env+0x60><== NOT EXECUTED
rtems_user_env_t *tmp = rtems_current_user_env;
free_user_env( tmp );
}
/* the current_user_env is the same pointer that remote env */
rtems_current_user_env = shared_user_env;
445a6: 41ee fffc lea %fp@(-4),%a0 <== NOT EXECUTED 445aa: 23d0 0005 ef14 movel %a0@,5ef14 <rtems_current_user_env> <== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
rtems_current_user_env->refcnt++;
#endif
return RTEMS_SUCCESSFUL;
}
445b0: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 445b4: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 445b8: 4e5e unlk %fp <== NOT EXECUTED 445ba: 4e75 rts <== NOT EXECUTED 445bc: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
* If this was an attempt to share the task with self,
* if somebody wanted to do it... Lets tell them, its shared
*/
if( task_id == current_task_id )
return RTEMS_SUCCESSFUL;
445c0: 4280 clrl %d0 <== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
rtems_current_user_env->refcnt++;
#endif
return RTEMS_SUCCESSFUL;
}
445c2: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 445c6: 4e5e unlk %fp <== NOT EXECUTED 445c8: 4e75 rts <== NOT EXECUTED
* shared_user_env
*/
if (rtems_current_user_env->task_id==current_task_id) {
rtems_user_env_t *tmp = rtems_current_user_env;
free_user_env( tmp );
445ca: 2f08 movel %a0,%sp@- <== NOT EXECUTED 445cc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 445d0: 4eba fe26 jsr %pc@(443f8 <free_user_env>) <== NOT EXECUTED 445d4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
}
/* the current_user_env is the same pointer that remote env */
rtems_current_user_env = shared_user_env;
445d8: 41ee fffc lea %fp@(-4),%a0 <== NOT EXECUTED
* shared_user_env
*/
if (rtems_current_user_env->task_id==current_task_id) {
rtems_user_env_t *tmp = rtems_current_user_env;
free_user_env( tmp );
445dc: 588f addql #4,%sp <== NOT EXECUTED
}
/* the current_user_env is the same pointer that remote env */
rtems_current_user_env = shared_user_env;
445de: 23d0 0005 ef14 movel %a0@,5ef14 <rtems_current_user_env> <== NOT EXECUTED 445e4: 60ca bras 445b0 <rtems_libio_share_private_env+0x46><== NOT EXECUTED
...
0004b0c0 <rtems_libio_to_fcntl_flags>:
uint32_t flags
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b0c0: 7006 moveq #6,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
4b0c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b0c6: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b0ca: c081 andl %d1,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
4b0cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b0ce: 7406 moveq #6,%d2 <== NOT EXECUTED 4b0d0: b480 cmpl %d0,%d2 <== NOT EXECUTED 4b0d2: 6736 beqs 4b10a <rtems_libio_to_fcntl_flags+0x4a><== NOT EXECUTED
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
4b0d4: 0801 0001 btst #1,%d1 <== NOT EXECUTED 4b0d8: 6726 beqs 4b100 <rtems_libio_to_fcntl_flags+0x40><== NOT EXECUTED
fcntl_flags |= O_RDONLY;
4b0da: 4280 clrl %d0 <== NOT EXECUTED
} else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {
fcntl_flags |= O_WRONLY;
}
if ( (flags & LIBIO_FLAGS_NO_DELAY) == LIBIO_FLAGS_NO_DELAY ) {
4b0dc: 0801 0000 btst #0,%d1 <== NOT EXECUTED 4b0e0: 6704 beqs 4b0e6 <rtems_libio_to_fcntl_flags+0x26><== NOT EXECUTED
fcntl_flags |= O_NONBLOCK;
4b0e2: 08c0 000e bset #14,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {
4b0e6: 0801 0009 btst #9,%d1 <== NOT EXECUTED 4b0ea: 6704 beqs 4b0f0 <rtems_libio_to_fcntl_flags+0x30><== NOT EXECUTED
fcntl_flags |= O_APPEND;
4b0ec: 7408 moveq #8,%d2 <== NOT EXECUTED 4b0ee: 8082 orl %d2,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {
4b0f0: 0801 000a btst #10,%d1 <== NOT EXECUTED 4b0f4: 6704 beqs 4b0fa <rtems_libio_to_fcntl_flags+0x3a><== NOT EXECUTED
fcntl_flags |= O_CREAT;
4b0f6: 08c0 0009 bset #9,%d0 <== NOT EXECUTED
}
return fcntl_flags;
}
4b0fa: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b0fc: 4e5e unlk %fp <== NOT EXECUTED 4b0fe: 4e75 rts <== NOT EXECUTED
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
fcntl_flags |= O_RDWR;
4b100: 44c1 movew %d1,%ccr <== NOT EXECUTED 4b102: 57c0 seq %d0 <== NOT EXECUTED 4b104: 49c0 extbl %d0 <== NOT EXECUTED 4b106: 4480 negl %d0 <== NOT EXECUTED 4b108: 60d2 bras 4b0dc <rtems_libio_to_fcntl_flags+0x1c><== NOT EXECUTED 4b10a: 7002 moveq #2,%d0 <== NOT EXECUTED 4b10c: 60ce bras 4b0dc <rtems_libio_to_fcntl_flags+0x1c><== NOT EXECUTED
00046f04 <rtems_malloc_statistics_at_free>:
* size and thus we skip updating the statistics.
*/
static void rtems_malloc_statistics_at_free(
void *pointer
)
{
46f04: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46f08: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46f0a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uintptr_t size;
if (_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &size) ) {
46f0c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46f10: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46f14: 2f39 0006 3e70 movel 63e70 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 46f1a: 4eb9 0004 cf84 jsr 4cf84 <_Protected_heap_Get_block_size> <== NOT EXECUTED 46f20: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46f24: 4a00 tstb %d0 <== NOT EXECUTED 46f26: 671a beqs 46f42 <rtems_malloc_statistics_at_free+0x3e><== NOT EXECUTED
MSBUMP(lifetime_freed, size);
46f28: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 46f2c: 4282 clrl %d2 <== NOT EXECUTED 46f2e: d7b9 0006 5f90 addl %d3,65f90 <rtems_malloc_statistics+0x28><== NOT EXECUTED 46f34: 2039 0006 5f8c movel 65f8c <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED 46f3a: d182 addxl %d2,%d0 <== NOT EXECUTED 46f3c: 23c0 0006 5f8c movel %d0,65f8c <rtems_malloc_statistics+0x24><== NOT EXECUTED
} }
46f42: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 46f46: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 46f4a: 4e5e unlk %fp <== NOT EXECUTED
00046f4e <rtems_malloc_statistics_at_malloc>:
}
static void rtems_malloc_statistics_at_malloc(
void *pointer
)
{
46f4e: 4e56 fffc linkw %fp,#-4 46f52: 202e 0008 movel %fp@(8),%d0 46f56: 2f03 movel %d3,%sp@-
uintptr_t actual_size = 0;
46f58: 42ae fffc clrl %fp@(-4)
}
static void rtems_malloc_statistics_at_malloc(
void *pointer
)
{
46f5c: 2f02 movel %d2,%sp@-
uintptr_t actual_size = 0;
uint32_t current_depth;
rtems_malloc_statistics_t *s = &rtems_malloc_statistics;
if ( !pointer )
46f5e: 4a80 tstl %d0
46f60: 674c beqs 46fae <rtems_malloc_statistics_at_malloc+0x60><== NEVER TAKEN
return;
_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
46f62: 486e fffc pea %fp@(-4)
MSBUMP(lifetime_allocated, actual_size);
46f66: 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);
46f68: 2f00 movel %d0,%sp@- 46f6a: 2f39 0006 3e70 movel 63e70 <RTEMS_Malloc_Heap>,%sp@- 46f70: 4eb9 0004 cf84 jsr 4cf84 <_Protected_heap_Get_block_size>
MSBUMP(lifetime_allocated, actual_size);
46f76: 262e fffc movel %fp@(-4),%d3
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
46f7a: 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);
46f7e: 2039 0006 5f84 movel 65f84 <rtems_malloc_statistics+0x1c>,%d0 46f84: d6b9 0006 5f88 addl 65f88 <rtems_malloc_statistics+0x20>,%d3 46f8a: d580 addxl %d0,%d2
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
46f8c: 2003 movel %d3,%d0 46f8e: 90b9 0006 5f90 subl 65f90 <rtems_malloc_statistics+0x28>,%d0
if ( !pointer )
return;
_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
MSBUMP(lifetime_allocated, actual_size);
46f94: 23c2 0006 5f84 movel %d2,65f84 <rtems_malloc_statistics+0x1c> 46f9a: 23c3 0006 5f88 movel %d3,65f88 <rtems_malloc_statistics+0x20>
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
46fa0: b0b9 0006 5f80 cmpl 65f80 <rtems_malloc_statistics+0x18>,%d0
46fa6: 6306 blss 46fae <rtems_malloc_statistics_at_malloc+0x60><== NEVER TAKEN
s->max_depth = current_depth;
46fa8: 23c0 0006 5f80 movel %d0,65f80 <rtems_malloc_statistics+0x18>
}
46fae: 242e fff4 movel %fp@(-12),%d2 46fb2: 262e fff8 movel %fp@(-8),%d3
46fb6: 4e5e unlk %fp <== NOT EXECUTED
0004f72c <rtems_memalign>:
int rtems_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
4f72c: 4e56 0000 linkw %fp,#0 4f730: 2f0a movel %a2,%sp@- 4f732: 246e 0008 moveal %fp@(8),%a2 4f736: 2f02 movel %d2,%sp@-
void *return_this;
/*
* Parameter error checks
*/
if ( !pointer )
4f738: 4a8a tstl %a2
4f73a: 675e beqs 4f79a <rtems_memalign+0x6e> <== NEVER TAKEN
return EINVAL;
*pointer = NULL;
4f73c: 4292 clrl %a2@
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
4f73e: 7003 moveq #3,%d0 4f740: b0b9 0006 4042 cmpl 64042 <_System_state_Current>,%d0
4f746: 6748 beqs 4f790 <rtems_memalign+0x64> <== ALWAYS TAKEN
return EINVAL;
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
4f748: 4eb9 0004 4098 jsr 44098 <malloc_deferred_frees_process>
Heap_Control *heap,
uintptr_t size,
uintptr_t alignment
)
{
return
4f74e: 42a7 clrl %sp@- 4f750: 2f2e 000c movel %fp@(12),%sp@- 4f754: 2f2e 0010 movel %fp@(16),%sp@- 4f758: 2f39 0006 24d0 movel 624d0 <RTEMS_Malloc_Heap>,%sp@- 4f75e: 4eb9 0004 95fc jsr 495fc <_Protected_heap_Allocate_aligned_with_boundary>
return_this = _Protected_heap_Allocate_aligned(
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
4f764: 4fef 0010 lea %sp@(16),%sp 4f768: 2400 movel %d0,%d2
4f76a: 673c beqs 4f7a8 <rtems_memalign+0x7c> <== NEVER TAKEN
return ENOMEM;
/*
* If configured, update the more involved statistics
*/
if ( rtems_malloc_statistics_helpers )
4f76c: 2079 0006 2c76 moveal 62c76 <rtems_malloc_statistics_helpers>,%a0 4f772: 4a88 tstl %a0
4f774: 670a beqs 4f780 <rtems_memalign+0x54> <== ALWAYS TAKEN
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
4f776: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f778: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 4f77c: 4e90 jsr %a0@ <== NOT EXECUTED 4f77e: 588f addql #4,%sp <== NOT EXECUTED
*pointer = return_this;
4f780: 2482 movel %d2,%a2@
return 0; }
4f782: 242e fff8 movel %fp@(-8),%d2
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
4f786: 4280 clrl %d0
}
4f788: 246e fffc moveal %fp@(-4),%a2 4f78c: 4e5e unlk %fp 4f78e: 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() )
4f790: 4eb9 0004 4058 jsr 44058 <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()) &&
4f796: 4a00 tstb %d0
4f798: 66ae bnes 4f748 <rtems_memalign+0x1c> <== ALWAYS TAKEN
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f79a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/*
* 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() )
return EINVAL;
4f79e: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f7a0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4f7a4: 4e5e unlk %fp <== NOT EXECUTED 4f7a6: 4e75 rts <== NOT EXECUTED 4f7a8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
return ENOMEM;
4f7ac: 700c moveq #12,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f7ae: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4f7b2: 4e5e unlk %fp <== NOT EXECUTED
...
000562dc <rtems_message_queue_broadcast>:
rtems_id id,
const void *buffer,
size_t size,
uint32_t *count
)
{
562dc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 562e0: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 562e4: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 562e8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 562ec: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status core_status;
if ( !buffer )
562f0: 4a82 tstl %d2 <== NOT EXECUTED 562f2: 6762 beqs 56356 <rtems_message_queue_broadcast+0x7a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !count )
562f4: 4a83 tstl %d3 <== NOT EXECUTED 562f6: 675e beqs 56356 <rtems_message_queue_broadcast+0x7a><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
562f8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 562fc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 562fe: 4879 0007 f3ba pea 7f3ba <_Message_queue_Information> <== NOT EXECUTED 56304: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
5630a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5630e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56312: 6636 bnes 5634a <rtems_message_queue_broadcast+0x6e><== NOT EXECUTED
case OBJECTS_LOCAL:
core_status = _CORE_message_queue_Broadcast(
56314: 2f03 movel %d3,%sp@- <== NOT EXECUTED 56316: 2040 moveal %d0,%a0 <== NOT EXECUTED 56318: 42a7 clrl %sp@- <== NOT EXECUTED 5631a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5631c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 56320: 2f02 movel %d2,%sp@- <== NOT EXECUTED 56322: 4868 0014 pea %a0@(20) <== NOT EXECUTED 56326: 4eb9 0005 9d54 jsr 59d54 <_CORE_message_queue_Broadcast> <== NOT EXECUTED 5632c: 2400 movel %d0,%d2 <== NOT EXECUTED
NULL,
#endif
count
);
_Thread_Enable_dispatch();
5632e: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return
56334: 2f02 movel %d2,%sp@- <== NOT EXECUTED 56336: 4eb9 0005 66e0 jsr 566e0 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 5633c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56340: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 56346: 4e5e unlk %fp <== NOT EXECUTED 56348: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5634a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5634c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 56352: 4e5e unlk %fp <== NOT EXECUTED 56354: 4e75 rts <== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56356: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56358: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5635e: 4e5e unlk %fp <== NOT EXECUTED
...
0004ed68 <rtems_message_queue_create>:
uint32_t count,
size_t max_message_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
4ed68: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4ed6c: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4ed70: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4ed74: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4ed78: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 4ed7c: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
CORE_message_queue_Attributes the_msgq_attributes;
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
if ( !rtems_is_name_valid( name ) )
4ed80: 4a82 tstl %d2 <== NOT EXECUTED 4ed82: 6726 beqs 4edaa <rtems_message_queue_create+0x42><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
4ed84: 4a8a tstl %a2 <== NOT EXECUTED 4ed86: 6700 009c beqw 4ee24 <rtems_message_queue_create+0xbc><== NOT EXECUTED
if ( (is_global = _Attributes_Is_global( attribute_set ) ) &&
!_System_state_Is_multiprocessing )
return RTEMS_MP_NOT_CONFIGURED;
#endif
if ( count == 0 )
4ed8a: 4a83 tstl %d3 <== NOT EXECUTED 4ed8c: 6710 beqs 4ed9e <rtems_message_queue_create+0x36><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( max_message_size == 0 )
4ed8e: 4a84 tstl %d4 <== NOT EXECUTED 4ed90: 6624 bnes 4edb6 <rtems_message_queue_create+0x4e><== NOT EXECUTED
return RTEMS_INVALID_SIZE;
4ed92: 7008 moveq #8,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed94: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ed9a: 4e5e unlk %fp <== NOT EXECUTED 4ed9c: 4e75 rts <== NOT EXECUTED
!_System_state_Is_multiprocessing )
return RTEMS_MP_NOT_CONFIGURED;
#endif
if ( count == 0 )
return RTEMS_INVALID_NUMBER;
4ed9e: 700a moveq #10,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4eda0: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4eda6: 4e5e unlk %fp <== NOT EXECUTED 4eda8: 4e75 rts <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4edaa: 7003 moveq #3,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4edac: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4edb2: 4e5e unlk %fp <== NOT EXECUTED 4edb4: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4edb6: 2039 0006 9ca4 movel 69ca4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4edbc: 5280 addql #1,%d0 <== NOT EXECUTED 4edbe: 23c0 0006 9ca4 movel %d0,69ca4 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#endif
#endif
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
4edc4: 4eb9 0005 560c jsr 5560c <_Message_queue_Allocate> <== NOT EXECUTED 4edca: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( !the_message_queue ) {
4edcc: 4a80 tstl %d0 <== NOT EXECUTED 4edce: 6700 008a beqw 4ee5a <rtems_message_queue_create+0xf2><== NOT EXECUTED
#endif
the_message_queue->attribute_set = attribute_set;
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4edd2: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED 4edd6: 204e moveal %fp,%a0 <== NOT EXECUTED 4edd8: 44c0 movew %d0,%ccr <== NOT EXECUTED 4edda: 56c0 sne %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4eddc: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4ede0: 49c0 extbl %d0 <== NOT EXECUTED 4ede2: 5280 addql #1,%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4ede4: 2741 0010 movel %d1,%a3@(16) <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4ede8: 2100 movel %d0,%a0@- <== NOT EXECUTED
else
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
if ( ! _CORE_message_queue_Initialize(
4edea: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4edec: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4edee: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4edf0: 486b 0014 pea %a3@(20) <== NOT EXECUTED 4edf4: 4eb9 0005 0170 jsr 50170 <_CORE_message_queue_Initialize> <== NOT EXECUTED 4edfa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4edfe: 4a00 tstb %d0 <== NOT EXECUTED 4ee00: 662e bnes 4ee30 <rtems_message_queue_create+0xc8><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Message_queue_Free (
Message_queue_Control *the_message_queue
)
{
_Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
4ee02: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4ee04: 4879 0006 a4e6 pea 6a4e6 <_Message_queue_Information> <== NOT EXECUTED 4ee0a: 4eb9 0005 1194 jsr 51194 <_Objects_Free> <== NOT EXECUTED
_Objects_MP_Close(
&_Message_queue_Information, the_message_queue->Object.id);
#endif
_Message_queue_Free( the_message_queue );
_Thread_Enable_dispatch();
4ee10: 4eb9 0005 1c96 jsr 51c96 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
4ee16: 508f addql #8,%sp <== NOT EXECUTED 4ee18: 700d moveq #13,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee1a: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ee20: 4e5e unlk %fp <== NOT EXECUTED 4ee22: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4ee24: 7009 moveq #9,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee26: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ee2c: 4e5e unlk %fp <== NOT EXECUTED 4ee2e: 4e75 rts <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4ee30: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee34: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee36: 2079 0006 a4fe moveal 6a4fe <_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee3c: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee3e: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4ee42: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Message_queue_Information,
&the_message_queue->Object,
(Objects_Name) name
);
*id = the_message_queue->Object.id;
4ee46: 2480 movel %d0,%a2@ <== NOT EXECUTED
name,
0
);
#endif
_Thread_Enable_dispatch();
4ee48: 4eb9 0005 1c96 jsr 51c96 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
4ee4e: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
0
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4ee54: 4280 clrl %d0 <== NOT EXECUTED
}
4ee56: 4e5e unlk %fp <== NOT EXECUTED 4ee58: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
if ( !the_message_queue ) {
_Thread_Enable_dispatch();
4ee5a: 4eb9 0005 1c96 jsr 51c96 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4ee60: 7005 moveq #5,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee62: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ee68: 4e5e unlk %fp <== NOT EXECUTED
00056468 <rtems_message_queue_delete>:
*/
rtems_status_code rtems_message_queue_delete(
rtems_id id
)
{
56468: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5646c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
5646e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56472: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56476: 4879 0007 f3ba pea 7f3ba <_Message_queue_Information> <== NOT EXECUTED 5647c: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
56482: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56486: 2440 moveal %d0,%a2 <== NOT EXECUTED 56488: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5648c: 6640 bnes 564ce <rtems_message_queue_delete+0x66><== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Message_queue_Information,
5648e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 56490: 4879 0007 f3ba pea 7f3ba <_Message_queue_Information> <== NOT EXECUTED 56496: 4eb9 0005 b504 jsr 5b504 <_Objects_Close> <== NOT EXECUTED
&the_message_queue->Object );
_CORE_message_queue_Close(
5649c: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 564a0: 42a7 clrl %sp@- <== NOT EXECUTED 564a2: 486a 0014 pea %a2@(20) <== NOT EXECUTED 564a6: 4eb9 0005 9de0 jsr 59de0 <_CORE_message_queue_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Message_queue_Free (
Message_queue_Control *the_message_queue
)
{
_Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
564ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 564ae: 4879 0007 f3ba pea 7f3ba <_Message_queue_Information> <== NOT EXECUTED 564b4: 4eb9 0005 b7c8 jsr 5b7c8 <_Objects_Free> <== NOT EXECUTED
0, /* Not used */
0
);
}
#endif
_Thread_Enable_dispatch();
564ba: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
564c0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0
);
}
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
564c4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 564c8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
564ca: 4e5e unlk %fp <== NOT EXECUTED 564cc: 4e75 rts <== NOT EXECUTED 564ce: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
564d2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
564d4: 4e5e unlk %fp <== NOT EXECUTED
000564d8 <rtems_message_queue_flush>:
rtems_status_code rtems_message_queue_flush(
rtems_id id,
uint32_t *count
)
{
564d8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 564dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 564de: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
564e2: 4a8a tstl %a2 <== NOT EXECUTED 564e4: 6748 beqs 5652e <rtems_message_queue_flush+0x56> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
564e6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 564ea: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 564ee: 4879 0007 f3ba pea 7f3ba <_Message_queue_Information> <== NOT EXECUTED 564f4: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
564fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 564fe: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56502: 6620 bnes 56524 <rtems_message_queue_flush+0x4c> <== NOT EXECUTED
case OBJECTS_LOCAL:
*count = _CORE_message_queue_Flush( &the_message_queue->message_queue );
56504: 2040 moveal %d0,%a0 <== NOT EXECUTED 56506: 4868 0014 pea %a0@(20) <== NOT EXECUTED 5650a: 4eb9 0005 9e34 jsr 59e34 <_CORE_message_queue_Flush> <== NOT EXECUTED 56510: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
56512: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56518: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
*count = _CORE_message_queue_Flush( &the_message_queue->message_queue );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
5651c: 588f addql #4,%sp <== NOT EXECUTED 5651e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56520: 4e5e unlk %fp <== NOT EXECUTED 56522: 4e75 rts <== NOT EXECUTED 56524: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56528: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5652a: 4e5e unlk %fp <== NOT EXECUTED 5652c: 4e75 rts <== NOT EXECUTED 5652e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56532: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56534: 4e5e unlk %fp <== NOT EXECUTED
00056538 <rtems_message_queue_get_number_pending>:
rtems_status_code rtems_message_queue_get_number_pending(
rtems_id id,
uint32_t *count
)
{
56538: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5653c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5653e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
56542: 4a8a tstl %a2 <== NOT EXECUTED 56544: 673e beqs 56584 <rtems_message_queue_get_number_pending+0x4c><== NOT EXECUTED 56546: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5654a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5654e: 4879 0007 f3ba pea 7f3ba <_Message_queue_Information> <== NOT EXECUTED 56554: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
5655a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5655e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56562: 6616 bnes 5657a <rtems_message_queue_get_number_pending+0x42><== NOT EXECUTED
case OBJECTS_LOCAL:
*count = the_message_queue->message_queue.number_of_pending_messages;
56564: 2040 moveal %d0,%a0 <== NOT EXECUTED 56566: 24a8 005c movel %a0@(92),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
5656a: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56570: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
*count = the_message_queue->message_queue.number_of_pending_messages;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
56574: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56576: 4e5e unlk %fp <== NOT EXECUTED 56578: 4e75 rts <== NOT EXECUTED 5657a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5657e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56580: 4e5e unlk %fp <== NOT EXECUTED 56582: 4e75 rts <== NOT EXECUTED 56584: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56588: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5658a: 4e5e unlk %fp <== NOT EXECUTED
...
0004ee6c <rtems_message_queue_ident>:
rtems_status_code rtems_message_queue_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4ee6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
4ee70: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4ee74: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4ee78: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ee7c: 4879 0006 a4e6 pea 6a4e6 <_Message_queue_Information> <== NOT EXECUTED 4ee82: 4eb9 0005 14b0 jsr 514b0 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
node,
id
);
return _Status_Object_name_errors_to_status[ status ];
4ee88: 41f9 0006 738a lea 6738a <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4ee8e: 4e5e unlk %fp <== NOT EXECUTED 4ee90: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004ee98 <rtems_message_queue_receive>:
void *buffer,
size_t *size,
rtems_option option_set,
rtems_interval timeout
)
{
4ee98: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4ee9c: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4eea0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4eea4: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
bool wait;
if ( !buffer )
4eea8: 4a82 tstl %d2 <== NOT EXECUTED 4eeaa: 6776 beqs 4ef22 <rtems_message_queue_receive+0x8a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
4eeac: 4a83 tstl %d3 <== NOT EXECUTED 4eeae: 6772 beqs 4ef22 <rtems_message_queue_receive+0x8a><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
4eeb0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4eeb4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4eeb8: 4879 0006 a4e6 pea 6a4e6 <_Message_queue_Information> <== NOT EXECUTED 4eebe: 4eb9 0005 1300 jsr 51300 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4eec4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4eec8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4eecc: 6648 bnes 4ef16 <rtems_message_queue_receive+0x7e><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (
rtems_option option_set
)
{
return (option_set & RTEMS_NO_WAIT) ? true : false;
4eece: 7201 moveq #1,%d1 <== NOT EXECUTED
if ( _Options_Is_no_wait( option_set ) )
wait = false;
else
wait = true;
_CORE_message_queue_Seize(
4eed0: 7801 moveq #1,%d4 <== NOT EXECUTED 4eed2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4eed4: c2ae 0014 andl %fp@(20),%d1 <== NOT EXECUTED 4eed8: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4eedc: b384 eorl %d1,%d4 <== NOT EXECUTED 4eede: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4eee0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4eee2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4eee4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4eee8: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4eeec: 4eb9 0005 0230 jsr 50230 <_CORE_message_queue_Seize> <== NOT EXECUTED
buffer,
size,
wait,
timeout
);
_Thread_Enable_dispatch();
4eef2: 4eb9 0005 1c96 jsr 51c96 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Message_queue_Translate_core_message_queue_return_code(
_Thread_Executing->Wait.return_code
4eef8: 2079 0006 a134 moveal 6a134 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
size,
wait,
timeout
);
_Thread_Enable_dispatch();
return _Message_queue_Translate_core_message_queue_return_code(
4eefe: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4ef02: 4eb9 0004 efbc jsr 4efbc <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4ef08: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef0c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4ef12: 4e5e unlk %fp <== NOT EXECUTED 4ef14: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ef16: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef18: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4ef1e: 4e5e unlk %fp <== NOT EXECUTED 4ef20: 4e75 rts <== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
4ef22: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef24: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4ef2a: 4e5e unlk %fp <== NOT EXECUTED
...
0004ef30 <rtems_message_queue_send>:
rtems_status_code rtems_message_queue_send(
rtems_id id,
const void *buffer,
size_t size
)
{
4ef30: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4ef34: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef36: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4ef3a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef3c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
4ef40: 676c beqs 4efae <rtems_message_queue_send+0x7e> <== NOT EXECUTED 4ef42: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ef46: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef48: 4879 0006 a4e6 pea 6a4e6 <_Message_queue_Information> <== NOT EXECUTED 4ef4e: 4eb9 0005 1300 jsr 51300 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4ef54: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ef58: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ef5c: 6642 bnes 4efa0 <rtems_message_queue_send+0x70> <== NOT EXECUTED
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support,
bool wait,
Watchdog_Interval timeout
)
{
return _CORE_message_queue_Submit(
4ef5e: 42a7 clrl %sp@- <== NOT EXECUTED 4ef60: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ef62: 42a7 clrl %sp@- <== NOT EXECUTED 4ef64: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4ef6a: 42a7 clrl %sp@- <== NOT EXECUTED 4ef6c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef6e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4ef72: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef74: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4ef78: 4eb9 0005 0368 jsr 50368 <_CORE_message_queue_Submit> <== NOT EXECUTED
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
4ef7e: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 4ef82: 2400 movel %d0,%d2 <== NOT EXECUTED 4ef84: 4eb9 0005 1c96 jsr 51c96 <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* Since this API does not allow for blocking sends, we can directly
* return the returned status.
*/
return _Message_queue_Translate_core_message_queue_return_code(status);
4ef8a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef8c: 4eb9 0004 efbc jsr 4efbc <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef92: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
/*
* Since this API does not allow for blocking sends, we can directly
* return the returned status.
*/
return _Message_queue_Translate_core_message_queue_return_code(status);
4ef96: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef98: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4ef9c: 4e5e unlk %fp <== NOT EXECUTED 4ef9e: 4e75 rts <== NOT EXECUTED 4efa0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4efa4: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4efa6: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4efaa: 4e5e unlk %fp <== NOT EXECUTED 4efac: 4e75 rts <== NOT EXECUTED 4efae: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
4efb2: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4efb4: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4efb8: 4e5e unlk %fp <== NOT EXECUTED
000566f8 <rtems_message_queue_urgent>:
rtems_status_code rtems_message_queue_urgent(
rtems_id id,
const void *buffer,
size_t size
)
{
566f8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 566fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 566fe: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 56702: 2f02 movel %d2,%sp@- <== NOT EXECUTED 56704: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
56708: 676c beqs 56776 <rtems_message_queue_urgent+0x7e><== NOT EXECUTED 5670a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5670e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 56710: 4879 0007 f3ba pea 7f3ba <_Message_queue_Information> <== NOT EXECUTED 56716: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
5671c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56720: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56724: 6642 bnes 56768 <rtems_message_queue_urgent+0x70><== NOT EXECUTED
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support,
bool wait,
Watchdog_Interval timeout
)
{
return _CORE_message_queue_Submit(
56726: 42a7 clrl %sp@- <== NOT EXECUTED 56728: 2040 moveal %d0,%a0 <== NOT EXECUTED 5672a: 42a7 clrl %sp@- <== NOT EXECUTED 5672c: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED 56732: 42a7 clrl %sp@- <== NOT EXECUTED 56734: 2f03 movel %d3,%sp@- <== NOT EXECUTED 56736: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5673a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5673c: 4868 0014 pea %a0@(20) <== NOT EXECUTED 56740: 4eb9 0005 a0a4 jsr 5a0a4 <_CORE_message_queue_Submit> <== NOT EXECUTED
id,
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
56746: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 5674a: 2400 movel %d0,%d2 <== NOT EXECUTED 5674c: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* Since this API does not allow for blocking sends, we can directly
* return the returned status.
*/
return _Message_queue_Translate_core_message_queue_return_code(status);
56752: 2f02 movel %d2,%sp@- <== NOT EXECUTED 56754: 4eb9 0005 66e0 jsr 566e0 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5675a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
/*
* Since this API does not allow for blocking sends, we can directly
* return the returned status.
*/
return _Message_queue_Translate_core_message_queue_return_code(status);
5675e: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56760: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 56764: 4e5e unlk %fp <== NOT EXECUTED 56766: 4e75 rts <== NOT EXECUTED 56768: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5676c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5676e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 56772: 4e5e unlk %fp <== NOT EXECUTED 56774: 4e75 rts <== NOT EXECUTED 56776: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
5677a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5677c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 56780: 4e5e unlk %fp <== NOT EXECUTED
0004dacc <rtems_mkdir>:
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4dacc: 4e56 ff90 linkw %fp,#-112 <== NOT EXECUTED 4dad0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int success = 0; char *dup_path = strdup(path);
4dad4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4dad8: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
int success = 0; char *dup_path = strdup(path);
4dadc: 4eb9 0005 173c jsr 5173c <strdup> <== NOT EXECUTED
if (dup_path != NULL) {
4dae2: 588f addql #4,%sp <== NOT EXECUTED
int
rtems_mkdir(const char *path, mode_t mode)
{
int success = 0;
char *dup_path = strdup(path);
4dae4: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (dup_path != NULL) {
4dae6: 4a80 tstl %d0 <== NOT EXECUTED 4dae8: 6700 0138 beqw 4dc22 <rtems_mkdir+0x156> <== NOT EXECUTED
char *p;
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
4daec: 742f moveq #47,%d2 <== NOT EXECUTED 4daee: 1013 moveb %a3@,%d0 <== NOT EXECUTED 4daf0: 1200 moveb %d0,%d1 <== NOT EXECUTED 4daf2: 49c1 extbl %d1 <== NOT EXECUTED 4daf4: b481 cmpl %d1,%d2 <== NOT EXECUTED 4daf6: 6700 014a beqw 4dc42 <rtems_mkdir+0x176> <== NOT EXECUTED 4dafa: 244b moveal %a3,%a2 <== NOT EXECUTED
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4dafc: 49ea 0001 lea %a2@(1),%a4 <== NOT EXECUTED 4db00: 4283 clrl %d3 <== NOT EXECUTED 4db02: 7201 moveq #1,%d1 <== NOT EXECUTED 4db04: 4bf9 0004 47e0 lea 447e0 <mkdir>,%a5 <== NOT EXECUTED
first = 0;
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
4db0a: 2e3c 0005 078c movel #329612,%d7 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4db10: 283c 0004 dd30 movel #318768,%d4 <== NOT EXECUTED
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
if (p[0] == '\0')
4db16: 4a00 tstb %d0 <== NOT EXECUTED 4db18: 6710 beqs 4db2a <rtems_mkdir+0x5e> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
4db1a: 49c0 extbl %d0 <== NOT EXECUTED 4db1c: 742f moveq #47,%d2 <== NOT EXECUTED 4db1e: b480 cmpl %d0,%d2 <== NOT EXECUTED 4db20: 6738 beqs 4db5a <rtems_mkdir+0x8e> <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
4db22: 528a addql #1,%a2 <== NOT EXECUTED 4db24: 101c moveb %a4@+,%d0 <== NOT EXECUTED
if (p[0] == '\0')
4db26: 4a00 tstb %d0 <== NOT EXECUTED 4db28: 66f0 bnes 4db1a <rtems_mkdir+0x4e> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4db2a: 7401 moveq #1,%d2 <== NOT EXECUTED 4db2c: 4212 clrb %a2@ <== NOT EXECUTED
if (!last && p[1] == '\0')
last = 1;
if (first) {
4db2e: 4a81 tstl %d1 <== NOT EXECUTED 4db30: 6650 bnes 4db82 <rtems_mkdir+0xb6> <== NOT EXECUTED
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4db32: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4db38: 4a82 tstl %d2 <== NOT EXECUTED 4db3a: 662e bnes 4db6a <rtems_mkdir+0x9e> <== NOT EXECUTED
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4db3c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db3e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4db40: 4e95 jsr %a5@ <== NOT EXECUTED 4db42: 508f addql #8,%sp <== NOT EXECUTED 4db44: 4a80 tstl %d0 <== NOT EXECUTED 4db46: 6d5c blts 4dba4 <rtems_mkdir+0xd8> <== NOT EXECUTED
} else {
retval = 0;
break;
}
}
if (!last)
4db48: 4a82 tstl %d2 <== NOT EXECUTED 4db4a: 6600 00c0 bnew 4dc0c <rtems_mkdir+0x140> <== NOT EXECUTED
*p = '/';
4db4e: 4281 clrl %d1 <== NOT EXECUTED 4db50: 14bc 002f moveb #47,%a2@ <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
4db54: 528a addql #1,%a2 <== NOT EXECUTED 4db56: 101c moveb %a4@+,%d0 <== NOT EXECUTED 4db58: 60cc bras 4db26 <rtems_mkdir+0x5a> <== NOT EXECUTED
if (p[0] == '\0')
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4db5a: 4212 clrb %a2@ <== NOT EXECUTED
if (!last && p[1] == '\0')
4db5c: 4a14 tstb %a4@ <== NOT EXECUTED 4db5e: 57c2 seq %d2 <== NOT EXECUTED 4db60: 49c2 extbl %d2 <== NOT EXECUTED 4db62: 4482 negl %d2 <== NOT EXECUTED
last = 1;
if (first) {
4db64: 4a81 tstl %d1 <== NOT EXECUTED 4db66: 67ca beqs 4db32 <rtems_mkdir+0x66> <== NOT EXECUTED 4db68: 6018 bras 4db82 <rtems_mkdir+0xb6> <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4db6a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4db6c: 2044 moveal %d4,%a0 <== NOT EXECUTED 4db6e: 4e90 jsr %a0@ <== NOT EXECUTED 4db70: 588f addql #4,%sp <== NOT EXECUTED
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4db72: 2005 movel %d5,%d0 <== NOT EXECUTED 4db74: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db76: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4db78: 4e95 jsr %a5@ <== NOT EXECUTED 4db7a: 508f addql #8,%sp <== NOT EXECUTED 4db7c: 4a80 tstl %d0 <== NOT EXECUTED 4db7e: 6cc8 bges 4db48 <rtems_mkdir+0x7c> <== NOT EXECUTED 4db80: 6022 bras 4dba4 <rtems_mkdir+0xd8> <== NOT EXECUTED
* mkdir [-m mode] dir
*
* We change the user's umask and then restore it,
* instead of doing chmod's.
*/
oumask = umask(0);
4db82: 42a7 clrl %sp@- <== NOT EXECUTED 4db84: 2044 moveal %d4,%a0 <== NOT EXECUTED 4db86: 4e90 jsr %a0@ <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4db88: 2044 moveal %d4,%a0 <== NOT EXECUTED
* mkdir [-m mode] dir
*
* We change the user's umask and then restore it,
* instead of doing chmod's.
*/
oumask = umask(0);
4db8a: 2600 movel %d0,%d3 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4db8c: 0280 ffff ff3f andil #-193,%d0 <== NOT EXECUTED 4db92: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db94: 4e90 jsr %a0@ <== NOT EXECUTED 4db96: 508f addql #8,%sp <== NOT EXECUTED
first = 0;
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4db98: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4db9e: 4a82 tstl %d2 <== NOT EXECUTED 4dba0: 679a beqs 4db3c <rtems_mkdir+0x70> <== NOT EXECUTED 4dba2: 60c6 bras 4db6a <rtems_mkdir+0x9e> <== NOT EXECUTED
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
4dba4: 2047 moveal %d7,%a0 <== NOT EXECUTED 4dba6: 2c3c 0005 078c movel #329612,%d6 <== NOT EXECUTED 4dbac: 4e90 jsr %a0@ <== NOT EXECUTED 4dbae: 7211 moveq #17,%d1 <== NOT EXECUTED 4dbb0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dbb2: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4dbb4: 670c beqs 4dbc2 <rtems_mkdir+0xf6> <== NOT EXECUTED 4dbb6: 2046 moveal %d6,%a0 <== NOT EXECUTED 4dbb8: 4e90 jsr %a0@ <== NOT EXECUTED 4dbba: 7215 moveq #21,%d1 <== NOT EXECUTED 4dbbc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dbbe: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4dbc0: 6664 bnes 4dc26 <rtems_mkdir+0x15a> <== NOT EXECUTED
if (stat(path, &sb) < 0) {
4dbc2: 486e ffba pea %fp@(-70) <== NOT EXECUTED 4dbc6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4dbc8: 4eb9 0004 dc7c jsr 4dc7c <stat> <== NOT EXECUTED 4dbce: 508f addql #8,%sp <== NOT EXECUTED 4dbd0: 4a80 tstl %d0 <== NOT EXECUTED 4dbd2: 6d52 blts 4dc26 <rtems_mkdir+0x15a> <== NOT EXECUTED
retval = 0;
break;
} else if (!S_ISDIR(sb.st_mode)) {
4dbd4: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED 4dbd8: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED 4dbde: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED 4dbe4: 6700 ff62 beqw 4db48 <rtems_mkdir+0x7c> <== NOT EXECUTED
if (last)
4dbe8: 4a82 tstl %d2 <== NOT EXECUTED 4dbea: 677a beqs 4dc66 <rtems_mkdir+0x19a> <== NOT EXECUTED
errno = EEXIST;
4dbec: 2046 moveal %d6,%a0 <== NOT EXECUTED 4dbee: 4e90 jsr %a0@ <== NOT EXECUTED 4dbf0: 7211 moveq #17,%d1 <== NOT EXECUTED 4dbf2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dbf4: 2081 movel %d1,%a0@ <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
4dbf6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4dbf8: 4eb9 0004 40c0 jsr 440c0 <free> <== NOT EXECUTED 4dbfe: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dc00: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4dc02: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4dc08: 4e5e unlk %fp <== NOT EXECUTED 4dc0a: 4e75 rts <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
4dc0c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4dc0e: 4eb9 0004 40c0 jsr 440c0 <free> <== NOT EXECUTED 4dc14: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dc16: 4280 clrl %d0 <== NOT EXECUTED
}
4dc18: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4dc1e: 4e5e unlk %fp <== NOT EXECUTED 4dc20: 4e75 rts <== NOT EXECUTED
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
}
return success != 0 ? 0 : -1;
4dc22: 70ff moveq #-1,%d0 <== NOT EXECUTED 4dc24: 60dc bras 4dc02 <rtems_mkdir+0x136> <== NOT EXECUTED
}
}
if (!last)
*p = '/';
}
if (!first && !last)
4dc26: 4a82 tstl %d2 <== NOT EXECUTED 4dc28: 66cc bnes 4dbf6 <rtems_mkdir+0x12a> <== NOT EXECUTED
(void)umask(oumask);
4dc2a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4dc2c: 4eb9 0004 dd30 jsr 4dd30 <umask> <== NOT EXECUTED 4dc32: 588f addql #4,%sp <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
4dc34: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4dc36: 4eb9 0004 40c0 jsr 440c0 <free> <== NOT EXECUTED 4dc3c: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dc3e: 70ff moveq #-1,%d0 <== NOT EXECUTED 4dc40: 60c0 bras 4dc02 <rtems_mkdir+0x136> <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4dc42: 45eb 0001 lea %a3@(1),%a2 <== NOT EXECUTED
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4dc46: 49ea 0001 lea %a2@(1),%a4 <== NOT EXECUTED 4dc4a: 4283 clrl %d3 <== NOT EXECUTED 4dc4c: 7201 moveq #1,%d1 <== NOT EXECUTED 4dc4e: 4bf9 0004 47e0 lea 447e0 <mkdir>,%a5 <== NOT EXECUTED
first = 0;
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
4dc54: 2e3c 0005 078c movel #329612,%d7 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4dc5a: 283c 0004 dd30 movel #318768,%d4 <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4dc60: 1012 moveb %a2@,%d0 <== NOT EXECUTED 4dc62: 6000 feb2 braw 4db16 <rtems_mkdir+0x4a> <== NOT EXECUTED
break;
} else if (!S_ISDIR(sb.st_mode)) {
if (last)
errno = EEXIST;
else
errno = ENOTDIR;
4dc66: 2046 moveal %d6,%a0 <== NOT EXECUTED 4dc68: 4e90 jsr %a0@ <== NOT EXECUTED 4dc6a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dc6c: 7014 moveq #20,%d0 <== NOT EXECUTED 4dc6e: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
if (!last)
*p = '/';
}
if (!first && !last)
(void)umask(oumask);
4dc70: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4dc72: 4eb9 0004 dd30 jsr 4dd30 <umask> <== NOT EXECUTED 4dc78: 588f addql #4,%sp <== NOT EXECUTED 4dc7a: 60b8 bras 4dc34 <rtems_mkdir+0x168> <== NOT EXECUTED
0004644c <rtems_object_api_maximum_class>:
#include <rtems/rtems/types.h>
int rtems_object_api_maximum_class(
int api
)
{
4644c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_API_maximum_class(api); }
46450: 4e5e unlk %fp <== NOT EXECUTED
int rtems_object_api_maximum_class(
int api
)
{
return _Objects_API_maximum_class(api);
46452: 4ef9 0004 7c88 jmp 47c88 <_Objects_API_maximum_class> <== NOT EXECUTED
00046458 <rtems_object_api_minimum_class>:
uint32_t api
)
{
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
46458: 7203 moveq #3,%d1 <== NOT EXECUTED
#include <rtems/rtems/types.h>
uint32_t rtems_object_api_minimum_class(
uint32_t api
)
{
4645a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
4645e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46462: 5380 subql #1,%d0 <== NOT EXECUTED
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
46464: b280 cmpl %d0,%d1 <== NOT EXECUTED 46466: 53c0 sls %d0 <== NOT EXECUTED 46468: 49c0 extbl %d0 <== NOT EXECUTED
}
4646a: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 4646e: 4e5e unlk %fp <== NOT EXECUTED 46470: 8081 orl %d1,%d0 <== NOT EXECUTED
00046474 <rtems_object_get_api_class_name>:
)
{
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
46474: 7001 moveq #1,%d0 <== NOT EXECUTED
const char *rtems_object_get_api_class_name(
int the_api,
int the_class
)
{
46476: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4647a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4647e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
46480: b081 cmpl %d1,%d0 <== NOT EXECUTED 46482: 674e beqs 464d2 <rtems_object_get_api_class_name+0x5e><== NOT EXECUTED
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
46484: 7402 moveq #2,%d2 <== NOT EXECUTED 46486: b481 cmpl %d1,%d2 <== NOT EXECUTED 46488: 6740 beqs 464ca <rtems_object_get_api_class_name+0x56><== NOT EXECUTED
api_assoc = rtems_object_api_classic_assoc;
#ifdef RTEMS_POSIX_API
else if ( the_api == OBJECTS_POSIX_API )
4648a: 143c 0003 moveb #3,%d2 <== NOT EXECUTED
api_assoc = rtems_object_api_posix_assoc;
#endif
else
return "BAD API";
4648e: 203c 0005 de7a movel #384634,%d0 <== NOT EXECUTED
if ( the_api == OBJECTS_INTERNAL_API )
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
api_assoc = rtems_object_api_classic_assoc;
#ifdef RTEMS_POSIX_API
else if ( the_api == OBJECTS_POSIX_API )
46494: b481 cmpl %d1,%d2 <== NOT EXECUTED 46496: 6708 beqs 464a0 <rtems_object_get_api_class_name+0x2c><== NOT EXECUTED
return "BAD API";
class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class );
if ( class_assoc )
return class_assoc->name;
return "BAD CLASS";
}
46498: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4649c: 4e5e unlk %fp <== NOT EXECUTED 4649e: 4e75 rts <== NOT EXECUTED
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
api_assoc = rtems_object_api_classic_assoc;
#ifdef RTEMS_POSIX_API
else if ( the_api == OBJECTS_POSIX_API )
api_assoc = rtems_object_api_posix_assoc;
464a0: 203c 0005 f0c4 movel #389316,%d0 <== NOT EXECUTED
#endif
else
return "BAD API";
class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class );
464a6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 464aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 464ac: 4eb9 0004 b2b4 jsr 4b2b4 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( class_assoc )
464b2: 508f addql #8,%sp <== NOT EXECUTED
else if ( the_api == OBJECTS_POSIX_API )
api_assoc = rtems_object_api_posix_assoc;
#endif
else
return "BAD API";
class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class );
464b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( class_assoc )
return class_assoc->name;
return "BAD CLASS";
464b6: 203c 0005 de82 movel #384642,%d0 <== NOT EXECUTED
api_assoc = rtems_object_api_posix_assoc;
#endif
else
return "BAD API";
class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class );
if ( class_assoc )
464bc: 4a88 tstl %a0 <== NOT EXECUTED 464be: 67d8 beqs 46498 <rtems_object_get_api_class_name+0x24><== NOT EXECUTED
return class_assoc->name;
return "BAD CLASS";
}
464c0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 464c4: 4e5e unlk %fp <== NOT EXECUTED
#endif
else
return "BAD API";
class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class );
if ( class_assoc )
return class_assoc->name;
464c6: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS"; }
464c8: 4e75 rts <== NOT EXECUTED
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
api_assoc = rtems_object_api_classic_assoc;
464ca: 203c 0005 f04c movel #389196,%d0 <== NOT EXECUTED 464d0: 60d4 bras 464a6 <rtems_object_get_api_class_name+0x32><== NOT EXECUTED
{
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
api_assoc = rtems_object_api_internal_assoc;
464d2: 203c 0005 f034 movel #389172,%d0 <== NOT EXECUTED 464d8: 60cc bras 464a6 <rtems_object_get_api_class_name+0x32><== NOT EXECUTED
...
000464dc <rtems_object_get_api_name>:
};
const char *rtems_object_get_api_name(
int api
)
{
464dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
const rtems_assoc_t *api_assoc;
api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api );
464e0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 464e4: 4879 0005 f154 pea 5f154 <rtems_objects_api_assoc> <== NOT EXECUTED 464ea: 4eb9 0004 b2b4 jsr 4b2b4 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( api_assoc )
464f0: 508f addql #8,%sp <== NOT EXECUTED
int api
)
{
const rtems_assoc_t *api_assoc;
api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api );
464f2: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( api_assoc )
return api_assoc->name;
return "BAD CLASS";
464f4: 203c 0005 de82 movel #384642,%d0 <== NOT EXECUTED
)
{
const rtems_assoc_t *api_assoc;
api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api );
if ( api_assoc )
464fa: 4a88 tstl %a0 <== NOT EXECUTED 464fc: 6702 beqs 46500 <rtems_object_get_api_name+0x24> <== NOT EXECUTED
return api_assoc->name;
464fe: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS"; }
46500: 4e5e unlk %fp <== NOT EXECUTED
00047f78 <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
)
{
47f78: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47f7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47f7e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 47f82: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int i;
/*
* Validate parameters and look up information structure.
*/
if ( !info )
47f84: 4a8a tstl %a2 <== NOT EXECUTED 47f86: 6768 beqs 47ff0 <rtems_object_get_class_information+0x78><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
47f88: 3f2e 000e movew %fp@(14),%sp@- <== NOT EXECUTED 47f8c: 4267 clrw %sp@- <== NOT EXECUTED 47f8e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47f92: 4eb9 0004 9cdc jsr 49cdc <_Objects_Get_information> <== NOT EXECUTED
if ( !obj_info )
47f98: 508f addql #8,%sp <== NOT EXECUTED
* Validate parameters and look up information structure.
*/
if ( !info )
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
47f9a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !obj_info )
47f9c: 4a80 tstl %d0 <== NOT EXECUTED 47f9e: 675e beqs 47ffe <rtems_object_get_class_information+0x86><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
/*
* Return information about this object class to the user.
*/
info->minimum_id = obj_info->minimum_id;
47fa0: 24a8 0006 movel %a0@(6),%a2@ <== NOT EXECUTED
info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum;
47fa4: 4282 clrl %d2 <== NOT EXECUTED
/*
* Return information about this object class to the user.
*/
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
47fa6: 2568 000a 0004 movel %a0@(10),%a2@(4) <== NOT EXECUTED
info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum;
47fac: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED
/* * 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;
47fb0: 1568 0010 000c moveb %a0@(16),%a2@(12) <== NOT EXECUTED
info->maximum = obj_info->maximum;
47fb6: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
47fba: 6750 beqs 4800c <rtems_object_get_class_information+0x94><== NOT EXECUTED 47fbc: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 47fc0: 7201 moveq #1,%d1 <== NOT EXECUTED 47fc2: 7001 moveq #1,%d0 <== NOT EXECUTED 47fc4: 93c9 subal %a1,%a1 <== NOT EXECUTED 47fc6: 5280 addql #1,%d0 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
47fc8: 4ab0 1c00 tstl %a0@(00000000,%d1:l:4) <== NOT EXECUTED 47fcc: 6718 beqs 47fe6 <rtems_object_get_class_information+0x6e><== NOT EXECUTED
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++ )
47fce: 2200 movel %d0,%d1 <== NOT EXECUTED 47fd0: b082 cmpl %d2,%d0 <== NOT EXECUTED 47fd2: 63f2 blss 47fc6 <rtems_object_get_class_information+0x4e><== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
47fd4: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47fd8: 4280 clrl %d0 <== NOT EXECUTED
}
47fda: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47fde: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47fe2: 4e5e unlk %fp <== NOT EXECUTED 47fe4: 4e75 rts <== NOT EXECUTED
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++;
47fe6: 5289 addql #1,%a1 <== NOT EXECUTED
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++ )
47fe8: 2200 movel %d0,%d1 <== NOT EXECUTED 47fea: b082 cmpl %d2,%d0 <== NOT EXECUTED 47fec: 63d8 blss 47fc6 <rtems_object_get_class_information+0x4e><== NOT EXECUTED 47fee: 60e4 bras 47fd4 <rtems_object_get_class_information+0x5c><== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47ff0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/*
* Validate parameters and look up information structure.
*/
if ( !info )
return RTEMS_INVALID_ADDRESS;
47ff4: 7009 moveq #9,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47ff6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47ffa: 4e5e unlk %fp <== NOT EXECUTED 47ffc: 4e75 rts <== NOT EXECUTED 47ffe: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( !info )
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
if ( !obj_info )
return RTEMS_INVALID_NUMBER;
48002: 700a moveq #10,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
48004: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48008: 4e5e unlk %fp <== NOT EXECUTED 4800a: 4e75 rts <== NOT EXECUTED
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++ )
4800c: 93c9 subal %a1,%a1 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
4800e: 4280 clrl %d0 <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
48010: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED 48014: 60c4 bras 47fda <rtems_object_get_class_information+0x62><== NOT EXECUTED
...
000477ec <rtems_object_get_classic_name>:
rtems_status_code rtems_object_get_classic_name(
rtems_id id,
rtems_name *name
)
{
477ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 477f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 477f2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Name name_u;
if ( !name )
477f6: 4a8a tstl %a2 <== NOT EXECUTED 477f8: 6726 beqs 47820 <rtems_object_get_classic_name+0x34><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
status = _Objects_Id_to_name( id, &name_u );
477fa: 486e fffc pea %fp@(-4) <== NOT EXECUTED 477fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47802: 4eb9 0004 9534 jsr 49534 <_Objects_Id_to_name> <== NOT EXECUTED
*name = name_u.name_u32;
47808: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
4780c: 41f9 0005 f1a8 lea 5f1a8 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 47812: 508f addql #8,%sp <== NOT EXECUTED
}
47814: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47818: 4e5e unlk %fp <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
status = _Objects_Id_to_name( id, &name_u );
*name = name_u.name_u32;
return _Status_Object_name_errors_to_status[ status ];
4781a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
}
4781e: 4e75 rts <== NOT EXECUTED 47820: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
Objects_Name_or_id_lookup_errors status;
Objects_Name name_u;
if ( !name )
return RTEMS_INVALID_ADDRESS;
47824: 7009 moveq #9,%d0 <== NOT EXECUTED
status = _Objects_Id_to_name( id, &name_u );
*name = name_u.name_u32;
return _Status_Object_name_errors_to_status[ status ];
}
47826: 4e5e unlk %fp <== NOT EXECUTED
...
0004782c <rtems_object_get_name>:
char *rtems_object_get_name(
Objects_Id id,
size_t length,
char *name
)
{
4782c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_name_as_string( id, length, name ); }
47830: 4e5e unlk %fp <== NOT EXECUTED
Objects_Id id,
size_t length,
char *name
)
{
return _Objects_Get_name_as_string( id, length, name );
47832: 4ef9 0004 9800 jmp 49800 <_Objects_Get_name_as_string> <== NOT EXECUTED
00048024 <rtems_object_id_api_maximum>:
#undef rtems_object_id_api_maximum
int rtems_object_id_api_maximum(void)
{
return OBJECTS_APIS_LAST;
}
48024: 7003 moveq #3,%d0 <== NOT EXECUTED
#include <rtems/score/object.h>
#include <rtems/rtems/types.h>
#undef rtems_object_id_api_maximum
int rtems_object_id_api_maximum(void)
{
48026: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_APIS_LAST; }
4802a: 4e5e unlk %fp <== NOT EXECUTED
...
00048030 <rtems_object_id_api_minimum>:
#undef rtems_object_id_api_minimum
int rtems_object_id_api_minimum(void)
{
return OBJECTS_INTERNAL_API;
}
48030: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <rtems/score/object.h>
#include <rtems/rtems/types.h>
#undef rtems_object_id_api_minimum
int rtems_object_id_api_minimum(void)
{
48032: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_INTERNAL_API; }
48036: 4e5e unlk %fp <== NOT EXECUTED
...
0004803c <rtems_object_id_get_api>:
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
4803c: 4280 clrl %d0 <== NOT EXECUTED
int rtems_object_id_get_api(
rtems_id id
)
{
return _Objects_Get_API( id );
}
4803e: 7207 moveq #7,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_api
int rtems_object_id_get_api(
rtems_id id
)
{
48040: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48044: 102e 0008 moveb %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_API( id ); }
48048: 4e5e unlk %fp <== NOT EXECUTED 4804a: c081 andl %d1,%d0 <== NOT EXECUTED
...
00048050 <rtems_object_id_get_class>:
int rtems_object_id_get_class(
rtems_id id
)
{
return _Objects_Get_class( id );
}
48050: 721b moveq #27,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_class
int rtems_object_id_get_class(
rtems_id id
)
{
48052: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48056: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_class( id ); }
4805a: 4e5e unlk %fp <== NOT EXECUTED 4805c: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
00048060 <rtems_object_id_get_index>:
int rtems_object_id_get_index(
rtems_id id
)
{
return _Objects_Get_index( id );
}
48060: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_index
int rtems_object_id_get_index(
rtems_id id
)
{
48062: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_index( id ); }
48066: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED 4806a: 4e5e unlk %fp <== NOT EXECUTED
...
00048070 <rtems_object_id_get_node>:
int rtems_object_id_get_node(
rtems_id id
)
{
return _Objects_Get_node( id );
}
48070: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_node
int rtems_object_id_get_node(
rtems_id id
)
{
48072: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_node( id ); }
48076: 102e 0009 moveb %fp@(9),%d0 <== NOT EXECUTED 4807a: 4e5e unlk %fp <== NOT EXECUTED
...
00046510 <rtems_object_set_name>:
*/
rtems_status_code rtems_object_set_name(
rtems_id id,
const char *name
)
{
46510: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 46514: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 46518: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4651c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
Objects_Information *information;
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
46520: 6764 beqs 46586 <rtems_object_set_name+0x76> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
46522: 4a83 tstl %d3 <== NOT EXECUTED 46524: 6754 beqs 4657a <rtems_object_set_name+0x6a> <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
46526: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46528: 4eb9 0004 7ff4 jsr 47ff4 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
4652e: 588f addql #4,%sp <== NOT EXECUTED
if ( !name )
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
information = _Objects_Get_information_id( tmpId );
46530: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( !information )
46532: 673a beqs 4656e <rtems_object_set_name+0x5e> <== NOT EXECUTED
return RTEMS_INVALID_ID;
the_object = _Objects_Get( information, tmpId, &location );
46534: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46538: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4653a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4653c: 4eb9 0004 81e0 jsr 481e0 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
46542: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46546: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4654a: 6622 bnes 4656e <rtems_object_set_name+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Set_name( information, the_object, name );
4654c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4654e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46550: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46552: 4eb9 0004 8390 jsr 48390 <_Objects_Set_name> <== NOT EXECUTED
_Thread_Enable_dispatch();
46558: 4eb9 0004 8b66 jsr 48b66 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4655e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46562: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46564: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4656a: 4e5e unlk %fp <== NOT EXECUTED 4656c: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4656e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46570: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 46576: 4e5e unlk %fp <== NOT EXECUTED 46578: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4657a: 2079 0006 0d24 moveal 60d24 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 46580: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED 46584: 60a0 bras 46526 <rtems_object_set_name+0x16> <== NOT EXECUTED
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
46586: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46588: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4658e: 4e5e unlk %fp <== NOT EXECUTED
...
00042b60 <rtems_panic>:
void rtems_panic(
const char *printf_format,
...
)
{
42b60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
va_list arglist;
va_start(arglist, printf_format);
(void) rtems_verror(RTEMS_ERROR_PANIC, printf_format, arglist);
42b64: 486e 000c pea %fp@(12) <== NOT EXECUTED 42b68: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 42b6c: 2f3c 2000 0000 movel #536870912,%sp@- <== NOT EXECUTED 42b72: 4eba fde0 jsr %pc@(42954 <rtems_verror>) <== NOT EXECUTED
va_end(arglist);
rtems_error(0, "fatal error, exiting");
42b76: 4879 0005 cf36 pea 5cf36 <IMFS_ops+0x7e> <== NOT EXECUTED 42b7c: 42a7 clrl %sp@- <== NOT EXECUTED 42b7e: 4eb9 0004 2afe jsr 42afe <rtems_error> <== NOT EXECUTED
_exit(errno);
42b84: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 42b8a: 2040 moveal %d0,%a0 <== NOT EXECUTED 42b8c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 42b8e: 4eb9 0004 35fe jsr 435fe <_exit> <== NOT EXECUTED
00056784 <rtems_partition_create>:
uint32_t length,
uint32_t buffer_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
56784: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 56788: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 5678c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 56790: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 56794: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 56798: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 5679c: 246e 001c moveal %fp@(28),%a2 <== NOT EXECUTED
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
567a0: 4a82 tstl %d2 <== NOT EXECUTED 567a2: 673a beqs 567de <rtems_partition_create+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !starting_address )
567a4: 4a85 tstl %d5 <== NOT EXECUTED 567a6: 671e beqs 567c6 <rtems_partition_create+0x42> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !id )
567a8: 4a8a tstl %a2 <== NOT EXECUTED 567aa: 671a beqs 567c6 <rtems_partition_create+0x42> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
567ac: 4a84 tstl %d4 <== NOT EXECUTED 567ae: 6722 beqs 567d2 <rtems_partition_create+0x4e> <== NOT EXECUTED 567b0: 4a83 tstl %d3 <== NOT EXECUTED 567b2: 671e beqs 567d2 <rtems_partition_create+0x4e> <== NOT EXECUTED 567b4: b684 cmpl %d4,%d3 <== NOT EXECUTED 567b6: 621a bhis 567d2 <rtems_partition_create+0x4e> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned (
uint32_t buffer_size
)
{
return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);
567b8: 7003 moveq #3,%d0 <== NOT EXECUTED 567ba: c083 andl %d3,%d0 <== NOT EXECUTED 567bc: 6614 bnes 567d2 <rtems_partition_create+0x4e> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
567be: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 567c2: c085 andl %d5,%d0 <== NOT EXECUTED
!_Partition_Is_buffer_size_aligned( buffer_size ) )
return RTEMS_INVALID_SIZE;
if ( !_Addresses_Is_aligned( starting_address ) )
567c4: 6724 beqs 567ea <rtems_partition_create+0x66> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
567c6: 7009 moveq #9,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567c8: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 567ce: 4e5e unlk %fp <== NOT EXECUTED 567d0: 4e75 rts <== NOT EXECUTED
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;
567d2: 7008 moveq #8,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567d4: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 567da: 4e5e unlk %fp <== NOT EXECUTED 567dc: 4e75 rts <== NOT EXECUTED
)
{
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
567de: 7003 moveq #3,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567e0: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 567e6: 4e5e unlk %fp <== NOT EXECUTED 567e8: 4e75 rts <== NOT EXECUTED 567ea: 2039 0007 eb70 movel 7eb70 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 567f0: 5280 addql #1,%d0 <== NOT EXECUTED 567f2: 23c0 0007 eb70 movel %d0,7eb70 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* 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 );
567f8: 4879 0007 ea02 pea 7ea02 <_Partition_Information> <== NOT EXECUTED 567fe: 4eb9 0005 b474 jsr 5b474 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
56804: 588f addql #4,%sp <== NOT EXECUTED 56806: 2640 moveal %d0,%a3 <== NOT EXECUTED 56808: 4a80 tstl %d0 <== NOT EXECUTED 5680a: 6758 beqs 56864 <rtems_partition_create+0xe0> <== NOT EXECUTED
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
the_partition->length = length;
5680c: 2744 0014 movel %d4,%a3@(20) <== NOT EXECUTED
the_partition->buffer_size = buffer_size; the_partition->attribute_set = attribute_set;
56810: 276e 0018 001c movel %fp@(24),%a3@(28) <== NOT EXECUTED
the_partition->number_of_used_blocks = 0;
_Chain_Initialize( &the_partition->Memory, starting_address,
56816: 4c43 4004 remul %d3,%d4,%d4 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
5681a: 2745 0010 movel %d5,%a3@(16) <== NOT EXECUTED
the_partition->length = length; the_partition->buffer_size = buffer_size;
5681e: 2743 0018 movel %d3,%a3@(24) <== NOT EXECUTED
the_partition->attribute_set = attribute_set; the_partition->number_of_used_blocks = 0;
56822: 42ab 0020 clrl %a3@(32) <== NOT EXECUTED
_Chain_Initialize( &the_partition->Memory, starting_address,
56826: 2f03 movel %d3,%sp@- <== NOT EXECUTED 56828: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5682a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 5682c: 486b 0024 pea %a3@(36) <== NOT EXECUTED 56830: 4eb9 0005 9cf0 jsr 59cf0 <_Chain_Initialize> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
56836: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
5683a: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
5683c: 2079 0007 ea1a moveal 7ea1a <_Partition_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
56842: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
56844: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
56848: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Partition_Information,
&the_partition->Object,
(Objects_Name) name
);
*id = the_partition->Object.id;
5684c: 2480 movel %d0,%a2@ <== NOT EXECUTED
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
5684e: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
56854: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 56858: 4280 clrl %d0 <== NOT EXECUTED
}
5685a: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 56860: 4e5e unlk %fp <== NOT EXECUTED 56862: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
_Thread_Enable_dispatch();
56864: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
5686a: 7005 moveq #5,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
5686c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 56872: 4e5e unlk %fp <== NOT EXECUTED
...
00056878 <rtems_partition_delete>:
*/
rtems_status_code rtems_partition_delete(
rtems_id id
)
{
56878: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
5687c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56880: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56884: 4879 0007 ea02 pea 7ea02 <_Partition_Information> <== NOT EXECUTED 5688a: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
56890: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56894: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56898: 6706 beqs 568a0 <rtems_partition_delete+0x28> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5689a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5689c: 4e5e unlk %fp <== NOT EXECUTED 5689e: 4e75 rts <== NOT EXECUTED
the_partition = _Partition_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_partition->number_of_used_blocks == 0 ) {
568a0: 2040 moveal %d0,%a0 <== NOT EXECUTED 568a2: 4aa8 0020 tstl %a0@(32) <== NOT EXECUTED 568a6: 670c beqs 568b4 <rtems_partition_delete+0x3c> <== NOT EXECUTED
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
568a8: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
568ae: 700c moveq #12,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
568b0: 4e5e unlk %fp <== NOT EXECUTED 568b2: 4e75 rts <== NOT EXECUTED
the_partition = _Partition_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_partition->number_of_used_blocks == 0 ) {
_Objects_Close( &_Partition_Information, &the_partition->Object );
568b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 568b6: 4879 0007 ea02 pea 7ea02 <_Partition_Information> <== NOT EXECUTED 568bc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 568c0: 4eb9 0005 b504 jsr 5b504 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Partition_Free (
Partition_Control *the_partition
)
{
_Objects_Free( &_Partition_Information, &the_partition->Object );
568c6: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 568ca: 2f00 movel %d0,%sp@- <== NOT EXECUTED 568cc: 4879 0007 ea02 pea 7ea02 <_Partition_Information> <== NOT EXECUTED 568d2: 4eb9 0005 b7c8 jsr 5b7c8 <_Objects_Free> <== NOT EXECUTED
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
568d8: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
568de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 568e2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
568e4: 4e5e unlk %fp <== NOT EXECUTED
000568e8 <rtems_partition_get_buffer>:
rtems_status_code rtems_partition_get_buffer(
rtems_id id,
void **buffer
)
{
568e8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 568ec: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 568f0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
void *the_buffer;
if ( !buffer )
568f4: 4a8a tstl %a2 <== NOT EXECUTED 568f6: 6754 beqs 5694c <rtems_partition_get_buffer+0x64><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
568f8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 568fc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56900: 4879 0007 ea02 pea 7ea02 <_Partition_Information> <== NOT EXECUTED 56906: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
5690c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56910: 2640 moveal %d0,%a3 <== NOT EXECUTED 56912: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56916: 6628 bnes 56940 <rtems_partition_get_buffer+0x58><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (
Partition_Control *the_partition
)
{
return _Chain_Get( &the_partition->Memory );
56918: 486b 0024 pea %a3@(36) <== NOT EXECUTED 5691c: 4eb9 0005 9cb4 jsr 59cb4 <_Chain_Get> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_buffer = _Partition_Allocate_buffer( the_partition );
if ( the_buffer ) {
56922: 588f addql #4,%sp <== NOT EXECUTED 56924: 2400 movel %d0,%d2 <== NOT EXECUTED 56926: 6730 beqs 56958 <rtems_partition_get_buffer+0x70><== NOT EXECUTED
the_partition->number_of_used_blocks += 1;
56928: 52ab 0020 addql #1,%a3@(32) <== NOT EXECUTED
_Thread_Enable_dispatch();
5692c: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
*buffer = the_buffer;
return RTEMS_SUCCESSFUL;
56932: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_LOCAL:
the_buffer = _Partition_Allocate_buffer( the_partition );
if ( the_buffer ) {
the_partition->number_of_used_blocks += 1;
_Thread_Enable_dispatch();
*buffer = the_buffer;
56934: 2482 movel %d2,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56936: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 5693c: 4e5e unlk %fp <== NOT EXECUTED 5693e: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56940: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56942: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 56948: 4e5e unlk %fp <== NOT EXECUTED 5694a: 4e75 rts <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
void *the_buffer;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
5694c: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5694e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 56954: 4e5e unlk %fp <== NOT EXECUTED 56956: 4e75 rts <== NOT EXECUTED
the_partition->number_of_used_blocks += 1;
_Thread_Enable_dispatch();
*buffer = the_buffer;
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
56958: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
5695e: 700d moveq #13,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56960: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 56966: 4e5e unlk %fp <== NOT EXECUTED
...
0005696c <rtems_partition_ident>:
rtems_status_code rtems_partition_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
5696c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32( &_Partition_Information, name, node, id );
56970: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 56974: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 56978: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5697c: 4879 0007 ea02 pea 7ea02 <_Partition_Information> <== NOT EXECUTED 56982: 4eb9 0005 bb20 jsr 5bb20 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
56988: 41f9 0007 7f68 lea 77f68 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
5698e: 4e5e unlk %fp <== NOT EXECUTED 56990: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
00056998 <rtems_partition_return_buffer>:
rtems_status_code rtems_partition_return_buffer(
rtems_id id,
void *buffer
)
{
56998: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5699c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5699e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
569a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 569a4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 569a8: 4879 0007 ea02 pea 7ea02 <_Partition_Information> <== NOT EXECUTED 569ae: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 569b2: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
569b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 569bc: 2440 moveal %d0,%a2 <== NOT EXECUTED 569be: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 569c2: 670e beqs 569d2 <rtems_partition_return_buffer+0x3a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
569c4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
569c8: 7004 moveq #4,%d0 <== NOT EXECUTED
}
569ca: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 569ce: 4e5e unlk %fp <== NOT EXECUTED 569d0: 4e75 rts <== NOT EXECUTED
)
{
void *starting;
void *ending;
starting = the_partition->starting_address;
569d2: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
ending = _Addresses_Add_offset( starting, the_partition->length );
569d6: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
569da: b082 cmpl %d2,%d0 <== NOT EXECUTED 569dc: 623c bhis 56a1a <rtems_partition_return_buffer+0x82><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
569de: d280 addl %d0,%d1 <== NOT EXECUTED
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
569e0: b282 cmpl %d2,%d1 <== NOT EXECUTED 569e2: 6536 bcss 56a1a <rtems_partition_return_buffer+0x82><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
569e4: 2202 movel %d2,%d1 <== NOT EXECUTED 569e6: 9280 subl %d0,%d1 <== NOT EXECUTED 569e8: 2001 movel %d1,%d0 <== NOT EXECUTED
offset = (uint32_t) _Addresses_Subtract(
the_buffer,
the_partition->starting_address
);
return ((offset % the_partition->buffer_size) == 0);
569ea: 4c6a 0001 0018 remul %a2@(24),%d1,%d0 <== NOT EXECUTED
starting = the_partition->starting_address;
ending = _Addresses_Add_offset( starting, the_partition->length );
return (
_Addresses_Is_in_range( the_buffer, starting, ending ) &&
569f0: 4a81 tstl %d1 <== NOT EXECUTED 569f2: 6626 bnes 56a1a <rtems_partition_return_buffer+0x82><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (
Partition_Control *the_partition,
Chain_Node *the_buffer
)
{
_Chain_Append( &the_partition->Memory, the_buffer );
569f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 569f6: 486a 0024 pea %a2@(36) <== NOT EXECUTED 569fa: 4eb9 0005 9c54 jsr 59c54 <_Chain_Append> <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) {
_Partition_Free_buffer( the_partition, buffer );
the_partition->number_of_used_blocks -= 1;
56a00: 53aa 0020 subql #1,%a2@(32) <== NOT EXECUTED
_Thread_Enable_dispatch();
56a04: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a0a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
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();
return RTEMS_SUCCESSFUL;
56a0e: 508f addql #8,%sp <== NOT EXECUTED 56a10: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a12: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 56a16: 4e5e unlk %fp <== NOT EXECUTED 56a18: 4e75 rts <== NOT EXECUTED
_Partition_Free_buffer( the_partition, buffer );
the_partition->number_of_used_blocks -= 1;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
56a1a: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a20: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
the_partition->number_of_used_blocks -= 1;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
56a24: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a26: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 56a2a: 4e5e unlk %fp <== NOT EXECUTED
...
00055c80 <rtems_port_create>:
void *internal_start,
void *external_start,
uint32_t length,
rtems_id *id
)
{
55c80: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 55c84: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 55c88: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 55c8c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 55c90: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 55c94: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
if ( !rtems_is_name_valid( name ) )
55c98: 4a82 tstl %d2 <== NOT EXECUTED 55c9a: 671a beqs 55cb6 <rtems_port_create+0x36> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
55c9c: 4a8a tstl %a2 <== NOT EXECUTED 55c9e: 670a beqs 55caa <rtems_port_create+0x2a> <== NOT EXECUTED
* id - port id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_port_create(
55ca0: 2003 movel %d3,%d0 <== NOT EXECUTED 55ca2: 7203 moveq #3,%d1 <== NOT EXECUTED 55ca4: 8084 orl %d4,%d0 <== NOT EXECUTED 55ca6: c081 andl %d1,%d0 <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( !_Addresses_Is_aligned( internal_start ) ||
55ca8: 6718 beqs 55cc2 <rtems_port_create+0x42> <== NOT EXECUTED
!_Addresses_Is_aligned( external_start ) )
return RTEMS_INVALID_ADDRESS;
55caa: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55cac: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 55cb2: 4e5e unlk %fp <== NOT EXECUTED 55cb4: 4e75 rts <== NOT EXECUTED
)
{
register Dual_ported_memory_Control *the_port;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
55cb6: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55cb8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 55cbe: 4e5e unlk %fp <== NOT EXECUTED 55cc0: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
55cc2: 2039 0007 eb70 movel 7eb70 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 55cc8: 5280 addql #1,%d0 <== NOT EXECUTED 55cca: 23c0 0007 eb70 movel %d0,7eb70 <_Thread_Dispatch_disable_level><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Dual_ported_memory_Control
*_Dual_ported_memory_Allocate ( void )
{
return (Dual_ported_memory_Control *)
_Objects_Allocate( &_Dual_ported_memory_Information );
55cd0: 4879 0007 e9c8 pea 7e9c8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55cd6: 4eb9 0005 b474 jsr 5b474 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_port = _Dual_ported_memory_Allocate();
if ( !the_port ) {
55cdc: 588f addql #4,%sp <== NOT EXECUTED 55cde: 2040 moveal %d0,%a0 <== NOT EXECUTED 55ce0: 4a80 tstl %d0 <== NOT EXECUTED 55ce2: 673c beqs 55d20 <rtems_port_create+0xa0> <== NOT EXECUTED
return RTEMS_TOO_MANY;
}
the_port->internal_base = internal_start;
the_port->external_base = external_start;
the_port->length = length - 1;
55ce4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED 55ce8: 5381 subql #1,%d1 <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
55cea: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 55cee: 2141 0018 movel %d1,%a0@(24) <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
55cf2: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
55cf4: 2279 0007 e9e0 moveal 7e9e0 <_Dual_ported_memory_Information+0x18>,%a1<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
55cfa: 3200 movew %d0,%d1 <== NOT EXECUTED
if ( !the_port ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_port->internal_base = internal_start;
55cfc: 2144 0010 movel %d4,%a0@(16) <== NOT EXECUTED
the_port->external_base = external_start;
55d00: 2143 0014 movel %d3,%a0@(20) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
55d04: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
55d08: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED
&_Dual_ported_memory_Information,
&the_port->Object,
(Objects_Name) name
);
*id = the_port->Object.id;
55d0c: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
55d0e: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
55d14: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
(Objects_Name) name
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
55d1a: 4280 clrl %d0 <== NOT EXECUTED
}
55d1c: 4e5e unlk %fp <== NOT EXECUTED 55d1e: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_port = _Dual_ported_memory_Allocate();
if ( !the_port ) {
_Thread_Enable_dispatch();
55d20: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
55d26: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55d28: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 55d2e: 4e5e unlk %fp <== NOT EXECUTED
...
00055d34 <rtems_port_delete>:
*/
rtems_status_code rtems_port_delete(
rtems_id id
)
{
55d34: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Dual_ported_memory_Control *)
_Objects_Get( &_Dual_ported_memory_Information, id, location );
55d38: 486e fffc pea %fp@(-4) <== NOT EXECUTED 55d3c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 55d40: 4879 0007 e9c8 pea 7e9c8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d46: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55d4c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 55d50: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 55d54: 6634 bnes 55d8a <rtems_port_delete+0x56> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Dual_ported_memory_Information, &the_port->Object );
55d56: 2f00 movel %d0,%sp@- <== NOT EXECUTED 55d58: 4879 0007 e9c8 pea 7e9c8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d5e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 55d62: 4eb9 0005 b504 jsr 5b504 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free (
Dual_ported_memory_Control *the_port
)
{
_Objects_Free( &_Dual_ported_memory_Information, &the_port->Object );
55d68: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 55d6c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 55d6e: 4879 0007 e9c8 pea 7e9c8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d74: 4eb9 0005 b7c8 jsr 5b7c8 <_Objects_Free> <== NOT EXECUTED
_Dual_ported_memory_Free( the_port );
_Thread_Enable_dispatch();
55d7a: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55d80: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 55d84: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55d86: 4e5e unlk %fp <== NOT EXECUTED 55d88: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55d8a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55d8c: 4e5e unlk %fp <== NOT EXECUTED
00055d90 <rtems_port_external_to_internal>:
rtems_status_code rtems_port_external_to_internal(
rtems_id id,
void *external,
void **internal
)
{
55d90: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 55d94: 2f0a movel %a2,%sp@- <== NOT EXECUTED 55d96: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 55d9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 55d9c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
55da0: 4a8a tstl %a2 <== NOT EXECUTED 55da2: 6762 beqs 55e06 <rtems_port_external_to_internal+0x76><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Dual_ported_memory_Control *)
_Objects_Get( &_Dual_ported_memory_Information, id, location );
55da4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 55da8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 55dac: 4879 0007 e9c8 pea 7e9c8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55db2: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55db8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 55dbc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 55dc0: 6624 bnes 55de6 <rtems_port_external_to_internal+0x56><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
55dc2: 2202 movel %d2,%d1 <== NOT EXECUTED 55dc4: 2040 moveal %d0,%a0 <== NOT EXECUTED 55dc6: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( external, the_port->external_base );
if ( ending > the_port->length )
55dca: b2a8 0018 cmpl %a0@(24),%d1 <== NOT EXECUTED 55dce: 6324 blss 55df4 <rtems_port_external_to_internal+0x64><== NOT EXECUTED
*internal = external;
55dd0: 2482 movel %d2,%a2@ <== NOT EXECUTED
else
*internal = _Addresses_Add_offset( the_port->internal_base,
ending );
_Thread_Enable_dispatch();
55dd2: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55dd8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55dda: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 55dde: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55de2: 4e5e unlk %fp <== NOT EXECUTED 55de4: 4e75 rts <== NOT EXECUTED 55de6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55dea: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55dec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55df0: 4e5e unlk %fp <== NOT EXECUTED 55df2: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
55df4: 2040 moveal %d0,%a0 <== NOT EXECUTED 55df6: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED 55dfa: 2481 movel %d1,%a2@ <== NOT EXECUTED
if ( ending > the_port->length )
*internal = external;
else
*internal = _Addresses_Add_offset( the_port->internal_base,
ending );
_Thread_Enable_dispatch();
55dfc: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55e02: 4280 clrl %d0 <== NOT EXECUTED 55e04: 60d4 bras 55dda <rtems_port_external_to_internal+0x4a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e06: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
return RTEMS_INVALID_ADDRESS;
55e0a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e0c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55e10: 4e5e unlk %fp <== NOT EXECUTED
00055e14 <rtems_port_ident>:
rtems_status_code rtems_port_ident(
rtems_name name,
rtems_id *id
)
{
55e14: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
55e18: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 55e1c: 42a7 clrl %sp@- <== NOT EXECUTED 55e1e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 55e22: 4879 0007 e9c8 pea 7e9c8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55e28: 4eb9 0005 bb20 jsr 5bb20 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_ALL_NODES,
id
);
return _Status_Object_name_errors_to_status[ status ];
55e2e: 41f9 0007 7f68 lea 77f68 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
55e34: 4e5e unlk %fp <== NOT EXECUTED 55e36: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00055e3c <rtems_port_internal_to_external>:
rtems_status_code rtems_port_internal_to_external(
rtems_id id,
void *internal,
void **external
)
{
55e3c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 55e40: 2f0a movel %a2,%sp@- <== NOT EXECUTED 55e42: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 55e46: 2f02 movel %d2,%sp@- <== NOT EXECUTED 55e48: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
55e4c: 4a8a tstl %a2 <== NOT EXECUTED 55e4e: 6762 beqs 55eb2 <rtems_port_internal_to_external+0x76><== NOT EXECUTED 55e50: 486e fffc pea %fp@(-4) <== NOT EXECUTED 55e54: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 55e58: 4879 0007 e9c8 pea 7e9c8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55e5e: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55e64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 55e68: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 55e6c: 6624 bnes 55e92 <rtems_port_internal_to_external+0x56><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
55e6e: 2202 movel %d2,%d1 <== NOT EXECUTED 55e70: 2040 moveal %d0,%a0 <== NOT EXECUTED 55e72: 92a8 0010 subl %a0@(16),%d1 <== NOT EXECUTED
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( internal, the_port->internal_base );
if ( ending > the_port->length )
55e76: b2a8 0018 cmpl %a0@(24),%d1 <== NOT EXECUTED 55e7a: 6324 blss 55ea0 <rtems_port_internal_to_external+0x64><== NOT EXECUTED
*external = internal;
55e7c: 2482 movel %d2,%a2@ <== NOT EXECUTED
else
*external = _Addresses_Add_offset( the_port->external_base,
ending );
_Thread_Enable_dispatch();
55e7e: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55e84: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e86: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 55e8a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55e8e: 4e5e unlk %fp <== NOT EXECUTED 55e90: 4e75 rts <== NOT EXECUTED 55e92: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55e96: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55e98: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55e9c: 4e5e unlk %fp <== NOT EXECUTED 55e9e: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
55ea0: 2040 moveal %d0,%a0 <== NOT EXECUTED 55ea2: d2a8 0014 addl %a0@(20),%d1 <== NOT EXECUTED 55ea6: 2481 movel %d1,%a2@ <== NOT EXECUTED
if ( ending > the_port->length )
*external = internal;
else
*external = _Addresses_Add_offset( the_port->external_base,
ending );
_Thread_Enable_dispatch();
55ea8: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55eae: 4280 clrl %d0 <== NOT EXECUTED 55eb0: 60d4 bras 55e86 <rtems_port_internal_to_external+0x4a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55eb2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
return RTEMS_INVALID_ADDRESS;
55eb6: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55eb8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 55ebc: 4e5e unlk %fp <== NOT EXECUTED
00042114 <rtems_print_buffer>:
void rtems_print_buffer(
const unsigned char *buffer,
int length
)
{
42114: 4e56 ff60 linkw %fp,#-160 <== NOT EXECUTED 42118: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4211c: 2e2e 000c movel %fp@(12),%d7 <== NOT EXECUTED
int i, mod, max;
if ( !length ) return;
42120: 6700 00d2 beqw 421f4 <rtems_print_buffer+0xe0> <== NOT EXECUTED
mod = length % 16;
42124: 2a07 movel %d7,%d5 <== NOT EXECUTED 42126: 0285 8000 000f andil #-2147483633,%d5 <== NOT EXECUTED 4212c: 6d00 01ca bltw 422f8 <rtems_print_buffer+0x1e4> <== NOT EXECUTED 42130: 2c05 movel %d5,%d6 <== NOT EXECUTED
max = length - mod;
42132: 9e85 subl %d5,%d7 <== NOT EXECUTED
for ( i=0 ; i<max ; i+=16 )
42134: 4a87 tstl %d7 <== NOT EXECUTED 42136: 6f00 00b8 blew 421f0 <rtems_print_buffer+0xdc> <== NOT EXECUTED 4213a: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4213e: 4284 clrl %d4 <== NOT EXECUTED 42140: 45ee ff88 lea %fp@(-120),%a2 <== NOT EXECUTED 42144: 49f9 0004 f7b8 lea 4f7b8 <sprintf>,%a4 <== NOT EXECUTED 4214a: 4bf9 0004 fed4 lea 4fed4 <strlen>,%a5 <== NOT EXECUTED
{
int i;
char line_buffer[120];
line_buffer[0] = '\0';
42150: 2643 moveal %d3,%a3 <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
42152: 4282 clrl %d2 <== NOT EXECUTED
{
int i;
char line_buffer[120];
line_buffer[0] = '\0';
42154: 4201 clrb %d1 <== NOT EXECUTED 42156: 1d41 ff88 moveb %d1,%fp@(-120) <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
4215a: 4280 clrl %d0 <== NOT EXECUTED 4215c: 101b moveb %a3@+,%d0 <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
4215e: 5282 addql #1,%d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
42160: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42162: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42164: 4879 0005 cfd4 pea 5cfd4 <IntUartPollCallbacks.6307+0x20> <== NOT EXECUTED 4216a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4216c: 4e94 jsr %a4@ <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
4216e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 42172: 7010 moveq #16,%d0 <== NOT EXECUTED 42174: b082 cmpl %d2,%d0 <== NOT EXECUTED 42176: 66e2 bnes 4215a <rtems_print_buffer+0x46> <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
42178: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4217a: 2643 moveal %d3,%a3 <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
4217c: 4282 clrl %d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
4217e: 4e95 jsr %a5@ <== NOT EXECUTED 42180: 588f addql #4,%sp <== NOT EXECUTED 42182: 323c 7c00 movew #31744,%d1 <== NOT EXECUTED 42186: 3581 0800 movew %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
4218a: 4280 clrl %d0 <== NOT EXECUTED 4218c: 101b moveb %a3@+,%d0 <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
4218e: 722e moveq #46,%d1 <== NOT EXECUTED
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
42190: 2040 moveal %d0,%a0 <== NOT EXECUTED 42192: 2279 0005 e764 moveal 5e764 <__ctype_ptr__>,%a1 <== NOT EXECUTED 42198: 1031 8801 moveb %a1@(00000001,%a0:l),%d0 <== NOT EXECUTED 4219c: 49c0 extbl %d0 <== NOT EXECUTED 4219e: 0280 0000 0097 andil #151,%d0 <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
421a4: 6702 beqs 421a8 <rtems_print_buffer+0x94> <== NOT EXECUTED 421a6: 2208 movel %a0,%d1 <== NOT EXECUTED 421a8: 2f01 movel %d1,%sp@- <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
421aa: 5282 addql #1,%d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
421ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 421ae: 4879 0005 cfdc pea 5cfdc <IntUartPollCallbacks.6307+0x28> <== NOT EXECUTED 421b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 421b6: 4e94 jsr %a4@ <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
421b8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 421bc: 7210 moveq #16,%d1 <== NOT EXECUTED 421be: b282 cmpl %d2,%d1 <== NOT EXECUTED 421c0: 66c8 bnes 4218a <rtems_print_buffer+0x76> <== NOT EXECUTED
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|\n" );
421c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
mod = length % 16;
max = length - mod;
for ( i=0 ; i<max ; i+=16 )
421c4: 0684 0000 0010 addil #16,%d4 <== NOT EXECUTED
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|\n" );
421ca: 4e95 jsr %a5@ <== NOT EXECUTED
mod = length % 16;
max = length - mod;
for ( i=0 ; i<max ; i+=16 )
421cc: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|\n" );
421d2: 41f2 0800 lea %a2@(00000000,%d0:l),%a0 <== NOT EXECUTED 421d6: 4200 clrb %d0 <== NOT EXECUTED 421d8: 30bc 7c0a movew #31754,%a0@ <== NOT EXECUTED 421dc: 1140 0002 moveb %d0,%a0@(2) <== NOT EXECUTED
printk( line_buffer );
421e0: 2e8a movel %a2,%sp@ <== NOT EXECUTED 421e2: 4eb9 0004 3df4 jsr 43df4 <printk> <== NOT EXECUTED
mod = length % 16;
max = length - mod;
for ( i=0 ; i<max ; i+=16 )
421e8: 588f addql #4,%sp <== NOT EXECUTED 421ea: b887 cmpl %d7,%d4 <== NOT EXECUTED 421ec: 6d00 ff62 bltw 42150 <rtems_print_buffer+0x3c> <== NOT EXECUTED
Dump_Line( &buffer[ i ], 16 );
if ( mod )
421f0: 4a85 tstl %d5 <== NOT EXECUTED 421f2: 660a bnes 421fe <rtems_print_buffer+0xea> <== NOT EXECUTED
Dump_Line( &buffer[ max ], mod );
}
421f4: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED 421fa: 4e5e unlk %fp <== NOT EXECUTED 421fc: 4e75 rts <== NOT EXECUTED
for ( i=0 ; i<max ; i+=16 )
Dump_Line( &buffer[ i ], 16 );
if ( mod )
Dump_Line( &buffer[ max ], mod );
421fe: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 42202: d7c7 addal %d7,%a3 <== NOT EXECUTED
{
int i;
char line_buffer[120];
line_buffer[0] = '\0';
42204: 4200 clrb %d0 <== NOT EXECUTED 42206: 1d40 ff88 moveb %d0,%fp@(-120) <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
4220a: 4a85 tstl %d5 <== NOT EXECUTED 4220c: 6f00 0110 blew 4231e <rtems_print_buffer+0x20a> <== NOT EXECUTED 42210: 2a4b moveal %a3,%a5 <== NOT EXECUTED 42212: 4282 clrl %d2 <== NOT EXECUTED 42214: 45ee ff88 lea %fp@(-120),%a2 <== NOT EXECUTED 42218: 49f9 0004 f7b8 lea 4f7b8 <sprintf>,%a4 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
4221e: 4280 clrl %d0 <== NOT EXECUTED 42220: 101d moveb %a5@+,%d0 <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
42222: 5282 addql #1,%d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
42224: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42226: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42228: 4879 0005 cfd4 pea 5cfd4 <IntUartPollCallbacks.6307+0x20> <== NOT EXECUTED 4222e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42230: 4e94 jsr %a4@ <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
42232: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 42236: b485 cmpl %d5,%d2 <== NOT EXECUTED 42238: 6de4 blts 4221e <rtems_print_buffer+0x10a> <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
4223a: 720f moveq #15,%d1 <== NOT EXECUTED 4223c: b285 cmpl %d5,%d1 <== NOT EXECUTED 4223e: 6d00 0108 bltw 42348 <rtems_print_buffer+0x234> <== NOT EXECUTED 42242: 2405 movel %d5,%d2 <== NOT EXECUTED 42244: 4bf9 0004 fed4 lea 4fed4 <strlen>,%a5 <== NOT EXECUTED
strcat( line_buffer, " " );
4224a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
4224c: 5282 addql #1,%d2 <== NOT EXECUTED
strcat( line_buffer, " " );
4224e: 4e95 jsr %a5@ <== NOT EXECUTED 42250: 588f addql #4,%sp <== NOT EXECUTED 42252: 223c 2020 2000 movel #538976256,%d1 <== NOT EXECUTED 42258: 2581 0800 movel %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
4225c: 700f moveq #15,%d0 <== NOT EXECUTED 4225e: b082 cmpl %d2,%d0 <== NOT EXECUTED 42260: 6ce8 bges 4224a <rtems_print_buffer+0x136> <== NOT EXECUTED
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
42262: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42264: 49f9 0004 f7b8 lea 4f7b8 <sprintf>,%a4 <== NOT EXECUTED 4226a: 4eb9 0004 fed4 jsr 4fed4 <strlen> <== NOT EXECUTED 42270: 588f addql #4,%sp <== NOT EXECUTED 42272: 323c 7c00 movew #31744,%d1 <== NOT EXECUTED 42276: 3581 0800 movew %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
4227a: 4a85 tstl %d5 <== NOT EXECUTED 4227c: 6f00 0086 blew 42304 <rtems_print_buffer+0x1f0> <== NOT EXECUTED 42280: 4282 clrl %d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
42282: 4283 clrl %d3 <== NOT EXECUTED 42284: 161b moveb %a3@+,%d3 <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
42286: 722e moveq #46,%d1 <== NOT EXECUTED
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
42288: 2079 0005 e764 moveal 5e764 <__ctype_ptr__>,%a0 <== NOT EXECUTED 4228e: 1030 3801 moveb %a0@(00000001,%d3:l),%d0 <== NOT EXECUTED 42292: 49c0 extbl %d0 <== NOT EXECUTED 42294: 0280 0000 0097 andil #151,%d0 <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
4229a: 6702 beqs 4229e <rtems_print_buffer+0x18a> <== NOT EXECUTED 4229c: 2203 movel %d3,%d1 <== NOT EXECUTED 4229e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
422a0: 5282 addql #1,%d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
422a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 422a4: 4879 0005 cfdc pea 5cfdc <IntUartPollCallbacks.6307+0x28> <== NOT EXECUTED 422aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 422ac: 4e94 jsr %a4@ <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
422ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 422b2: b485 cmpl %d5,%d2 <== NOT EXECUTED 422b4: 6dcc blts 42282 <rtems_print_buffer+0x16e> <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
422b6: 700f moveq #15,%d0 <== NOT EXECUTED 422b8: b085 cmpl %d5,%d0 <== NOT EXECUTED 422ba: 6d16 blts 422d2 <rtems_print_buffer+0x1be> <== NOT EXECUTED
strcat( line_buffer, " " );
422bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
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++ )
422be: 5286 addql #1,%d6 <== NOT EXECUTED
strcat( line_buffer, " " );
422c0: 4e95 jsr %a5@ <== NOT EXECUTED 422c2: 588f addql #4,%sp <== NOT EXECUTED 422c4: 323c 2000 movew #8192,%d1 <== NOT EXECUTED 422c8: 3581 0800 movew %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED
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++ )
422cc: 700f moveq #15,%d0 <== NOT EXECUTED 422ce: b086 cmpl %d6,%d0 <== NOT EXECUTED 422d0: 6cea bges 422bc <rtems_print_buffer+0x1a8> <== NOT EXECUTED
strcat( line_buffer, " " );
strcat( line_buffer, "|\n" );
422d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 422d4: 4e95 jsr %a5@ <== NOT EXECUTED 422d6: 4201 clrb %d1 <== NOT EXECUTED 422d8: 41f2 0800 lea %a2@(00000000,%d0:l),%a0 <== NOT EXECUTED 422dc: 30bc 7c0a movew #31754,%a0@ <== NOT EXECUTED 422e0: 1141 0002 moveb %d1,%a0@(2) <== NOT EXECUTED
printk( line_buffer );
422e4: 2e8a movel %a2,%sp@ <== NOT EXECUTED 422e6: 4eb9 0004 3df4 jsr 43df4 <printk> <== NOT EXECUTED 422ec: 588f addql #4,%sp <== NOT EXECUTED
for ( i=0 ; i<max ; i+=16 )
Dump_Line( &buffer[ i ], 16 );
if ( mod )
Dump_Line( &buffer[ max ], mod );
}
422ee: 4cee 3cfc ff60 moveml %fp@(-160),%d2-%d7/%a2-%a5 <== NOT EXECUTED 422f4: 4e5e unlk %fp <== NOT EXECUTED 422f6: 4e75 rts <== NOT EXECUTED
int i, mod, max;
if ( !length ) return;
mod = length % 16;
422f8: 5385 subql #1,%d5 <== NOT EXECUTED 422fa: 70f0 moveq #-16,%d0 <== NOT EXECUTED 422fc: 8a80 orl %d0,%d5 <== NOT EXECUTED 422fe: 5285 addql #1,%d5 <== NOT EXECUTED 42300: 6000 fe2e braw 42130 <rtems_print_buffer+0x1c> <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
42304: 2f0a movel %a2,%sp@- <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
42306: 4286 clrl %d6 <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
42308: 5286 addql #1,%d6 <== NOT EXECUTED
strcat( line_buffer, " " );
4230a: 4e95 jsr %a5@ <== NOT EXECUTED 4230c: 588f addql #4,%sp <== NOT EXECUTED 4230e: 323c 2000 movew #8192,%d1 <== NOT EXECUTED 42312: 3581 0800 movew %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED
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++ )
42316: 700f moveq #15,%d0 <== NOT EXECUTED 42318: b086 cmpl %d6,%d0 <== NOT EXECUTED 4231a: 6ca0 bges 422bc <rtems_print_buffer+0x1a8> <== NOT EXECUTED 4231c: 60b4 bras 422d2 <rtems_print_buffer+0x1be> <== NOT EXECUTED 4231e: 45ee ff88 lea %fp@(-120),%a2 <== NOT EXECUTED 42322: 4bf9 0004 fed4 lea 4fed4 <strlen>,%a5 <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
42328: 4282 clrl %d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
4232a: 5282 addql #1,%d2 <== NOT EXECUTED
strcat( line_buffer, " " );
4232c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4232e: 4e95 jsr %a5@ <== NOT EXECUTED 42330: 588f addql #4,%sp <== NOT EXECUTED 42332: 223c 2020 2000 movel #538976256,%d1 <== NOT EXECUTED 42338: 2581 0800 movel %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
4233c: 700f moveq #15,%d0 <== NOT EXECUTED 4233e: b082 cmpl %d2,%d0 <== NOT EXECUTED 42340: 6c00 ff08 bgew 4224a <rtems_print_buffer+0x136> <== NOT EXECUTED 42344: 6000 ff1c braw 42262 <rtems_print_buffer+0x14e> <== NOT EXECUTED
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
42348: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4234a: 4bf9 0004 fed4 lea 4fed4 <strlen>,%a5 <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
42350: 4282 clrl %d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
42352: 4e95 jsr %a5@ <== NOT EXECUTED 42354: 588f addql #4,%sp <== NOT EXECUTED 42356: 323c 7c00 movew #31744,%d1 <== NOT EXECUTED 4235a: 3581 0800 movew %d1,%a2@(00000000,%d0:l) <== NOT EXECUTED 4235e: 6000 ff22 braw 42282 <rtems_print_buffer+0x16e> <== NOT EXECUTED
...
00056a30 <rtems_rate_monotonic_cancel>:
*/
rtems_status_code rtems_rate_monotonic_cancel(
rtems_id id
)
{
56a30: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 56a34: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
56a36: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56a3a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56a3e: 4879 0007 ea3c pea 7ea3c <_Rate_monotonic_Information> <== NOT EXECUTED 56a44: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
Rate_monotonic_Control *the_period;
Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
56a4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56a4e: 2440 moveal %d0,%a2 <== NOT EXECUTED 56a50: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56a54: 670a beqs 56a60 <rtems_rate_monotonic_cancel+0x30><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a56: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56a5a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56a5c: 4e5e unlk %fp <== NOT EXECUTED 56a5e: 4e75 rts <== NOT EXECUTED
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
56a60: 2039 0007 f008 movel 7f008 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 56a66: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED 56a6a: 6710 beqs 56a7c <rtems_rate_monotonic_cancel+0x4c><== NOT EXECUTED
_Thread_Enable_dispatch();
56a6c: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a72: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
56a76: 7017 moveq #23,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a78: 4e5e unlk %fp <== NOT EXECUTED 56a7a: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
(void) _Watchdog_Remove( &the_period->Timer );
56a7c: 486a 0010 pea %a2@(16) <== NOT EXECUTED 56a80: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
56a86: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
_Thread_Enable_dispatch();
56a8a: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a90: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
(void) _Watchdog_Remove( &the_period->Timer );
the_period->state = RATE_MONOTONIC_INACTIVE;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
56a94: 588f addql #4,%sp <== NOT EXECUTED 56a96: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a98: 4e5e unlk %fp <== NOT EXECUTED
000471a8 <rtems_rate_monotonic_create>:
rtems_status_code rtems_rate_monotonic_create(
rtems_name name,
rtems_id *id
)
{
471a8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 471ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 471b0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 471b4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Rate_monotonic_Control *the_period;
if ( !rtems_is_name_valid( name ) )
471b8: 6700 00ae beqw 47268 <rtems_rate_monotonic_create+0xc0><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
471bc: 4a8a tstl %a2 <== NOT EXECUTED 471be: 6700 00c6 beqw 47286 <rtems_rate_monotonic_create+0xde><== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
471c2: 2039 0006 1df8 movel 61df8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 471c8: 5280 addql #1,%d0 <== NOT EXECUTED 471ca: 23c0 0006 1df8 movel %d0,61df8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free period control blocks.
*/
RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void )
{
return (Rate_monotonic_Control *)
_Objects_Allocate( &_Rate_monotonic_Information );
471d0: 4879 0006 1cfc pea 61cfc <_Rate_monotonic_Information> <== NOT EXECUTED 471d6: 4eb9 0004 9388 jsr 49388 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_period = _Rate_monotonic_Allocate();
if ( !the_period ) {
471dc: 588f addql #4,%sp <== NOT EXECUTED 471de: 2040 moveal %d0,%a0 <== NOT EXECUTED 471e0: 4a80 tstl %d0 <== NOT EXECUTED 471e2: 6700 0090 beqw 47274 <rtems_rate_monotonic_create+0xcc><== NOT EXECUTED
the_period->owner = _Thread_Executing;
the_period->state = RATE_MONOTONIC_INACTIVE;
_Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL );
_Rate_monotonic_Reset_statistics( the_period );
471e6: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED 471ea: 43e8 007c lea %a0@(124),%a1 <== NOT EXECUTED 471ee: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
471f2: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 471f6: 42a8 0064 clrl %a0@(100) <== NOT EXECUTED
if ( !the_period ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_period->owner = _Thread_Executing;
471fa: 47f9 0006 2288 lea 62288 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
_Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL );
_Rate_monotonic_Reset_statistics( the_period );
47200: 42a8 0068 clrl %a0@(104) <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
47204: 4281 clrl %d1 <== NOT EXECUTED 47206: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
if ( !the_period ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_period->owner = _Thread_Executing;
4720a: 2153 0040 movel %a3@,%a0@(64) <== NOT EXECUTED 4720e: 3200 movew %d0,%d1 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
_Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL );
_Rate_monotonic_Reset_statistics( the_period );
47210: 42a8 0070 clrl %a0@(112) <== NOT EXECUTED 47214: 4299 clrl %a1@+ <== NOT EXECUTED 47216: 4299 clrl %a1@+ <== NOT EXECUTED 47218: 4299 clrl %a1@+ <== NOT EXECUTED 4721a: 4291 clrl %a1@ <== NOT EXECUTED 4721c: 227c 7fff ffff moveal #2147483647,%a1 <== NOT EXECUTED 47222: 2149 005c movel %a1,%a0@(92) <== NOT EXECUTED 47226: 2149 0060 movel %a1,%a0@(96) <== NOT EXECUTED 4722a: 2149 0074 movel %a1,%a0@(116) <== NOT EXECUTED 4722e: 2149 0078 movel %a1,%a0@(120) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47232: 2279 0006 1d14 moveal 61d14 <_Rate_monotonic_Information+0x18>,%a1<== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_period->owner = _Thread_Executing;
the_period->state = RATE_MONOTONIC_INACTIVE;
47238: 42a8 0038 clrl %a0@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4723c: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
47240: 42a8 002c clrl %a0@(44) <== NOT EXECUTED
the_watchdog->id = id;
47244: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
the_watchdog->user_data = user_data;
47248: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED 4724c: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
47250: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED
&_Rate_monotonic_Information,
&the_period->Object,
(Objects_Name) name
);
*id = the_period->Object.id;
47254: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47256: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
4725c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
(Objects_Name) name
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47262: 4280 clrl %d0 <== NOT EXECUTED
}
47264: 4e5e unlk %fp <== NOT EXECUTED 47266: 4e75 rts <== NOT EXECUTED
)
{
Rate_monotonic_Control *the_period;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
47268: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4726a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 47270: 4e5e unlk %fp <== NOT EXECUTED 47272: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_period = _Rate_monotonic_Allocate();
if ( !the_period ) {
_Thread_Enable_dispatch();
47274: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4727a: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4727c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 47282: 4e5e unlk %fp <== NOT EXECUTED 47284: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
47286: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47288: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4728e: 4e5e unlk %fp <== NOT EXECUTED
...
00056b88 <rtems_rate_monotonic_delete>:
*/
rtems_status_code rtems_rate_monotonic_delete(
rtems_id id
)
{
56b88: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 56b8c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
56b8e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 56b92: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 56b96: 4879 0007 ea3c pea 7ea3c <_Rate_monotonic_Information> <== NOT EXECUTED 56b9c: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
Rate_monotonic_Control *the_period;
Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
56ba2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 56ba6: 2440 moveal %d0,%a2 <== NOT EXECUTED 56ba8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 56bac: 663e bnes 56bec <rtems_rate_monotonic_delete+0x64><== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Rate_monotonic_Information, &the_period->Object );
56bae: 2f00 movel %d0,%sp@- <== NOT EXECUTED 56bb0: 4879 0007 ea3c pea 7ea3c <_Rate_monotonic_Information> <== NOT EXECUTED 56bb6: 4eb9 0005 b504 jsr 5b504 <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_period->Timer );
56bbc: 486a 0010 pea %a2@(16) <== NOT EXECUTED 56bc0: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
56bc6: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Rate_monotonic_Free (
Rate_monotonic_Control *the_period
)
{
_Objects_Free( &_Rate_monotonic_Information, &the_period->Object );
56bca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 56bcc: 4879 0007 ea3c pea 7ea3c <_Rate_monotonic_Information> <== NOT EXECUTED 56bd2: 4eb9 0005 b7c8 jsr 5b7c8 <_Objects_Free> <== NOT EXECUTED
_Rate_monotonic_Free( the_period );
_Thread_Enable_dispatch();
56bd8: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56bde: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Objects_Close( &_Rate_monotonic_Information, &the_period->Object );
(void) _Watchdog_Remove( &the_period->Timer );
the_period->state = RATE_MONOTONIC_INACTIVE;
_Rate_monotonic_Free( the_period );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
56be2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 56be6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56be8: 4e5e unlk %fp <== NOT EXECUTED 56bea: 4e75 rts <== NOT EXECUTED 56bec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56bf0: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56bf2: 4e5e unlk %fp <== NOT EXECUTED
...
0004dd10 <rtems_rate_monotonic_get_statistics>:
rtems_status_code rtems_rate_monotonic_get_statistics(
rtems_id id,
rtems_rate_monotonic_period_statistics *statistics
)
{
4dd10: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4dd14: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dd16: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Objects_Locations location;
Rate_monotonic_Control *the_period;
rtems_rate_monotonic_period_statistics *dst;
Rate_monotonic_Statistics *src;
if ( !statistics )
4dd1a: 4a8a tstl %a2 <== NOT EXECUTED 4dd1c: 6700 00a6 beqw 4ddc4 <rtems_rate_monotonic_get_statistics+0xb4><== NOT EXECUTED 4dd20: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4dd24: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4dd28: 4879 0006 1cfc pea 61cfc <_Rate_monotonic_Information> <== NOT EXECUTED 4dd2e: 4eb9 0004 994c jsr 4994c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4dd34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4dd38: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dd3a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4dd3e: 667a bnes 4ddba <rtems_rate_monotonic_get_statistics+0xaa><== NOT EXECUTED
case OBJECTS_LOCAL:
dst = statistics;
src = &the_period->Statistics;
dst->count = src->count;
4dd40: 24a8 0054 movel %a0@(84),%a2@ <== NOT EXECUTED
dst->missed_count = src->missed_count;
4dd44: 2568 0058 0004 movel %a0@(88),%a2@(4) <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_To_timespec( &src->min_cpu_time, &dst->min_cpu_time );
4dd4a: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED 4dd4e: 2228 0060 movel %a0@(96),%d1 <== NOT EXECUTED 4dd52: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED 4dd56: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time );
4dd5a: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED 4dd5e: 2228 0068 movel %a0@(104),%d1 <== NOT EXECUTED 4dd62: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED 4dd66: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
4dd6a: 2028 006c movel %a0@(108),%d0 <== NOT EXECUTED 4dd6e: 2228 0070 movel %a0@(112),%d1 <== NOT EXECUTED 4dd72: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED 4dd76: 2541 001c movel %d1,%a2@(28) <== NOT EXECUTED
_Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time );
4dd7a: 2028 0074 movel %a0@(116),%d0 <== NOT EXECUTED 4dd7e: 2228 0078 movel %a0@(120),%d1 <== NOT EXECUTED 4dd82: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED 4dd86: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time );
4dd8a: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED 4dd8e: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED 4dd92: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED 4dd96: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
4dd9a: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED 4dd9e: 2228 0088 movel %a0@(136),%d1 <== NOT EXECUTED 4dda2: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4dda6: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
dst->min_wall_time = src->min_wall_time;
dst->max_wall_time = src->max_wall_time;
dst->total_wall_time = src->total_wall_time;
#endif
_Thread_Enable_dispatch();
4ddaa: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ddb0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
dst->max_wall_time = src->max_wall_time;
dst->total_wall_time = src->total_wall_time;
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4ddb4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ddb6: 4e5e unlk %fp <== NOT EXECUTED 4ddb8: 4e75 rts <== NOT EXECUTED 4ddba: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ddbe: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ddc0: 4e5e unlk %fp <== NOT EXECUTED 4ddc2: 4e75 rts <== NOT EXECUTED 4ddc4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
Rate_monotonic_Control *the_period;
rtems_rate_monotonic_period_statistics *dst;
Rate_monotonic_Statistics *src;
if ( !statistics )
return RTEMS_INVALID_ADDRESS;
4ddc8: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ddca: 4e5e unlk %fp <== NOT EXECUTED
...
0004ddd0 <rtems_rate_monotonic_get_status>:
rtems_status_code rtems_rate_monotonic_get_status(
rtems_id id,
rtems_rate_monotonic_period_status *status
)
{
4ddd0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4ddd4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ddd6: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Objects_Locations location;
Rate_monotonic_Period_time_t since_last_period;
Rate_monotonic_Control *the_period;
bool valid_status;
if ( !status )
4ddda: 4a8a tstl %a2 <== NOT EXECUTED 4dddc: 6700 00a0 beqw 4de7e <rtems_rate_monotonic_get_status+0xae><== NOT EXECUTED 4dde0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4dde4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4dde8: 4879 0006 1cfc pea 61cfc <_Rate_monotonic_Information> <== NOT EXECUTED 4ddee: 4eb9 0004 994c jsr 4994c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4ddf4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ddf8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ddfa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ddfe: 6632 bnes 4de32 <rtems_rate_monotonic_get_status+0x62><== NOT EXECUTED
case OBJECTS_LOCAL:
status->owner = the_period->owner->Object.id;
4de00: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED 4de04: 24a9 0008 movel %a1@(8),%a2@ <== NOT EXECUTED
status->state = the_period->state;
4de08: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 4de0c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
/*
* If the period is inactive, there is no information.
*/
if ( status->state == RATE_MONOTONIC_INACTIVE ) {
4de10: 662a bnes 4de3c <rtems_rate_monotonic_get_status+0x6c><== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timespec_Set_to_zero( &status->since_last_period );
4de12: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED 4de16: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Timespec_Set_to_zero( &status->executed_since_last_period );
4de1a: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED 4de1e: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
status->since_last_period = since_last_period;
status->executed_since_last_period = executed;
#endif
}
_Thread_Enable_dispatch();
4de22: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4de28: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de2a: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4de2e: 4e5e unlk %fp <== NOT EXECUTED 4de30: 4e75 rts <== NOT EXECUTED 4de32: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4de36: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4de38: 4e5e unlk %fp <== NOT EXECUTED 4de3a: 4e75 rts <== NOT EXECUTED
} else {
/*
* Grab the current status.
*/
valid_status =
4de3c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 4de40: 486e ffec pea %fp@(-20) <== NOT EXECUTED 4de44: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4de46: 4eb9 0004 72c0 jsr 472c0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
4de4c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4de50: 4a00 tstb %d0 <== NOT EXECUTED 4de52: 6734 beqs 4de88 <rtems_rate_monotonic_get_status+0xb8><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_To_timespec(
4de54: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED 4de58: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED 4de5c: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED 4de60: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
&since_last_period, &status->since_last_period
);
_Timestamp_To_timespec(
4de64: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 4de68: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED 4de6c: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED 4de70: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
status->since_last_period = since_last_period;
status->executed_since_last_period = executed;
#endif
}
_Thread_Enable_dispatch();
4de74: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4de7a: 4280 clrl %d0 <== NOT EXECUTED 4de7c: 60ac bras 4de2a <rtems_rate_monotonic_get_status+0x5a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de7e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
Rate_monotonic_Period_time_t since_last_period;
Rate_monotonic_Control *the_period;
bool valid_status;
if ( !status )
return RTEMS_INVALID_ADDRESS;
4de82: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de84: 4e5e unlk %fp <== NOT EXECUTED 4de86: 4e75 rts <== NOT EXECUTED
valid_status =
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
_Thread_Enable_dispatch();
4de88: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de8e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
4de92: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de94: 4e5e unlk %fp <== NOT EXECUTED
00047294 <rtems_rate_monotonic_ident>:
rtems_status_code rtems_rate_monotonic_ident(
rtems_name name,
rtems_id *id
)
{
47294: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
47298: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4729c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 472a2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 472a6: 4879 0006 1cfc pea 61cfc <_Rate_monotonic_Information> <== NOT EXECUTED 472ac: 4eb9 0004 9afc jsr 49afc <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
472b2: 41f9 0005 f57e lea 5f57e <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
472b8: 4e5e unlk %fp <== NOT EXECUTED 472ba: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00047510 <rtems_rate_monotonic_period>:
rtems_status_code rtems_rate_monotonic_period(
rtems_id id,
rtems_interval length
)
{
47510: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 47514: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47516: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
47518: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4751c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 47520: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47522: 4879 0006 1cfc pea 61cfc <_Rate_monotonic_Information> <== NOT EXECUTED 47528: 4eb9 0004 994c jsr 4994c <_Objects_Get> <== NOT EXECUTED
rtems_rate_monotonic_period_states local_state;
ISR_Level level;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4752e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47532: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47536: 6624 bnes 4755c <rtems_rate_monotonic_period+0x4c><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
47538: 2279 0006 2288 moveal 62288 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4753e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47540: b3e8 0040 cmpal %a0@(64),%a1 <== NOT EXECUTED 47544: 6726 beqs 4756c <rtems_rate_monotonic_period+0x5c><== NOT EXECUTED
_Thread_Enable_dispatch();
47546: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NOT_OWNER_OF_RESOURCE;
4754c: 7617 moveq #23,%d3 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4754e: 2003 movel %d3,%d0 <== NOT EXECUTED 47550: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 47554: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 47558: 4e5e unlk %fp <== NOT EXECUTED 4755a: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4755c: 7604 moveq #4,%d3 <== NOT EXECUTED
}
4755e: 2003 movel %d3,%d0 <== NOT EXECUTED 47560: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 47564: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 47568: 4e5e unlk %fp <== NOT EXECUTED 4756a: 4e75 rts <== NOT EXECUTED
if ( !_Thread_Is_executing( the_period->owner ) ) {
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
if ( length == RTEMS_PERIOD_STATUS ) {
4756c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 47570: 6624 bnes 47596 <rtems_rate_monotonic_period+0x86><== NOT EXECUTED
switch ( the_period->state ) {
47572: 2040 moveal %d0,%a0 <== NOT EXECUTED 47574: 7204 moveq #4,%d1 <== NOT EXECUTED 47576: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 4757a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4757c: 6400 008a bccw 47608 <rtems_rate_monotonic_period+0xf8><== NOT EXECUTED 47580: 4283 clrl %d3 <== NOT EXECUTED
case RATE_MONOTONIC_ACTIVE:
default: /* unreached -- only to remove warnings */
return_value = RTEMS_SUCCESSFUL;
break;
}
_Thread_Enable_dispatch();
47582: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47588: 2003 movel %d3,%d0 <== NOT EXECUTED 4758a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4758e: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 47592: 4e5e unlk %fp <== NOT EXECUTED 47594: 4e75 rts <== NOT EXECUTED
}
_Thread_Enable_dispatch();
return( return_value );
}
_ISR_Disable( level );
47596: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4759c: 40c3 movew %sr,%d3 <== NOT EXECUTED 4759e: 8283 orl %d3,%d1 <== NOT EXECUTED 475a0: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
475a2: 2040 moveal %d0,%a0 <== NOT EXECUTED 475a4: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED 475a8: 6772 beqs 4761c <rtems_rate_monotonic_period+0x10c><== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {
475aa: 7402 moveq #2,%d2 <== NOT EXECUTED 475ac: b481 cmpl %d1,%d2 <== NOT EXECUTED 475ae: 6700 00d2 beqw 47682 <rtems_rate_monotonic_period+0x172><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {
475b2: 7404 moveq #4,%d2 <== NOT EXECUTED 475b4: b481 cmpl %d1,%d2 <== NOT EXECUTED 475b6: 66a4 bnes 4755c <rtems_rate_monotonic_period+0x4c><== NOT EXECUTED
/*
* Update statistics from the concluding period
*/
_Rate_monotonic_Update_statistics( the_period );
475b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 475ba: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 475be: 4eb9 0004 73f6 jsr 473f6 <_Rate_monotonic_Update_statistics><== NOT EXECUTED
_ISR_Enable( level );
475c4: 46c3 movew %d3,%sr <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
475c6: 7202 moveq #2,%d1 <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_TIMEOUT;
475c8: 7606 moveq #6,%d3 <== NOT EXECUTED
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
475ca: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 475ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
the_period->next_length = length;
475d0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
475d4: 2141 0038 movel %d1,%a0@(56) <== NOT EXECUTED
the_period->next_length = length;
475d8: 2149 003c movel %a1,%a0@(60) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
475dc: 2149 001c movel %a1,%a0@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
475e0: 4868 0010 pea %a0@(16) <== NOT EXECUTED 475e4: 4879 0006 1eba pea 61eba <_Watchdog_Ticks_chain> <== NOT EXECUTED 475ea: 4eb9 0004 b558 jsr 4b558 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
475f0: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
475f6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 475fa: 2003 movel %d3,%d0 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_TIMEOUT;
475fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47600: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 47604: 4e5e unlk %fp <== NOT EXECUTED 47606: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
if ( length == RTEMS_PERIOD_STATUS ) {
switch ( the_period->state ) {
47608: 41f9 0005 f39e lea 5f39e <CSWTCH.2>,%a0 <== NOT EXECUTED 4760e: 2630 0c00 movel %a0@(00000000,%d0:l:4),%d3 <== NOT EXECUTED
case RATE_MONOTONIC_ACTIVE:
default: /* unreached -- only to remove warnings */
return_value = RTEMS_SUCCESSFUL;
break;
}
_Thread_Enable_dispatch();
47612: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED 47618: 6000 ff6e braw 47588 <rtems_rate_monotonic_period+0x78><== NOT EXECUTED
return( return_value );
}
_ISR_Disable( level );
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
_ISR_Enable( level );
4761c: 46c3 movew %d3,%sr <== NOT EXECUTED
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
4761e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47620: 4283 clrl %d3 <== NOT EXECUTED
_ISR_Enable( level );
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
47622: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 47626: 4eb9 0004 7378 jsr 47378 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4762c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47630: 2240 moveal %d0,%a1 <== NOT EXECUTED 47632: 223c 0004 7994 movel #293268,%d1 <== NOT EXECUTED
the_watchdog->id = id;
47638: 2342 0030 movel %d2,%a1@(48) <== NOT EXECUTED
_Rate_monotonic_Timeout,
id,
NULL
);
the_period->next_length = length;
4763c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
47640: 2341 002c movel %d1,%a1@(44) <== NOT EXECUTED
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
the_period->state = RATE_MONOTONIC_ACTIVE;
47644: 7202 moveq #2,%d1 <== NOT EXECUTED
_Rate_monotonic_Timeout,
id,
NULL
);
the_period->next_length = length;
47646: 2342 003c movel %d2,%a1@(60) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4764a: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
the_period->state = RATE_MONOTONIC_ACTIVE;
4764e: 2341 0038 movel %d1,%a1@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
47652: 42a9 0018 clrl %a1@(24) <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data;
47656: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4765a: 4869 0010 pea %a1@(16) <== NOT EXECUTED 4765e: 4879 0006 1eba pea 61eba <_Watchdog_Ticks_chain> <== NOT EXECUTED 47664: 4eb9 0004 b558 jsr 4b558 <_Watchdog_Insert> <== NOT EXECUTED
);
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
4766a: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47670: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 47674: 2003 movel %d3,%d0 <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47676: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4767a: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 4767e: 4e5e unlk %fp <== NOT EXECUTED 47680: 4e75 rts <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {
/*
* Update statistics from the concluding period.
*/
_Rate_monotonic_Update_statistics( the_period );
47682: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47684: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 47688: 4eb9 0004 73f6 jsr 473f6 <_Rate_monotonic_Update_statistics><== NOT EXECUTED
/*
* 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;
4768e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47692: 7201 moveq #1,%d1 <== NOT EXECUTED 47694: 2040 moveal %d0,%a0 <== NOT EXECUTED
the_period->next_length = length;
47696: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
/*
* 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;
4769a: 2141 0038 movel %d1,%a0@(56) <== NOT EXECUTED
the_period->next_length = length;
4769e: 2149 003c movel %a1,%a0@(60) <== NOT EXECUTED
_ISR_Enable( level );
476a2: 46c3 movew %d3,%sr <== NOT EXECUTED
_Thread_Executing->Wait.id = the_period->Object.id;
476a4: 2079 0006 2288 moveal 62288 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 476aa: 2240 moveal %d0,%a1 <== NOT EXECUTED 476ac: 5089 addql #8,%a1 <== NOT EXECUTED 476ae: 2151 0020 movel %a1@,%a0@(32) <== NOT EXECUTED
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
476b2: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED 476b6: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 476ba: 2f08 movel %a0,%sp@- <== NOT EXECUTED 476bc: 4eb9 0004 ac1c jsr 4ac1c <_Thread_Set_state> <== NOT EXECUTED
/*
* Did the watchdog timer expire while we were actually blocking
* on it?
*/
_ISR_Disable( level );
476c2: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 476c8: 40c2 movew %sr,%d2 <== NOT EXECUTED 476ca: 8282 orl %d2,%d1 <== NOT EXECUTED 476cc: 46c1 movew %d1,%sr <== NOT EXECUTED
local_state = the_period->state;
the_period->state = RATE_MONOTONIC_ACTIVE;
476ce: 7602 moveq #2,%d3 <== NOT EXECUTED
/*
* Did the watchdog timer expire while we were actually blocking
* on it?
*/
_ISR_Disable( level );
local_state = the_period->state;
476d0: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 476d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 476d6: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
476da: 2143 0038 movel %d3,%a0@(56) <== NOT EXECUTED
_ISR_Enable( level );
476de: 46c2 movew %d2,%sr <== NOT EXECUTED
/*
* 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 )
476e0: 7003 moveq #3,%d0 <== NOT EXECUTED 476e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 476e6: b081 cmpl %d1,%d0 <== NOT EXECUTED 476e8: 6716 beqs 47700 <rtems_rate_monotonic_period+0x1f0><== NOT EXECUTED
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
_Thread_Enable_dispatch();
476ea: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
476f0: 4283 clrl %d3 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
476f2: 2003 movel %d3,%d0 <== NOT EXECUTED 476f4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 476f8: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED 476fc: 4e5e unlk %fp <== NOT EXECUTED 476fe: 4e75 rts <== NOT EXECUTED
/*
* 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 );
47700: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47704: 4283 clrl %d3 <== NOT EXECUTED
/*
* 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 );
47706: 2f39 0006 2288 movel 62288 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4770c: 4eb9 0004 9e74 jsr 49e74 <_Thread_Clear_state> <== NOT EXECUTED 47712: 508f addql #8,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
47714: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED 4771a: 60d6 bras 476f2 <rtems_rate_monotonic_period+0x1e2><== NOT EXECUTED
000478be <rtems_rate_monotonic_report_statistics>:
}
}
}
void rtems_rate_monotonic_report_statistics( void )
{
478be: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_rate_monotonic_report_statistics_with_plugin( NULL, printk_plugin );
478c2: 4879 0004 d27c pea 4d27c <printk_plugin> <== NOT EXECUTED 478c8: 42a7 clrl %sp@- <== NOT EXECUTED 478ca: 4eb9 0004 771c jsr 4771c <rtems_rate_monotonic_report_statistics_with_plugin><== NOT EXECUTED 478d0: 508f addql #8,%sp <== NOT EXECUTED
}
478d2: 4e5e unlk %fp <== NOT EXECUTED
...
0004771c <rtems_rate_monotonic_report_statistics_with_plugin>:
*/
void rtems_rate_monotonic_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
4771c: 4e56 ff78 linkw %fp,#-136 <== NOT EXECUTED 47720: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 47724: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 47728: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_id id;
rtems_rate_monotonic_period_statistics the_stats;
rtems_rate_monotonic_period_status the_status;
char name[5];
if ( !print )
4772c: 4a8a tstl %a2 <== NOT EXECUTED 4772e: 6700 0082 beqw 477b2 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
return;
(*print)( context, "Period information by period\n" );
47732: 4879 0005 f3b2 pea 5f3b2 <CSWTCH.2+0x14> <== NOT EXECUTED 47738: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4773a: 4e92 jsr %a2@ <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)( context, "--- CPU times are in seconds ---\n" );
4773c: 4879 0005 f3d0 pea 5f3d0 <CSWTCH.2+0x32> <== NOT EXECUTED 47742: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47744: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context, "--- Wall times are in seconds ---\n" );
47746: 4879 0005 f3f2 pea 5f3f2 <CSWTCH.2+0x54> <== NOT EXECUTED 4774c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4774e: 4e92 jsr %a2@ <== NOT EXECUTED
Be sure to test the various cases. (*print)( context,"\ 1234567890123456789012345678901234567890123456789012345678901234567890123456789\ \n"); */ (*print)( context, " ID OWNER COUNT MISSED "
47750: 4879 0005 f415 pea 5f415 <CSWTCH.2+0x77> <== NOT EXECUTED 47756: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47758: 4e92 jsr %a2@ <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
" "
#endif
" WALL TIME\n"
);
(*print)( context, " "
4775a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4775e: 2ebc 0005 f460 movel #390240,%sp@ <== NOT EXECUTED 47764: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47766: 4e92 jsr %a2@ <== NOT EXECUTED
/*
* 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 ;
47768: 2439 0006 1d02 movel 61d02 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED 4776e: 508f addql #8,%sp <== NOT EXECUTED 47770: b4b9 0006 1d06 cmpl 61d06 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 47776: 623a bhis 477b2 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED 47778: 280e movel %fp,%d4 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( status != RTEMS_SUCCESSFUL )
continue;
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
4777a: 2a0e movel %fp,%d5 <== NOT EXECUTED 4777c: 0684 ffff ffa2 addil #-94,%d4 <== NOT EXECUTED 47782: 47f9 0004 dd10 lea 4dd10 <rtems_rate_monotonic_get_statistics>,%a3<== NOT EXECUTED
status = rtems_rate_monotonic_get_statistics( id, &the_stats );
if ( status != RTEMS_SUCCESSFUL )
continue;
/* If the above passed, so should this but check it anyway */
status = rtems_rate_monotonic_get_status( id, &the_status );
47788: 4bf9 0004 ddd0 lea 4ddd0 <rtems_rate_monotonic_get_status>,%a5<== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( status != RTEMS_SUCCESSFUL )
continue;
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
4778e: 5b85 subql #5,%d5 <== NOT EXECUTED 47790: 49f9 0004 7a74 lea 47a74 <rtems_object_get_name>,%a4 <== 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 );
47796: 2e3c 0004 b158 movel #307544,%d7 <== NOT EXECUTED
* 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 );
4779c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4779e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 477a0: 4e93 jsr %a3@ <== NOT EXECUTED
if ( status != RTEMS_SUCCESSFUL )
477a2: 508f addql #8,%sp <== NOT EXECUTED 477a4: 4a80 tstl %d0 <== NOT EXECUTED 477a6: 6714 beqs 477bc <rtems_rate_monotonic_report_statistics_with_plugin+0xa0><== NOT EXECUTED
* 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++ ) {
477a8: 5282 addql #1,%d2 <== NOT EXECUTED
/*
* 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 ;
477aa: b4b9 0006 1d06 cmpl 61d06 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 477b0: 63ea blss 4779c <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== NOT EXECUTED
the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
);
#endif
}
}
}
477b2: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED 477b8: 4e5e unlk %fp <== NOT EXECUTED 477ba: 4e75 rts <== NOT EXECUTED
status = rtems_rate_monotonic_get_statistics( id, &the_stats );
if ( status != RTEMS_SUCCESSFUL )
continue;
/* If the above passed, so should this but check it anyway */
status = rtems_rate_monotonic_get_status( id, &the_status );
477bc: 486e ffda pea %fp@(-38) <== NOT EXECUTED 477c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 477c2: 4e95 jsr %a5@ <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( status != RTEMS_SUCCESSFUL )
continue;
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
477c4: 2f05 movel %d5,%sp@- <== NOT EXECUTED 477c6: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 477ca: 2f2e ffda movel %fp@(-38),%sp@- <== NOT EXECUTED 477ce: 4e94 jsr %a4@ <== NOT EXECUTED
/*
* Print part of report line that is not dependent on granularity
*/
(*print)( context,
477d0: 2f2e ffa6 movel %fp@(-90),%sp@- <== NOT EXECUTED 477d4: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED 477d8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 477da: 2f02 movel %d2,%sp@- <== NOT EXECUTED 477dc: 4879 0005 f4ac pea 5f4ac <CSWTCH.2+0x10e> <== NOT EXECUTED 477e2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 477e4: 4e92 jsr %a2@ <== NOT EXECUTED
);
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
477e6: 202e ffa2 movel %fp@(-94),%d0 <== NOT EXECUTED 477ea: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 477ee: 6618 bnes 47808 <rtems_rate_monotonic_report_statistics_with_plugin+0xec><== NOT EXECUTED
(*print)( context, "\n" );
477f0: 4879 0005 f2d6 pea 5f2d6 <rtems_status_assoc+0x19e> <== NOT EXECUTED
* 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++ ) {
477f6: 5282 addql #1,%d2 <== NOT EXECUTED
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
(*print)( context, "\n" );
477f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 477fa: 4e92 jsr %a2@ <== NOT EXECUTED
continue;
477fc: 508f addql #8,%sp <== NOT EXECUTED
/*
* 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 ;
477fe: b4b9 0006 1d06 cmpl 61d06 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 47804: 6396 blss 4779c <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== NOT EXECUTED 47806: 60aa bras 477b2 <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 );
47808: 486e fff2 pea %fp@(-14) <== NOT EXECUTED 4780c: 2047 moveal %d7,%a0 <== NOT EXECUTED
* 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++ ) {
4780e: 5282 addql #1,%d2 <== 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 );
47810: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47812: 486e ffba pea %fp@(-70) <== NOT EXECUTED 47816: 4e90 jsr %a0@ <== NOT EXECUTED
(*print)( context,
47818: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED 4781c: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 47822: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED 47826: 2c2e ffb6 movel %fp@(-74),%d6 <== NOT EXECUTED 4782a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4782c: 2001 movel %d1,%d0 <== NOT EXECUTED 4782e: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED 47832: 4c40 6806 remsl %d0,%d6,%d6 <== NOT EXECUTED 47836: 202e ffae movel %fp@(-82),%d0 <== NOT EXECUTED 4783a: 2246 moveal %d6,%a1 <== NOT EXECUTED 4783c: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 47842: 2f09 movel %a1,%sp@- <== NOT EXECUTED 47844: 2f2e ffb2 movel %fp@(-78),%sp@- <== NOT EXECUTED 47848: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
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,
4784c: 2c3c 0000 03e8 movel #1000,%d6 <== NOT EXECUTED
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,
47852: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47854: 2f2e ffaa movel %fp@(-86),%sp@- <== NOT EXECUTED 47858: 4879 0005 f4c3 pea 5f4c3 <CSWTCH.2+0x125> <== NOT EXECUTED 4785e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47860: 4e92 jsr %a2@ <== NOT EXECUTED
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);
47862: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 47866: 2047 moveal %d7,%a0 <== NOT EXECUTED 47868: 486e fff2 pea %fp@(-14) <== NOT EXECUTED 4786c: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED 47870: 486e ffd2 pea %fp@(-46) <== NOT EXECUTED 47874: 4e90 jsr %a0@ <== NOT EXECUTED
(*print)( context,
47876: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED 4787a: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED 4787e: 222e ffce movel %fp@(-50),%d1 <== NOT EXECUTED 47882: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47884: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED 47888: 4c46 1801 remsl %d6,%d1,%d1 <== NOT EXECUTED 4788c: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED 47890: 2241 moveal %d1,%a1 <== NOT EXECUTED 47892: 2f09 movel %a1,%sp@- <== NOT EXECUTED 47894: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED 47898: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED 4789c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4789e: 2f2e ffc2 movel %fp@(-62),%sp@- <== NOT EXECUTED 478a2: 4879 0005 f4e2 pea 5f4e2 <CSWTCH.2+0x144> <== NOT EXECUTED 478a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 478aa: 4e92 jsr %a2@ <== NOT EXECUTED 478ac: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
/*
* 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 ;
478b0: b4b9 0006 1d06 cmpl 61d06 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 478b6: 6300 fee4 blsw 4779c <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== NOT EXECUTED 478ba: 6000 fef6 braw 477b2 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
000478d8 <rtems_rate_monotonic_reset_all_statistics>:
/*
* rtems_rate_monotonic_reset_all_statistics
*/
void rtems_rate_monotonic_reset_all_statistics( void )
{
478d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 478dc: 2039 0006 1df8 movel 61df8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 478e2: 5280 addql #1,%d0 <== NOT EXECUTED 478e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 478e6: 23c0 0006 1df8 movel %d0,61df8 <_Thread_Dispatch_disable_level><== NOT EXECUTED 478ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* 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 ;
478ee: 2439 0006 1d02 movel 61d02 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED 478f4: b4b9 0006 1d06 cmpl 61d06 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 478fa: 6216 bhis 47912 <rtems_rate_monotonic_reset_all_statistics+0x3a><== NOT EXECUTED 478fc: 45f9 0004 7924 lea 47924 <rtems_rate_monotonic_reset_statistics>,%a2<== NOT EXECUTED
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
status = rtems_rate_monotonic_reset_statistics( id );
47902: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* 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++ ) {
47904: 5282 addql #1,%d2 <== NOT EXECUTED
status = rtems_rate_monotonic_reset_statistics( id );
47906: 4e92 jsr %a2@ <== NOT EXECUTED
/*
* 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 ;
47908: 588f addql #4,%sp <== NOT EXECUTED 4790a: b4b9 0006 1d06 cmpl 61d06 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 47910: 63f0 blss 47902 <rtems_rate_monotonic_reset_all_statistics+0x2a><== NOT EXECUTED
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
}
47912: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47916: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4791a: 4e5e unlk %fp <== NOT EXECUTED
}
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
4791c: 4ef9 0004 a25a jmp 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
...
00047924 <rtems_rate_monotonic_reset_statistics>:
*/
rtems_status_code rtems_rate_monotonic_reset_statistics(
rtems_id id
)
{
47924: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47928: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4792c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47930: 4879 0006 1cfc pea 61cfc <_Rate_monotonic_Information> <== NOT EXECUTED 47936: 4eb9 0004 994c jsr 4994c <_Objects_Get> <== NOT EXECUTED
Objects_Locations location;
Rate_monotonic_Control *the_period;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4793c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47940: 2040 moveal %d0,%a0 <== NOT EXECUTED 47942: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47946: 6646 bnes 4798e <rtems_rate_monotonic_reset_statistics+0x6a><== NOT EXECUTED
case OBJECTS_LOCAL:
_Rate_monotonic_Reset_statistics( the_period );
47948: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED 4794c: 43e8 007c lea %a0@(124),%a1 <== NOT EXECUTED 47950: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED 47954: 42a8 0064 clrl %a0@(100) <== NOT EXECUTED 47958: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED 4795e: 42a8 0068 clrl %a0@(104) <== NOT EXECUTED 47962: 42a8 006c clrl %a0@(108) <== NOT EXECUTED 47966: 42a8 0070 clrl %a0@(112) <== NOT EXECUTED 4796a: 4299 clrl %a1@+ <== NOT EXECUTED 4796c: 4299 clrl %a1@+ <== NOT EXECUTED 4796e: 4299 clrl %a1@+ <== NOT EXECUTED 47970: 2140 005c movel %d0,%a0@(92) <== NOT EXECUTED 47974: 2140 0060 movel %d0,%a0@(96) <== NOT EXECUTED 47978: 2140 0074 movel %d0,%a0@(116) <== NOT EXECUTED 4797c: 2140 0078 movel %d0,%a0@(120) <== NOT EXECUTED 47980: 4291 clrl %a1@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47982: 4eb9 0004 a25a jsr 4a25a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47988: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4798a: 4e5e unlk %fp <== NOT EXECUTED 4798c: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4798e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47990: 4e5e unlk %fp <== NOT EXECUTED
000572e8 <rtems_region_create>:
uintptr_t length,
uintptr_t page_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
572e8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 572ec: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 572f0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 572f4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 572f8: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED 572fc: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED 57300: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED 57304: 266e 001c moveal %fp@(28),%a3 <== NOT EXECUTED
rtems_status_code return_status;
Region_Control *the_region;
if ( !rtems_is_name_valid( name ) )
57308: 4a83 tstl %d3 <== NOT EXECUTED 5730a: 6774 beqs 57380 <rtems_region_create+0x98> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !starting_address )
5730c: 4a82 tstl %d2 <== NOT EXECUTED 5730e: 6700 00dc beqw 573ec <rtems_region_create+0x104> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !id )
57312: 4a8b tstl %a3 <== NOT EXECUTED 57314: 6700 00d6 beqw 573ec <rtems_region_create+0x104> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
57318: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5731e: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED
* This function allocates a region control block from
* the inactive chain of free region control blocks.
*/
RTEMS_INLINE_ROUTINE Region_Control *_Region_Allocate( void )
{
return (Region_Control *) _Objects_Allocate( &_Region_Information );
57324: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 5732a: 4eb9 0005 b474 jsr 5b474 <_Objects_Allocate> <== NOT EXECUTED
the_region = _Region_Allocate();
if ( !the_region )
57330: 508f addql #8,%sp <== NOT EXECUTED 57332: 2440 moveal %d0,%a2 <== NOT EXECUTED 57334: 4a80 tstl %d0 <== NOT EXECUTED 57336: 6700 00c2 beqw 573fa <rtems_region_create+0x112> <== NOT EXECUTED
return_status = RTEMS_TOO_MANY;
else {
the_region->maximum_segment_size = _Heap_Initialize(
5733a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5733c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 5733e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57340: 486a 0068 pea %a2@(104) <== NOT EXECUTED 57344: 4eb9 0005 b006 jsr 5b006 <_Heap_Initialize> <== NOT EXECUTED
&the_region->Memory, starting_address, length, page_size
);
if ( !the_region->maximum_segment_size ) {
5734a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if ( !the_region )
return_status = RTEMS_TOO_MANY;
else {
the_region->maximum_segment_size = _Heap_Initialize(
5734e: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
&the_region->Memory, starting_address, length, page_size
);
if ( !the_region->maximum_segment_size ) {
57352: 663a bnes 5738e <rtems_region_create+0xa6> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
57354: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57356: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_INVALID_SIZE;
5735c: 7408 moveq #8,%d2 <== NOT EXECUTED 5735e: 4eb9 0005 b7c8 jsr 5b7c8 <_Objects_Free> <== NOT EXECUTED 57364: 508f addql #8,%sp <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
57366: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5736c: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57372: 588f addql #4,%sp <== NOT EXECUTED
}
57374: 2002 movel %d2,%d0 <== NOT EXECUTED 57376: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 5737c: 4e5e unlk %fp <== NOT EXECUTED 5737e: 4e75 rts <== NOT EXECUTED
{
rtems_status_code return_status;
Region_Control *the_region;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
57380: 7403 moveq #3,%d2 <== NOT EXECUTED
}
}
_RTEMS_Unlock_allocator();
return return_status;
}
57382: 2002 movel %d2,%d0 <== NOT EXECUTED 57384: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 5738a: 4e5e unlk %fp <== NOT EXECUTED 5738c: 4e75 rts <== NOT EXECUTED
return_status = RTEMS_INVALID_SIZE;
}
else {
the_region->starting_address = starting_address;
5738e: 2542 0050 movel %d2,%a2@(80) <== NOT EXECUTED
&the_region->Object,
(Objects_Name) name
);
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
57392: 4282 clrl %d2 <== NOT EXECUTED
}
else {
the_region->starting_address = starting_address;
the_region->length = length;
57394: 2545 0054 movel %d5,%a2@(84) <== NOT EXECUTED
the_region->page_size = page_size;
the_region->attribute_set = attribute_set;
the_region->number_of_used_blocks = 0;
_Thread_queue_Initialize(
57398: 44c6 movew %d6,%ccr <== NOT EXECUTED 5739a: 57c0 seq %d0 <== NOT EXECUTED
else {
the_region->starting_address = starting_address;
the_region->length = length;
the_region->page_size = page_size;
5739c: 2544 0058 movel %d4,%a2@(88) <== NOT EXECUTED
the_region->attribute_set = attribute_set;
the_region->number_of_used_blocks = 0;
_Thread_queue_Initialize(
573a0: 49c0 extbl %d0 <== NOT EXECUTED 573a2: 4480 negl %d0 <== NOT EXECUTED
else {
the_region->starting_address = starting_address;
the_region->length = length;
the_region->page_size = page_size;
the_region->attribute_set = attribute_set;
573a4: 2546 0060 movel %d6,%a2@(96) <== NOT EXECUTED
the_region->number_of_used_blocks = 0;
573a8: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED
_Thread_queue_Initialize(
573ac: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED 573b0: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> <== NOT EXECUTED 573b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 573b6: 486a 0010 pea %a2@(16) <== NOT EXECUTED 573ba: 4eb9 0005 ca8c jsr 5ca8c <_Thread_queue_Initialize> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
573c0: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
573c4: 4281 clrl %d1 <== NOT EXECUTED
&_Region_Information,
&the_region->Object,
(Objects_Name) name
);
*id = the_region->Object.id;
573c6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
573ca: 2079 0007 ea8e moveal 7ea8e <_Region_Information+0x18>,%a0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
573d0: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
573d2: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
573d6: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED 573da: 2680 movel %d0,%a3@ <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
573dc: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 573e2: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
573e8: 588f addql #4,%sp <== NOT EXECUTED 573ea: 6088 bras 57374 <rtems_region_create+0x8c> <== NOT EXECUTED
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
if ( !id )
return RTEMS_INVALID_ADDRESS;
573ec: 7409 moveq #9,%d2 <== NOT EXECUTED
}
}
_RTEMS_Unlock_allocator();
return return_status;
}
573ee: 2002 movel %d2,%d0 <== NOT EXECUTED 573f0: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 573f6: 4e5e unlk %fp <== NOT EXECUTED 573f8: 4e75 rts <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
573fa: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
_RTEMS_Lock_allocator(); /* to prevent deletion */
the_region = _Region_Allocate();
if ( !the_region )
return_status = RTEMS_TOO_MANY;
57400: 7405 moveq #5,%d2 <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
57402: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57408: 588f addql #4,%sp <== NOT EXECUTED 5740a: 6000 ff68 braw 57374 <rtems_region_create+0x8c> <== NOT EXECUTED
...
00057410 <rtems_region_delete>:
*/
rtems_status_code rtems_region_delete(
rtems_id id
)
{
57410: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 57414: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57416: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
_RTEMS_Lock_allocator();
57418: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5741e: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get_no_protection( &_Region_Information, id, location );
57424: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57428: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5742c: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 57432: 4eb9 0005 b934 jsr 5b934 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
57438: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5743c: 2440 moveal %d0,%a2 <== NOT EXECUTED 5743e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 57442: 671c beqs 57460 <rtems_region_delete+0x50> <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57444: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
5744a: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
5744c: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status; }
57452: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 57456: 2002 movel %d2,%d0 <== NOT EXECUTED 57458: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5745c: 4e5e unlk %fp <== NOT EXECUTED 5745e: 4e75 rts <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
57460: 4aaa 0064 tstl %a2@(100) <== NOT EXECUTED 57464: 671c beqs 57482 <rtems_region_delete+0x72> <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57466: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
return_status = RTEMS_RESOURCE_IN_USE;
5746c: 740c moveq #12,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5746e: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status; }
57474: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 57478: 2002 movel %d2,%d0 <== NOT EXECUTED 5747a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5747e: 4e5e unlk %fp <== NOT EXECUTED 57480: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
return_status = RTEMS_RESOURCE_IN_USE;
else {
_Objects_Close( &_Region_Information, &the_region->Object );
57482: 2f00 movel %d0,%sp@- <== NOT EXECUTED 57484: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_SUCCESSFUL;
5748a: 4282 clrl %d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
return_status = RTEMS_RESOURCE_IN_USE;
else {
_Objects_Close( &_Region_Information, &the_region->Object );
5748c: 4eb9 0005 b504 jsr 5b504 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
57492: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57494: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 5749a: 4eb9 0005 b7c8 jsr 5b7c8 <_Objects_Free> <== NOT EXECUTED 574a0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
574a4: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 574aa: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status; }
574b0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 574b4: 2002 movel %d2,%d0 <== NOT EXECUTED 574b6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 574ba: 4e5e unlk %fp <== NOT EXECUTED
...
000574c0 <rtems_region_extend>:
rtems_status_code rtems_region_extend(
rtems_id id,
void *starting_address,
uintptr_t length
)
{
574c0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 574c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 574c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 574c8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
bool extend_ok;
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
if ( !starting_address )
574cc: 6700 0086 beqw 57554 <rtems_region_extend+0x94> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
574d0: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 574d6: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get_no_protection( &_Region_Information, id, location );
574dc: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 574e0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 574e4: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 574ea: 4eb9 0005 b934 jsr 5b934 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
574f0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 574f4: 2440 moveal %d0,%a2 <== NOT EXECUTED 574f6: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 574fa: 6646 bnes 57542 <rtems_region_extend+0x82> <== NOT EXECUTED
case OBJECTS_LOCAL:
extend_ok = _Heap_Extend(
574fc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57500: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 57504: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57506: 486a 0068 pea %a2@(104) <== NOT EXECUTED 5750a: 4eb9 0005 aa0c jsr 5aa0c <_Heap_Extend> <== NOT EXECUTED
starting_address,
length,
&amount_extended
);
if ( extend_ok ) {
57510: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 57514: 4a00 tstb %d0 <== NOT EXECUTED 57516: 674c beqs 57564 <rtems_region_extend+0xa4> <== NOT EXECUTED
the_region->length += amount_extended;
57518: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 5751c: d1aa 0054 addl %d0,%a2@(84) <== NOT EXECUTED
the_region->maximum_segment_size += amount_extended;
return_status = RTEMS_SUCCESSFUL;
57520: 4282 clrl %d2 <== NOT EXECUTED
&amount_extended
);
if ( extend_ok ) {
the_region->length += amount_extended;
the_region->maximum_segment_size += amount_extended;
57522: d1aa 005c addl %d0,%a2@(92) <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57526: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5752c: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57532: 588f addql #4,%sp <== NOT EXECUTED
}
57534: 2002 movel %d2,%d0 <== NOT EXECUTED 57536: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 5753a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 5753e: 4e5e unlk %fp <== NOT EXECUTED 57540: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57542: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57548: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
5754a: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57550: 588f addql #4,%sp <== NOT EXECUTED 57552: 60e0 bras 57534 <rtems_region_extend+0x74> <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
57554: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57556: 2002 movel %d2,%d0 <== NOT EXECUTED 57558: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 5755c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 57560: 4e5e unlk %fp <== NOT EXECUTED 57562: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57564: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
if ( extend_ok ) {
the_region->length += amount_extended;
the_region->maximum_segment_size += amount_extended;
return_status = RTEMS_SUCCESSFUL;
} else {
return_status = RTEMS_INVALID_ADDRESS;
5756a: 7409 moveq #9,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5756c: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57572: 588f addql #4,%sp <== NOT EXECUTED 57574: 60be bras 57534 <rtems_region_extend+0x74> <== NOT EXECUTED
...
00057578 <rtems_region_get_free_information>:
rtems_status_code rtems_region_get_free_information(
rtems_id id,
Heap_Information_block *the_info
)
{
57578: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5757c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5757e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 57582: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
57584: 4a8a tstl %a2 <== NOT EXECUTED 57586: 6776 beqs 575fe <rtems_region_get_free_information+0x86><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
57588: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5758e: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED 57594: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57598: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5759c: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 575a2: 4eb9 0005 b934 jsr 5b934 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
575a8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 575ac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 575b0: 663a bnes 575ec <rtems_region_get_free_information+0x74><== NOT EXECUTED
the_info->Used.number = 0;
the_info->Used.total = 0;
the_info->Used.largest = 0;
_Heap_Get_free_information( &the_region->Memory, &the_info->Free );
575b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 575b4: 2040 moveal %d0,%a0 <== NOT EXECUTED 575b6: 4868 0068 pea %a0@(104) <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
575ba: 4282 clrl %d2 <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
the_info->Used.number = 0;
575bc: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
the_info->Used.total = 0;
575c0: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
the_info->Used.largest = 0;
575c4: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
_Heap_Get_free_information( &the_region->Memory, &the_info->Free );
575c8: 4eb9 0005 ade0 jsr 5ade0 <_Heap_Get_free_information> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
break;
575ce: 508f addql #8,%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
575d0: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 575d6: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
575dc: 588f addql #4,%sp <== NOT EXECUTED
}
575de: 2002 movel %d2,%d0 <== NOT EXECUTED 575e0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 575e4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 575e8: 4e5e unlk %fp <== NOT EXECUTED 575ea: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
575ec: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
575f2: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
575f4: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
575fa: 588f addql #4,%sp <== NOT EXECUTED 575fc: 60e0 bras 575de <rtems_region_get_free_information+0x66><== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
575fe: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57600: 2002 movel %d2,%d0 <== NOT EXECUTED 57602: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 57606: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 5760a: 4e5e unlk %fp <== NOT EXECUTED
...
00057610 <rtems_region_get_information>:
rtems_status_code rtems_region_get_information(
rtems_id id,
Heap_Information_block *the_info
)
{
57610: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 57614: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57616: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
5761a: 6766 beqs 57682 <rtems_region_get_information+0x72><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
5761c: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57622: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED 57628: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5762c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 57630: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 57636: 4eb9 0005 b934 jsr 5b934 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
5763c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 57640: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 57644: 662a bnes 57670 <rtems_region_get_information+0x60><== NOT EXECUTED
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
57646: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57648: 2040 moveal %d0,%a0 <== NOT EXECUTED 5764a: 4868 0068 pea %a0@(104) <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
5764e: 4282 clrl %d2 <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
57650: 4eb9 0005 ae3c jsr 5ae3c <_Heap_Get_information> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
break;
57656: 508f addql #8,%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57658: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5765e: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57664: 588f addql #4,%sp <== NOT EXECUTED
}
57666: 2002 movel %d2,%d0 <== NOT EXECUTED 57668: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5766c: 4e5e unlk %fp <== NOT EXECUTED 5766e: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57670: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57676: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57678: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5767e: 588f addql #4,%sp <== NOT EXECUTED 57680: 60e4 bras 57666 <rtems_region_get_information+0x56><== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
57682: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57684: 2002 movel %d2,%d0 <== NOT EXECUTED 57686: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5768a: 4e5e unlk %fp <== NOT EXECUTED
...
00057690 <rtems_region_get_segment>:
uintptr_t size,
rtems_option option_set,
rtems_interval timeout,
void **segment
)
{
57690: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 57694: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 57698: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 5769c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 576a0: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
void *the_segment;
if ( !segment )
576a4: 4a8a tstl %a2 <== NOT EXECUTED 576a6: 6700 00be beqw 57766 <rtems_region_get_segment+0xd6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
*segment = NULL;
576aa: 4292 clrl %a2@ <== NOT EXECUTED
if ( size == 0 )
576ac: 4a82 tstl %d2 <== NOT EXECUTED 576ae: 660c bnes 576bc <rtems_region_get_segment+0x2c> <== NOT EXECUTED
return RTEMS_INVALID_SIZE;
576b0: 7008 moveq #8,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
576b2: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 576b8: 4e5e unlk %fp <== NOT EXECUTED 576ba: 4e75 rts <== NOT EXECUTED
*segment = NULL;
if ( size == 0 )
return RTEMS_INVALID_SIZE;
_RTEMS_Lock_allocator();
576bc: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 576c2: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED 576c8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 576cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 576ce: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED
executing = _Thread_Executing;
576d4: 2879 0007 f008 moveal 7f008 <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED 576da: 4eb9 0005 b934 jsr 5b934 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
576e0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 576e4: 2640 moveal %d0,%a3 <== NOT EXECUTED 576e6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 576ea: 6628 bnes 57714 <rtems_region_get_segment+0x84> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( size > the_region->maximum_segment_size )
576ec: b4ab 005c cmpl %a3@(92),%d2 <== NOT EXECUTED 576f0: 633c blss 5772e <rtems_region_get_segment+0x9e> <== NOT EXECUTED
return_status = RTEMS_INVALID_SIZE;
576f2: 7008 moveq #8,%d0 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
576f4: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 576fa: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 576fe: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57704: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 57708: 588f addql #4,%sp <== NOT EXECUTED
}
5770a: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 57710: 4e5e unlk %fp <== NOT EXECUTED 57712: 4e75 rts <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57714: 7004 moveq #4,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57716: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5771c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57720: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57726: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 5772a: 588f addql #4,%sp <== NOT EXECUTED 5772c: 60dc bras 5770a <rtems_region_get_segment+0x7a> <== NOT EXECUTED
* @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 );
5772e: 42a7 clrl %sp@- <== NOT EXECUTED 57730: 42a7 clrl %sp@- <== NOT EXECUTED 57732: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57734: 486b 0068 pea %a3@(104) <== NOT EXECUTED 57738: 4eb9 0005 a85c jsr 5a85c <_Heap_Allocate_aligned_with_boundary><== NOT EXECUTED
the_segment = _Region_Allocate_segment( the_region, size );
_Region_Debug_Walk( the_region, 2 );
if ( the_segment ) {
5773e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 57742: 2200 movel %d0,%d1 <== NOT EXECUTED 57744: 672c beqs 57772 <rtems_region_get_segment+0xe2> <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
57746: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
*segment = the_segment;
return_status = RTEMS_SUCCESSFUL;
5774a: 4280 clrl %d0 <== NOT EXECUTED
_Region_Debug_Walk( the_region, 2 );
if ( the_segment ) {
the_region->number_of_used_blocks += 1;
*segment = the_segment;
5774c: 2481 movel %d1,%a2@ <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5774e: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57754: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57758: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5775e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 57762: 588f addql #4,%sp <== NOT EXECUTED 57764: 60a4 bras 5770a <rtems_region_get_segment+0x7a> <== NOT EXECUTED
rtems_status_code return_status;
Region_Control *the_region;
void *the_segment;
if ( !segment )
return RTEMS_INVALID_ADDRESS;
57766: 7009 moveq #9,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57768: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 5776e: 4e5e unlk %fp <== NOT EXECUTED 57770: 4e75 rts <== NOT EXECUTED
if ( the_segment ) {
the_region->number_of_used_blocks += 1;
*segment = the_segment;
return_status = RTEMS_SUCCESSFUL;
} else if ( _Options_Is_no_wait( option_set ) ) {
57772: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 57776: 0800 0000 btst #0,%d0 <== NOT EXECUTED 5777a: 671c beqs 57798 <rtems_region_get_segment+0x108> <== NOT EXECUTED
return_status = RTEMS_UNSATISFIED;
5777c: 700d moveq #13,%d0 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5777e: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57784: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57788: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5778e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 57792: 588f addql #4,%sp <== NOT EXECUTED 57794: 6000 ff74 braw 5770a <rtems_region_get_segment+0x7a> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
57798: 2039 0007 eb70 movel 7eb70 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5779e: 5280 addql #1,%d0 <== NOT EXECUTED 577a0: 23c0 0007 eb70 movel %d0,7eb70 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* Switch from using the memory allocation mutex to using a
* dispatching disabled critical section. We have to do this
* because this thread is going to block.
*/
_Thread_Disable_dispatch();
_RTEMS_Unlock_allocator();
577a6: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 577ac: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
executing->Wait.queue = &the_region->Wait_queue;
577b2: 200b movel %a3,%d0 <== NOT EXECUTED 577b4: 0680 0000 0010 addil #16,%d0 <== NOT EXECUTED
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;
577ba: 7201 moveq #1,%d1 <== NOT EXECUTED 577bc: 2940 0044 movel %d0,%a4@(68) <== NOT EXECUTED
executing->Wait.id = id;
577c0: 2943 0020 movel %d3,%a4@(32) <== NOT EXECUTED
executing->Wait.count = size;
577c4: 2942 0024 movel %d2,%a4@(36) <== NOT EXECUTED
executing->Wait.return_argument = segment;
577c8: 294a 0028 movel %a2,%a4@(40) <== NOT EXECUTED 577cc: 2741 0040 movel %d1,%a3@(64) <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &the_region->Wait_queue );
_Thread_queue_Enqueue( &the_region->Wait_queue, timeout );
577d0: 4879 0005 cb98 pea 5cb98 <_Thread_queue_Timeout> <== NOT EXECUTED 577d6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 577da: 2f00 movel %d0,%sp@- <== NOT EXECUTED 577dc: 4eb9 0005 c7d0 jsr 5c7d0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
577e2: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return (rtems_status_code) executing->Wait.return_code;
577e8: 202c 0034 movel %a4@(52),%d0 <== NOT EXECUTED 577ec: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
577f0: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED 577f6: 4e5e unlk %fp <== NOT EXECUTED
...
000577fc <rtems_region_get_segment_size>:
rtems_status_code rtems_region_get_segment_size(
rtems_id id,
void *segment,
uintptr_t *size
)
{
577fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 57800: 2f03 movel %d3,%sp@- <== NOT EXECUTED 57802: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 57806: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57808: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
register Region_Control *the_region;
if ( !segment )
5780c: 6700 0092 beqw 578a0 <rtems_region_get_segment_size+0xa4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
57810: 4a83 tstl %d3 <== NOT EXECUTED 57812: 6700 008c beqw 578a0 <rtems_region_get_segment_size+0xa4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
57816: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5781c: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED 57822: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57826: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5782a: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 57830: 4eb9 0005 b934 jsr 5b934 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
57836: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 5783a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5783e: 6636 bnes 57876 <rtems_region_get_segment_size+0x7a><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) )
57840: 2f03 movel %d3,%sp@- <== NOT EXECUTED 57842: 2040 moveal %d0,%a0 <== NOT EXECUTED 57844: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57846: 4868 0068 pea %a0@(104) <== NOT EXECUTED 5784a: 4eb9 0005 b354 jsr 5b354 <_Heap_Size_of_alloc_area> <== NOT EXECUTED 57850: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 57854: 4a00 tstb %d0 <== NOT EXECUTED 57856: 6624 bnes 5787c <rtems_region_get_segment_size+0x80><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57858: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
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;
5785e: 7409 moveq #9,%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57860: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57866: 588f addql #4,%sp <== NOT EXECUTED
}
57868: 2002 movel %d2,%d0 <== NOT EXECUTED 5786a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5786e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 57872: 4e5e unlk %fp <== NOT EXECUTED 57874: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
the_region = _Region_Get( id, &location );
switch ( location ) {
57876: 7001 moveq #1,%d0 <== NOT EXECUTED 57878: b081 cmpl %d1,%d0 <== NOT EXECUTED 5787a: 6712 beqs 5788e <rtems_region_get_segment_size+0x92><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5787c: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
void *segment,
uintptr_t *size
)
{
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
57882: 4282 clrl %d2 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57884: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5788a: 588f addql #4,%sp <== NOT EXECUTED 5788c: 60da bras 57868 <rtems_region_get_segment_size+0x6c><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5788e: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
case OBJECTS_REMOTE: /* this error cannot be returned */
break;
#endif
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
57894: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57896: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5789c: 588f addql #4,%sp <== NOT EXECUTED 5789e: 60c8 bras 57868 <rtems_region_get_segment_size+0x6c><== NOT EXECUTED
if ( !segment )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
578a0: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
578a2: 2002 movel %d2,%d0 <== NOT EXECUTED 578a4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 578a8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 578ac: 4e5e unlk %fp <== NOT EXECUTED
000578b0 <rtems_region_ident>:
rtems_status_code rtems_region_ident(
rtems_name name,
rtems_id *id
)
{
578b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
578b4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 578b8: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 578be: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 578c2: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 578c8: 4eb9 0005 bb20 jsr 5bb20 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
578ce: 41f9 0007 7f68 lea 77f68 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
578d4: 4e5e unlk %fp <== NOT EXECUTED 578d6: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
000578dc <rtems_region_resize_segment>:
rtems_id id,
void *segment,
uintptr_t size,
uintptr_t *old_size
)
{
578dc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 578e0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 578e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 578e4: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
uintptr_t osize;
rtems_status_code return_status;
Heap_Resize_status status;
register Region_Control *the_region;
if ( !old_size )
578e8: 4a8a tstl %a2 <== NOT EXECUTED 578ea: 6700 00a4 beqw 57990 <rtems_region_resize_segment+0xb4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
578ee: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 578f4: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED 578fa: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 578fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 57902: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 57908: 4eb9 0005 b934 jsr 5b934 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
5790e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 57912: 2640 moveal %d0,%a3 <== NOT EXECUTED 57914: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 57918: 663e bnes 57958 <rtems_region_resize_segment+0x7c><== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 7 );
status = _Heap_Resize_block(
5791a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5791e: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 57922: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 57926: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5792a: 486b 0068 pea %a3@(104) <== NOT EXECUTED 5792e: 4eb9 0005 b268 jsr 5b268 <_Heap_Resize_block> <== NOT EXECUTED
segment,
(uint32_t) size,
&osize,
&avail_size
);
*old_size = (uint32_t) osize;
57934: 24ae fff4 movel %fp@(-12),%a2@ <== NOT EXECUTED
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
57938: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 5793c: 4a80 tstl %d0 <== NOT EXECUTED 5793e: 6634 bnes 57974 <rtems_region_resize_segment+0x98><== NOT EXECUTED
_Region_Process_queue( the_region ); /* unlocks allocator */
57940: 2f0b movel %a3,%sp@- <== NOT EXECUTED 57942: 4eb9 0005 ffa0 jsr 5ffa0 <_Region_Process_queue> <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57948: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
*old_size = (uint32_t) osize;
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
_Region_Process_queue( the_region ); /* unlocks allocator */
5794c: 588f addql #4,%sp <== NOT EXECUTED
else
_RTEMS_Unlock_allocator();
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
5794e: 4280 clrl %d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57950: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 57954: 4e5e unlk %fp <== NOT EXECUTED 57956: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57958: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5795e: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status; }
57964: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
return return_status;
57968: 588f addql #4,%sp <== NOT EXECUTED 5796a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5796c: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 57970: 4e5e unlk %fp <== NOT EXECUTED 57972: 4e75 rts <== NOT EXECUTED
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
_Region_Process_queue( the_region ); /* unlocks allocator */
else
_RTEMS_Unlock_allocator();
57974: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5797a: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED 5797e: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
57984: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 57988: 588f addql #4,%sp <== NOT EXECUTED 5798a: 7201 moveq #1,%d1 <== NOT EXECUTED 5798c: b280 cmpl %d0,%d1 <== NOT EXECUTED 5798e: 670e beqs 5799e <rtems_region_resize_segment+0xc2><== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57990: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
return RTEMS_UNSATISFIED;
return RTEMS_INVALID_ADDRESS;
57994: 7009 moveq #9,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57996: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 5799a: 4e5e unlk %fp <== NOT EXECUTED 5799c: 4e75 rts <== NOT EXECUTED 5799e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
return RTEMS_UNSATISFIED;
579a2: 700d moveq #13,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
579a4: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED 579a8: 4e5e unlk %fp <== NOT EXECUTED
000579ac <rtems_region_return_segment>:
rtems_status_code rtems_region_return_segment(
rtems_id id,
void *segment
)
{
579ac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 579b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 579b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t size;
#endif
int status;
register Region_Control *the_region;
_RTEMS_Lock_allocator();
579b4: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 579ba: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Lock> <== NOT EXECUTED 579c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 579c4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 579c8: 4879 0007 ea76 pea 7ea76 <_Region_Information> <== NOT EXECUTED 579ce: 4eb9 0005 b934 jsr 5b934 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
579d4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 579d8: 2440 moveal %d0,%a2 <== NOT EXECUTED 579da: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 579de: 6632 bnes 57a12 <rtems_region_return_segment+0x66><== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Region_Free_segment (
Region_Control *the_region,
void *the_segment
)
{
return _Heap_Free( &the_region->Memory, the_segment );
579e0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 579e4: 486a 0068 pea %a2@(104) <== NOT EXECUTED 579e8: 4eb9 0005 ac68 jsr 5ac68 <_Heap_Free> <== NOT EXECUTED
#endif
status = _Region_Free_segment( the_region, segment );
_Region_Debug_Walk( the_region, 4 );
if ( !status )
579ee: 508f addql #8,%sp <== NOT EXECUTED 579f0: 4a00 tstb %d0 <== NOT EXECUTED 579f2: 6630 bnes 57a24 <rtems_region_return_segment+0x78><== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
579f4: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
status = _Region_Free_segment( the_region, segment );
_Region_Debug_Walk( the_region, 4 );
if ( !status )
return_status = RTEMS_INVALID_ADDRESS;
579fa: 7409 moveq #9,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
579fc: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57a02: 588f addql #4,%sp <== NOT EXECUTED
}
57a04: 2002 movel %d2,%d0 <== NOT EXECUTED 57a06: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 57a0a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 57a0e: 4e5e unlk %fp <== NOT EXECUTED 57a10: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57a12: 2f39 0007 ec12 movel 7ec12 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57a18: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57a1a: 4eb9 0005 9c20 jsr 59c20 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57a20: 588f addql #4,%sp <== NOT EXECUTED 57a22: 60e0 bras 57a04 <rtems_region_return_segment+0x58><== NOT EXECUTED
_Region_Debug_Walk( the_region, 4 );
if ( !status )
return_status = RTEMS_INVALID_ADDRESS;
else {
the_region->number_of_used_blocks -= 1;
57a24: 53aa 0064 subql #1,%a2@(100) <== NOT EXECUTED
_Region_Process_queue(the_region); /* unlocks allocator */
return RTEMS_SUCCESSFUL;
57a28: 4282 clrl %d2 <== NOT EXECUTED
if ( !status )
return_status = RTEMS_INVALID_ADDRESS;
else {
the_region->number_of_used_blocks -= 1;
_Region_Process_queue(the_region); /* unlocks allocator */
57a2a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 57a2c: 4eb9 0005 ffa0 jsr 5ffa0 <_Region_Process_queue> <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57a32: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 57a36: 2002 movel %d2,%d0 <== NOT EXECUTED
else {
the_region->number_of_used_blocks -= 1;
_Region_Process_queue(the_region); /* unlocks allocator */
return RTEMS_SUCCESSFUL;
57a38: 588f addql #4,%sp <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57a3a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 57a3e: 4e5e unlk %fp <== NOT EXECUTED
...
000461dc <rtems_semaphore_create>:
uint32_t count,
rtems_attribute attribute_set,
rtems_task_priority priority_ceiling,
rtems_id *id
)
{
461dc: 4e56 ffd4 linkw %fp,#-44 461e0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ 461e4: 262e 0008 movel %fp@(8),%d3 461e8: 242e 0010 movel %fp@(16),%d2 461ec: 246e 0018 moveal %fp@(24),%a2
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 ) )
461f0: 4a83 tstl %d3
461f2: 6746 beqs 4623a <rtems_semaphore_create+0x5e> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
461f4: 4a8a tstl %a2 461f6: 6700 00e8 beqw 462e0 <rtems_semaphore_create+0x104>
* id - semaphore id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_semaphore_create(
461fa: 2002 movel %d2,%d0 461fc: 0280 0000 00c0 andil #192,%d0
return RTEMS_NOT_DEFINED;
} else
#endif
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
46202: 6742 beqs 46246 <rtems_semaphore_create+0x6a>
*/
RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore(
rtems_attribute attribute_set
)
{
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE);
46204: 7230 moveq #48,%d1
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
46206: 7810 moveq #16,%d4 46208: c282 andl %d2,%d1 4620a: b881 cmpl %d1,%d4
4620c: 670c beqs 4621a <rtems_semaphore_create+0x3e> <== ALWAYS TAKEN
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
4620e: 700b moveq #11,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46210: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46216: 4e5e unlk %fp <== NOT EXECUTED 46218: 4e75 rts <== NOT EXECUTED
#endif
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
4621a: 44c2 movew %d2,%ccr
4621c: 66f0 bnes 4620e <rtems_semaphore_create+0x32> <== NEVER TAKEN
_Attributes_Is_priority( attribute_set ) ) )
return RTEMS_NOT_DEFINED;
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
4621e: 0c80 0000 00c0 cmpil #192,%d0
46224: 67e8 beqs 4620e <rtems_semaphore_create+0x32> <== NEVER TAKEN
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
46226: 7001 moveq #1,%d0 46228: b0ae 000c cmpl %fp@(12),%d0
4622c: 641e bccs 4624c <rtems_semaphore_create+0x70> <== ALWAYS TAKEN
return RTEMS_INVALID_NUMBER;
4622e: 700a moveq #10,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46230: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46236: 4e5e unlk %fp <== NOT EXECUTED 46238: 4e75 rts <== NOT EXECUTED
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;
4623a: 7003 moveq #3,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4623c: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46242: 4e5e unlk %fp <== NOT EXECUTED 46244: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore(
rtems_attribute attribute_set
)
{
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE);
46246: 7830 moveq #48,%d4 46248: c882 andl %d2,%d4
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 ) )
4624a: 66da bnes 46226 <rtems_semaphore_create+0x4a>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4624c: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0 46252: 5280 addql #1,%d0 46254: 23c0 0005 fc8c movel %d0,5fc8c <_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 );
4625a: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> 46260: 4eb9 0004 7918 jsr 47918 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
46266: 588f addql #4,%sp 46268: 2640 moveal %d0,%a3 4626a: 4a80 tstl %d0 4626c: 6700 00d8 beqw 46346 <rtems_semaphore_create+0x16a>
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_semaphore->attribute_set = attribute_set;
46270: 2742 0010 movel %d2,%a3@(16)
/*
* Initialize it as a counting semaphore.
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
46274: 4a84 tstl %d4
46276: 6774 beqs 462ec <rtems_semaphore_create+0x110> <== NEVER TAKEN
/*
* 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;
46278: 44c2 movew %d2,%ccr 4627a: 56c0 sne %d0 4627c: 49c0 extbl %d0 4627e: 5280 addql #1,%d0 46280: 2d40 fff0 movel %d0,%fp@(-16)
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
46284: 7010 moveq #16,%d0 46286: b084 cmpl %d4,%d0 46288: 6700 00ce beqw 46358 <rtems_semaphore_create+0x17c>
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;
4628c: 7202 moveq #2,%d1
the_mutex_attr.only_owner_release = false;
4628e: 4204 clrb %d4
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;
46290: 2d41 ffea movel %d1,%fp@(-22)
the_mutex_attr.only_owner_release = false;
46294: 1d44 ffee moveb %d4,%fp@(-18)
}
mutex_status = _CORE_mutex_Initialize(
46298: 7001 moveq #1,%d0 4629a: b0ae 000c cmpl %fp@(12),%d0 4629e: 57c0 seq %d0 462a0: 49c0 extbl %d0 462a2: 4480 negl %d0 462a4: 2f00 movel %d0,%sp@- 462a6: 486e ffea pea %fp@(-22) 462aa: 486b 0014 pea %a3@(20) 462ae: 4eb9 0004 6f8c jsr 46f8c <_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 ) {
462b4: 4fef 000c lea %sp@(12),%sp 462b8: 7206 moveq #6,%d1 462ba: b280 cmpl %d0,%d1
462bc: 665e bnes 4631c <rtems_semaphore_create+0x140> <== ALWAYS TAKEN
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
462be: 2f0b movel %a3,%sp@- <== NOT EXECUTED 462c0: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> <== NOT EXECUTED 462c6: 4eb9 0004 7c6c jsr 47c6c <_Objects_Free> <== NOT EXECUTED
_Semaphore_Free( the_semaphore );
_Thread_Enable_dispatch();
462cc: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
462d2: 508f addql #8,%sp <== NOT EXECUTED 462d4: 7013 moveq #19,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
462d6: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 462dc: 4e5e unlk %fp <== NOT EXECUTED 462de: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
462e0: 7009 moveq #9,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
462e2: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED 462e8: 4e5e unlk %fp <== NOT EXECUTED 462ea: 4e75 rts <== NOT EXECUTED
* 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(
462ec: 2f2e 000c movel %fp@(12),%sp@-
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
462f0: 72ff moveq #-1,%d1
* 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(
462f2: 486e fff8 pea %fp@(-8) 462f6: 486b 0014 pea %a3@(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;
462fa: 44c2 movew %d2,%ccr 462fc: 56c0 sne %d0
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
462fe: 2d41 fff8 movel %d1,%fp@(-8)
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
46302: 49c0 extbl %d0 46304: 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;
46306: 42ae ffea clrl %fp@(-22)
* 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;
4630a: 2d40 fffc movel %d0,%fp@(-4)
/*
* 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;
4630e: 42ae fff4 clrl %fp@(-12)
_CORE_semaphore_Initialize(
46312: 4eb9 0004 72c4 jsr 472c4 <_CORE_semaphore_Initialize> 46318: 4fef 000c lea %sp@(12),%sp
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4631c: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46320: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46322: 2079 0005 fbe4 moveal 5fbe4 <_Semaphore_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46328: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4632a: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4632e: 2743 000c movel %d3,%a3@(12)
&_Semaphore_Information,
&the_semaphore->Object,
(Objects_Name) name
);
*id = the_semaphore->Object.id;
46332: 2480 movel %d0,%a2@
the_semaphore->Object.id,
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
46334: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL; }
4633a: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46340: 4280 clrl %d0
}
46342: 4e5e unlk %fp 46344: 4e75 rts
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
46346: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
return RTEMS_TOO_MANY;
4634c: 7005 moveq #5,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4634e: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 46354: 4e5e unlk %fp 46356: 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;
46358: 42ae ffea clrl %fp@(-22)
the_mutex_attr.only_owner_release = false;
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
4635c: 7801 moveq #1,%d4
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;
4635e: 4201 clrb %d1
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;
46360: 2d6e 0014 fff4 movel %fp@(20),%fp@(-12)
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.only_owner_release = false;
46366: 1d41 ffee moveb %d1,%fp@(-18)
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
4636a: b8ae fff0 cmpl %fp@(-16),%d4 4636e: 6600 ff28 bnew 46298 <rtems_semaphore_create+0xbc>
if ( _Attributes_Is_inherit_priority( attribute_set ) ) {
46372: 0802 0006 btst #6,%d2
46376: 6712 beqs 4638a <rtems_semaphore_create+0x1ae> <== NEVER TAKEN
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
46378: 103c 0002 moveb #2,%d0
the_mutex_attr.only_owner_release = true;
4637c: 7201 moveq #1,%d1
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.only_owner_release = false;
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;
4637e: 2d40 fff0 movel %d0,%fp@(-16)
the_mutex_attr.only_owner_release = true;
46382: 1d41 ffee moveb %d1,%fp@(-18) 46386: 6000 ff10 braw 46298 <rtems_semaphore_create+0xbc>
} else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) {
4638a: 4a02 tstb %d2 <== NOT EXECUTED 4638c: 6c00 ff0a bgew 46298 <rtems_semaphore_create+0xbc> <== NOT EXECUTED
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
46390: 7803 moveq #3,%d4 <== NOT EXECUTED
the_mutex_attr.only_owner_release = true;
46392: 7001 moveq #1,%d0 <== NOT EXECUTED
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;
46394: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED
the_mutex_attr.only_owner_release = true;
46398: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED 4639c: 6000 fefa braw 46298 <rtems_semaphore_create+0xbc> <== NOT EXECUTED
000463a0 <rtems_semaphore_delete>:
#endif
rtems_status_code rtems_semaphore_delete(
rtems_id id
)
{
463a0: 4e56 fffc linkw %fp,#-4 463a4: 2f0a movel %a2,%sp@-
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
463a6: 486e fffc pea %fp@(-4) 463aa: 2f2e 0008 movel %fp@(8),%sp@- 463ae: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> 463b4: 4eb9 0004 7dd8 jsr 47dd8 <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
463ba: 4fef 000c lea %sp@(12),%sp 463be: 2440 moveal %d0,%a2 463c0: 4aae fffc tstl %fp@(-4)
463c4: 670a beqs 463d0 <rtems_semaphore_delete+0x30> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463c6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
463ca: 7004 moveq #4,%d0 <== NOT EXECUTED
}
463cc: 4e5e unlk %fp <== NOT EXECUTED 463ce: 4e75 rts <== NOT EXECUTED
463d0: 7030 moveq #48,%d0 463d2: c0aa 0010 andl %a2@(16),%d0
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
463d6: 6760 beqs 46438 <rtems_semaphore_delete+0x98>
if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) &&
463d8: 4aaa 0062 tstl %a2@(98)
463dc: 6616 bnes 463f4 <rtems_semaphore_delete+0x54>
463de: 7220 moveq #32,%d1 463e0: b280 cmpl %d0,%d1
463e2: 6710 beqs 463f4 <rtems_semaphore_delete+0x54> <== ALWAYS TAKEN
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
463e4: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463ea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
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;
463ee: 700c moveq #12,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463f0: 4e5e unlk %fp <== NOT EXECUTED 463f2: 4e75 rts <== NOT EXECUTED
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
_CORE_mutex_Flush(
463f4: 4878 0004 pea 4 <CONTEXT_ARG> 463f8: 42a7 clrl %sp@- 463fa: 486a 0014 pea %a2@(20) 463fe: 4eb9 0004 6f80 jsr 46f80 <_CORE_mutex_Flush> 46404: 4fef 000c lea %sp@(12),%sp
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
46408: 2f0a movel %a2,%sp@- 4640a: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> 46410: 4eb9 0004 79a8 jsr 479a8 <_Objects_Close>
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
46416: 2f0a movel %a2,%sp@- 46418: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> 4641e: 4eb9 0004 7c6c jsr 47c6c <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46424: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4642a: 4fef 0010 lea %sp@(16),%sp 4642e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46430: 246e fff8 moveal %fp@(-8),%a2 46434: 4e5e unlk %fp 46436: 4e75 rts
&the_semaphore->Core_control.mutex,
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_MUTEX_WAS_DELETED
);
} else {
_CORE_semaphore_Flush(
46438: 4878 0002 pea 2 <DOUBLE_FLOAT> 4643c: 42a7 clrl %sp@- 4643e: 486a 0014 pea %a2@(20) 46442: 4eb9 0004 72b8 jsr 472b8 <_CORE_semaphore_Flush> 46448: 4fef 000c lea %sp@(12),%sp
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
4644c: 2f0a movel %a2,%sp@- 4644e: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> 46454: 4eb9 0004 79a8 jsr 479a8 <_Objects_Close> 4645a: 2f0a movel %a2,%sp@- 4645c: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> 46462: 4eb9 0004 7c6c jsr 47c6c <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46468: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4646e: 4fef 0010 lea %sp@(16),%sp 46472: 4280 clrl %d0 46474: 60ba bras 46430 <rtems_semaphore_delete+0x90>
...
000502cc <rtems_semaphore_flush>:
#endif
rtems_status_code rtems_semaphore_flush(
rtems_id id
)
{
502cc: 4e56 fffc linkw %fp,#-4 502d0: 486e fffc pea %fp@(-4) 502d4: 2f2e 0008 movel %fp@(8),%sp@- 502d8: 4879 0006 3e14 pea 63e14 <_Semaphore_Information> 502de: 4eb9 0004 9390 jsr 49390 <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
502e4: 4fef 000c lea %sp@(12),%sp 502e8: 4aae fffc tstl %fp@(-4)
502ec: 6706 beqs 502f4 <rtems_semaphore_flush+0x28> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
502ee: 7004 moveq #4,%d0 <== NOT EXECUTED
}
502f0: 4e5e unlk %fp <== NOT EXECUTED 502f2: 4e75 rts <== NOT EXECUTED
502f4: 7230 moveq #48,%d1 502f6: 2040 moveal %d0,%a0 502f8: c2a8 0010 andl %a0@(16),%d1
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
502fc: 6720 beqs 5031e <rtems_semaphore_flush+0x52> <== NEVER TAKEN
_CORE_mutex_Flush(
502fe: 4878 0001 pea 1 <ADD> 50302: 42a7 clrl %sp@- 50304: 4868 0014 pea %a0@(20) 50308: 4eb9 0004 8538 jsr 48538 <_CORE_mutex_Flush> 5030e: 4fef 000c lea %sp@(12),%sp
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
50312: 4eb9 0004 9ca6 jsr 49ca6 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
50318: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5031a: 4e5e unlk %fp 5031c: 4e75 rts
&the_semaphore->Core_control.mutex,
SEND_OBJECT_WAS_DELETED,
CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT
);
} else {
_CORE_semaphore_Flush(
5031e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 50322: 2040 moveal %d0,%a0 <== NOT EXECUTED 50324: 42a7 clrl %sp@- <== NOT EXECUTED 50326: 4868 0014 pea %a0@(20) <== NOT EXECUTED 5032a: 4eb9 0004 8870 jsr 48870 <_CORE_semaphore_Flush> <== NOT EXECUTED 50330: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
50334: 4eb9 0004 9ca6 jsr 49ca6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
5033a: 4280 clrl %d0 <== NOT EXECUTED 5033c: 60dc bras 5031a <rtems_semaphore_flush+0x4e> <== NOT EXECUTED
...
00057d54 <rtems_semaphore_ident>:
rtems_status_code rtems_semaphore_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
57d54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32( &_Semaphore_Information, name, node, id );
57d58: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 57d5c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 57d60: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 57d64: 4879 0007 eab0 pea 7eab0 <_Semaphore_Information> <== NOT EXECUTED 57d6a: 4eb9 0005 bb20 jsr 5bb20 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
57d70: 41f9 0007 7f68 lea 77f68 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
57d76: 4e5e unlk %fp <== NOT EXECUTED 57d78: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
00046478 <rtems_semaphore_obtain>:
rtems_status_code rtems_semaphore_obtain(
rtems_id id,
rtems_option option_set,
rtems_interval timeout
)
{
46478: 4e56 ffec linkw %fp,#-20 4647c: 48d7 001c moveml %d2-%d4,%sp@
Objects_Locations *location,
ISR_Level *level
)
{
return (Semaphore_Control *)
_Objects_Get_isr_disable( &_Semaphore_Information, id, location, level );
46480: 486e fff8 pea %fp@(-8) 46484: 486e fffc pea %fp@(-4) 46488: 242e 0008 movel %fp@(8),%d2 4648c: 2f02 movel %d2,%sp@- 4648e: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> 46494: 262e 000c movel %fp@(12),%d3 46498: 282e 0010 movel %fp@(16),%d4 4649c: 4eb9 0004 7d78 jsr 47d78 <_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 ) {
464a2: 4fef 0010 lea %sp@(16),%sp 464a6: 4aae fffc tstl %fp@(-4)
464aa: 670c beqs 464b8 <rtems_semaphore_obtain+0x40> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
464ac: 7004 moveq #4,%d0 <== NOT EXECUTED
}
464ae: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED 464b4: 4e5e unlk %fp <== NOT EXECUTED 464b6: 4e75 rts <== NOT EXECUTED
464b8: 7230 moveq #48,%d1 464ba: 2040 moveal %d0,%a0 464bc: c2a8 0010 andl %a0@(16),%d1
the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
464c0: 6738 beqs 464fa <rtems_semaphore_obtain+0x82> <== NEVER TAKEN
_CORE_mutex_Seize(
464c2: 2f2e fff8 movel %fp@(-8),%sp@-
*/
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (
rtems_option option_set
)
{
return (option_set & RTEMS_NO_WAIT) ? true : false;
464c6: 7201 moveq #1,%d1 464c8: c681 andl %d1,%d3 464ca: 2f04 movel %d4,%sp@- 464cc: b781 eorl %d3,%d1 464ce: 2f01 movel %d1,%sp@- 464d0: 2f02 movel %d2,%sp@- 464d2: 4868 0014 pea %a0@(20) 464d6: 4eb9 0004 7108 jsr 47108 <_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 );
464dc: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
level
);
return _Semaphore_Translate_core_mutex_return_code(
464e2: 2f28 0034 movel %a0@(52),%sp@- 464e6: 4eb9 0004 6648 jsr 46648 <_Semaphore_Translate_core_mutex_return_code> 464ec: 4fef 0018 lea %sp@(24),%sp
break;
}
return RTEMS_INVALID_ID;
}
464f0: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 464f6: 4e5e unlk %fp 464f8: 4e75 rts
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
464fa: 2240 moveal %d0,%a1 <== NOT EXECUTED
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
464fc: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
46502: 2229 005c movel %a1@(92),%d1 <== NOT EXECUTED
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
46506: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
if ( the_semaphore->count != 0 ) {
4650a: 4a81 tstl %d1 <== NOT EXECUTED 4650c: 662e bnes 4653c <rtems_semaphore_obtain+0xc4> <== NOT EXECUTED
the_semaphore->count -= 1;
_ISR_Enable( *level_p );
return;
}
if ( !wait ) {
4650e: 0803 0000 btst #0,%d3 <== NOT EXECUTED 46512: 6748 beqs 4655c <rtems_semaphore_obtain+0xe4> <== NOT EXECUTED
_ISR_Enable( *level_p );
46514: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 46518: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
4651a: 7001 moveq #1,%d0 <== NOT EXECUTED 4651c: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
_Thread_Executing->Wait.return_code );
46520: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
46526: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4652a: 4eb9 0004 665e jsr 4665e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 46530: 588f addql #4,%sp <== NOT EXECUTED
break;
}
return RTEMS_INVALID_ID;
}
46532: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED 46538: 4e5e unlk %fp <== NOT EXECUTED 4653a: 4e75 rts <== NOT EXECUTED
/* 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;
4653c: 5381 subql #1,%d1 <== NOT EXECUTED 4653e: 2341 005c movel %d1,%a1@(92) <== NOT EXECUTED
_ISR_Enable( *level_p );
46542: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 46546: 46c0 movew %d0,%sr <== NOT EXECUTED
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
_Thread_Executing->Wait.return_code );
46548: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
4654e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 46552: 4eb9 0004 665e jsr 4665e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 46558: 588f addql #4,%sp <== NOT EXECUTED 4655a: 60d6 bras 46532 <rtems_semaphore_obtain+0xba> <== NOT EXECUTED 4655c: 2239 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 46562: 5281 addql #1,%d1 <== NOT EXECUTED 46564: 23c1 0005 fc8c movel %d1,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
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;
4656a: 7201 moveq #1,%d1 <== NOT EXECUTED 4656c: 2240 moveal %d0,%a1 <== NOT EXECUTED
return;
}
_Thread_Disable_dispatch();
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
4656e: 0680 0000 0014 addil #20,%d0 <== NOT EXECUTED 46574: 2341 0044 movel %d1,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
46578: 2142 0020 movel %d2,%a0@(32) <== NOT EXECUTED
return;
}
_Thread_Disable_dispatch();
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
4657c: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id; _ISR_Enable( *level_p );
46580: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED 46584: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
46586: 4879 0004 9000 pea 49000 <_Thread_queue_Timeout> <== NOT EXECUTED 4658c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4658e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46590: 4eb9 0004 8c38 jsr 48c38 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
46596: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
_Thread_Executing->Wait.return_code );
4659c: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 465a2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
465a6: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 465aa: 4eb9 0004 665e jsr 4665e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 465b0: 588f addql #4,%sp <== NOT EXECUTED 465b2: 6000 ff7e braw 46532 <rtems_semaphore_obtain+0xba> <== NOT EXECUTED
...
000465b8 <rtems_semaphore_release>:
#endif
rtems_status_code rtems_semaphore_release(
rtems_id id
)
{
465b8: 4e56 fffc linkw %fp,#-4 465bc: 2f02 movel %d2,%sp@-
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
465be: 486e fffc pea %fp@(-4) 465c2: 242e 0008 movel %fp@(8),%d2 465c6: 2f02 movel %d2,%sp@- 465c8: 4879 0005 fbcc pea 5fbcc <_Semaphore_Information> 465ce: 4eb9 0004 7dd8 jsr 47dd8 <_Objects_Get>
Objects_Locations location;
CORE_mutex_Status mutex_status;
CORE_semaphore_Status semaphore_status;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
465d4: 4fef 000c lea %sp@(12),%sp 465d8: 4aae fffc tstl %fp@(-4)
465dc: 670a beqs 465e8 <rtems_semaphore_release+0x30> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
465de: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
465e2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
465e4: 4e5e unlk %fp <== NOT EXECUTED 465e6: 4e75 rts <== NOT EXECUTED
465e8: 7230 moveq #48,%d1 465ea: 2040 moveal %d0,%a0 465ec: c2a8 0010 andl %a0@(16),%d1
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
465f0: 662c bnes 4661e <rtems_semaphore_release+0x66> <== ALWAYS TAKEN
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
} else {
semaphore_status = _CORE_semaphore_Surrender(
465f2: 42a7 clrl %sp@- <== NOT EXECUTED 465f4: 2040 moveal %d0,%a0 <== NOT EXECUTED 465f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465f8: 4868 0014 pea %a0@(20) <== NOT EXECUTED 465fc: 4eb9 0004 730c jsr 4730c <_CORE_semaphore_Surrender> <== NOT EXECUTED 46602: 2400 movel %d0,%d2 <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
46604: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return
4660a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4660c: 4eb9 0004 665e jsr 4665e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46612: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
return
46616: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4661a: 4e5e unlk %fp <== NOT EXECUTED 4661c: 4e75 rts <== NOT EXECUTED
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
mutex_status = _CORE_mutex_Surrender(
4661e: 42a7 clrl %sp@- 46620: 2f02 movel %d2,%sp@- 46622: 4868 0014 pea %a0@(20) 46626: 4eb9 0004 71b8 jsr 471b8 <_CORE_mutex_Surrender> 4662c: 2400 movel %d0,%d2
&the_semaphore->Core_control.mutex,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
4662e: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
46634: 2f02 movel %d2,%sp@- 46636: 4eb9 0004 6648 jsr 46648 <_Semaphore_Translate_core_mutex_return_code>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4663c: 242e fff8 movel %fp@(-8),%d2
&the_semaphore->Core_control.mutex,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
46640: 4fef 0010 lea %sp@(16),%sp
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46644: 4e5e unlk %fp <== NOT EXECUTED
00046b48 <rtems_shutdown_executive>:
void rtems_shutdown_executive(
uint32_t result
)
{
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b48: 7003 moveq #3,%d0
*/
void rtems_shutdown_executive(
uint32_t result
)
{
46b4a: 4e56 0000 linkw %fp,#0
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b4e: b0b9 0005 fdfa cmpl 5fdfa <_System_state_Current>,%d0
46b54: 6710 beqs 46b66 <rtems_shutdown_executive+0x1e>
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
_Thread_Stop_multitasking();
}
_Internal_error_Occurred(
46b56: 4878 0014 pea 14 <OPER2> 46b5a: 4878 0001 pea 1 <ADD> 46b5e: 42a7 clrl %sp@- 46b60: 4eb9 0004 785c jsr 4785c <_Internal_error_Occurred>
* 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 );
46b66: 4879 0005 fc58 pea 5fc58 <_Thread_BSP_context> 46b6c: 103c 0004 moveb #4,%d0 46b70: 23c0 0005 fdfa movel %d0,5fdfa <_System_state_Current> 46b76: 4eb9 0004 9c36 jsr 49c36 <_CPU_Context_Restart_self>
46b7c: 588f addql #4,%sp <== NOT EXECUTED 46b7e: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED 46b82: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 46b86: 42a7 clrl %sp@- <== NOT EXECUTED 46b88: 4eb9 0004 785c jsr 4785c <_Internal_error_Occurred> <== NOT EXECUTED
...
00047728 <rtems_signal_catch>:
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
)
{
47728: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4772c: 2239 0006 1404 movel 61404 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 47732: 5281 addql #1,%d1 <== NOT EXECUTED
RTEMS_API_Control *api;
ASR_Information *asr;
/* XXX normalize mode */
executing = _Thread_Executing;
api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ];
47734: 2079 0006 1894 moveal 61894 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
)
{
4773a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
RTEMS_API_Control *api;
ASR_Information *asr;
/* XXX normalize mode */
executing = _Thread_Executing;
api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ];
4773e: 2068 010a moveal %a0@(266),%a0 <== NOT EXECUTED 47742: 23c1 0006 1404 movel %d1,61404 <_Thread_Dispatch_disable_level><== NOT EXECUTED
asr = &api->Signal;
_Thread_Disable_dispatch(); /* cannot reschedule while */
/* the thread is inconsistent */
if ( !_ASR_Is_null_handler( asr_handler ) ) {
47748: 4a80 tstl %d0 <== NOT EXECUTED 4774a: 6716 beqs 47762 <rtems_signal_catch+0x3a> <== NOT EXECUTED
asr->mode_set = mode_set;
asr->handler = asr_handler;
4774c: 2140 000a movel %d0,%a0@(10) <== NOT EXECUTED
_Thread_Disable_dispatch(); /* cannot reschedule while */
/* the thread is inconsistent */
if ( !_ASR_Is_null_handler( asr_handler ) ) {
asr->mode_set = mode_set;
47750: 216e 000c 000e movel %fp@(12),%a0@(14) <== NOT EXECUTED
asr->handler = asr_handler;
}
else
_ASR_Initialize( asr );
_Thread_Enable_dispatch();
47756: 4eb9 0004 9af2 jsr 49af2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
4775c: 4280 clrl %d0 <== NOT EXECUTED 4775e: 4e5e unlk %fp <== NOT EXECUTED 47760: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
information->handler = NULL;
47762: 42a8 000a clrl %a0@(10) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
47766: 4200 clrb %d0 <== NOT EXECUTED
information->handler = NULL; information->mode_set = RTEMS_DEFAULT_MODES;
47768: 42a8 000e clrl %a0@(14) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4776c: 1140 0008 moveb %d0,%a0@(8) <== NOT EXECUTED
information->handler = NULL; information->mode_set = RTEMS_DEFAULT_MODES; information->signals_posted = 0;
47770: 42a8 0012 clrl %a0@(18) <== NOT EXECUTED
information->signals_pending = 0;
47774: 42a8 0016 clrl %a0@(22) <== NOT EXECUTED
information->nest_level = 0;
47778: 42a8 001a clrl %a0@(26) <== NOT EXECUTED
asr->mode_set = mode_set;
asr->handler = asr_handler;
}
else
_ASR_Initialize( asr );
_Thread_Enable_dispatch();
4777c: 4eb9 0004 9af2 jsr 49af2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
47782: 4280 clrl %d0 <== NOT EXECUTED 47784: 4e5e unlk %fp <== NOT EXECUTED
00057f7c <rtems_signal_send>:
rtems_status_code rtems_signal_send(
rtems_id id,
rtems_signal_set signal_set
)
{
57f7c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 57f80: 2f03 movel %d3,%sp@- <== NOT EXECUTED 57f82: 2f02 movel %d2,%sp@- <== NOT EXECUTED 57f84: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !signal_set )
57f88: 660e bnes 57f98 <rtems_signal_send+0x1c> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57f8a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
Objects_Locations location;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !signal_set )
return RTEMS_INVALID_NUMBER;
57f8e: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57f90: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 57f94: 4e5e unlk %fp <== NOT EXECUTED 57f96: 4e75 rts <== NOT EXECUTED
ASR_Information *asr;
if ( !signal_set )
return RTEMS_INVALID_NUMBER;
the_thread = _Thread_Get( id, &location );
57f98: 486e fffc pea %fp@(-4) <== NOT EXECUTED 57f9c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 57fa0: 4eb9 0005 c2a4 jsr 5c2a4 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
57fa6: 508f addql #8,%sp <== NOT EXECUTED 57fa8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 57fac: 670e beqs 57fbc <rtems_signal_send+0x40> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57fae: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
57fb2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
57fb4: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 57fb8: 4e5e unlk %fp <== NOT EXECUTED 57fba: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
57fbc: 2240 moveal %d0,%a1 <== NOT EXECUTED 57fbe: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED
asr = &api->Signal;
if ( ! _ASR_Is_null_handler( asr->handler ) ) {
57fc2: 4aa8 000a tstl %a0@(10) <== NOT EXECUTED 57fc6: 676a beqs 58032 <rtems_signal_send+0xb6> <== NOT EXECUTED
if ( asr->is_enabled ) {
57fc8: 4a28 0008 tstb %a0@(8) <== NOT EXECUTED 57fcc: 6736 beqs 58004 <rtems_signal_send+0x88> <== NOT EXECUTED
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
57fce: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 57fd4: 40c3 movew %sr,%d3 <== NOT EXECUTED 57fd6: 8283 orl %d3,%d1 <== NOT EXECUTED 57fd8: 46c1 movew %d1,%sr <== NOT EXECUTED
*signal_set |= signals;
57fda: 85a8 0012 orl %d2,%a0@(18) <== NOT EXECUTED
_ISR_Enable( _level );
57fde: 46c3 movew %d3,%sr <== NOT EXECUTED
_ASR_Post_signals( signal_set, &asr->signals_posted );
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
57fe0: 4ab9 0007 f004 tstl 7f004 <_Per_CPU_Information+0x8> <== NOT EXECUTED 57fe6: 6708 beqs 57ff0 <rtems_signal_send+0x74> <== NOT EXECUTED 57fe8: b0b9 0007 f008 cmpl 7f008 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 57fee: 6730 beqs 58020 <rtems_signal_send+0xa4> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
57ff0: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
57ff6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57ff8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 57ffc: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 58000: 4e5e unlk %fp <== NOT EXECUTED 58002: 4e75 rts <== NOT EXECUTED
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
58004: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 5800a: 40c1 movew %sr,%d1 <== NOT EXECUTED 5800c: 8081 orl %d1,%d0 <== NOT EXECUTED 5800e: 46c0 movew %d0,%sr <== NOT EXECUTED
*signal_set |= signals;
58010: 85a8 0016 orl %d2,%a0@(22) <== NOT EXECUTED
_ISR_Enable( _level );
58014: 46c1 movew %d1,%sr <== NOT EXECUTED
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();
58016: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
5801c: 4280 clrl %d0 <== NOT EXECUTED 5801e: 60d8 bras 57ff8 <rtems_signal_send+0x7c> <== NOT EXECUTED
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;
58020: 7001 moveq #1,%d0 <== NOT EXECUTED 58022: 13c0 0007 f014 moveb %d0,7f014 <_Per_CPU_Information+0x18> <== NOT EXECUTED
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
58028: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
5802e: 4280 clrl %d0 <== NOT EXECUTED 58030: 60c6 bras 57ff8 <rtems_signal_send+0x7c> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
58032: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58038: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
}
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
5803c: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5803e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 58042: 4e5e unlk %fp <== NOT EXECUTED
...
0004280e <rtems_stack_checker_begin_extension>:
* rtems_stack_checker_Begin_extension
*/
void rtems_stack_checker_begin_extension(
Thread_Control *the_thread
)
{
4280e: 4e56 0000 linkw %fp,#0 42812: 206e 0008 moveal %fp@(8),%a0
Stack_check_Control *the_pattern;
if ( the_thread->Object.id == 0 ) /* skip system tasks */
42816: 4aa8 0008 tstl %a0@(8)
4281a: 672c beqs 42848 <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;
4281c: 2068 00c2 moveal %a0@(194),%a0 42820: 43f9 0006 2a34 lea 62a34 <Stack_check_Pattern>,%a1 42826: 2151 0008 movel %a1@,%a0@(8) 4282a: 43f9 0006 2a38 lea 62a38 <Stack_check_Pattern+0x4>,%a1 42830: 2151 000c movel %a1@,%a0@(12) 42834: 43f9 0006 2a3c lea 62a3c <Stack_check_Pattern+0x8>,%a1 4283a: 2151 0010 movel %a1@,%a0@(16) 4283e: 43f9 0006 2a40 lea 62a40 <Stack_check_Pattern+0xc>,%a1 42844: 2151 0014 movel %a1@,%a0@(20)
}
42848: 4e5e unlk %fp <== NOT EXECUTED
000427da <rtems_stack_checker_create_extension>:
*/
bool rtems_stack_checker_create_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *the_thread
)
{
427da: 4e56 0000 linkw %fp,#0 427de: 2f0a movel %a2,%sp@- 427e0: 246e 000c moveal %fp@(12),%a2
Stack_check_Initialize();
427e4: 4eb9 0004 2760 jsr 42760 <Stack_check_Initialize>
if (the_thread)
427ea: 4a8a tstl %a2
427ec: 6716 beqs 42804 <rtems_stack_checker_create_extension+0x2a><== NEVER TAKEN
Stack_check_Dope_stack(&the_thread->Start.Initial_stack);
427ee: 2f2a 00be movel %a2@(190),%sp@- 427f2: 4878 00a5 pea a5 <DBL_MANT_DIG+0x70> 427f6: 2f2a 00c2 movel %a2@(194),%sp@- 427fa: 4eb9 0005 1e20 jsr 51e20 <memset> 42800: 4fef 000c lea %sp@(12),%sp
return true;
}
42804: 246e fffc moveal %fp@(-4),%a2 42808: 4e5e unlk %fp
4280a: 7001 moveq #1,%d0 <== NOT EXECUTED
0004297c <rtems_stack_checker_is_blown>:
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
4297c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack;
42980: 2279 0006 30a4 moveal 630a4 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
42986: 2069 00c2 moveal %a1@(194),%a0 <== NOT EXECUTED
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
4298a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
4298c: b1ce cmpal %fp,%a0 <== NOT EXECUTED 4298e: 6248 bhis 429d8 <rtems_stack_checker_is_blown+0x5c><== NOT EXECUTED
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
42990: 2008 movel %a0,%d0 <== NOT EXECUTED 42992: d0a9 00be addl %a1@(190),%d0 <== NOT EXECUTED
}
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
42996: b08e cmpl %fp,%d0 <== NOT EXECUTED 42998: 54c2 scc %d2 <== NOT EXECUTED 4299a: 4482 negl %d2 <== NOT EXECUTED
/*
* The stack checker must be initialized before the pattern is there
* to check.
*/
if ( Stack_check_Initialized ) {
4299c: 4ab9 0006 2230 tstl 62230 <Stack_check_Initialized> <== NOT EXECUTED 429a2: 6730 beqs 429d4 <rtems_stack_checker_is_blown+0x58><== NOT EXECUTED
pattern_ok = (!memcmp(
429a4: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 429a8: 4879 0006 2a34 pea 62a34 <Stack_check_Pattern> <== NOT EXECUTED 429ae: 4868 0008 pea %a0@(8) <== NOT EXECUTED 429b2: 4eb9 0005 1d30 jsr 51d30 <memcmp> <== NOT EXECUTED 429b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 429bc: 4a80 tstl %d0 <== NOT EXECUTED 429be: 57c0 seq %d0 <== NOT EXECUTED 429c0: 4480 negl %d0 <== NOT EXECUTED
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
429c2: 4a02 tstb %d2 <== NOT EXECUTED 429c4: 6716 beqs 429dc <rtems_stack_checker_is_blown+0x60><== NOT EXECUTED 429c6: 4a00 tstb %d0 <== NOT EXECUTED 429c8: 6712 beqs 429dc <rtems_stack_checker_is_blown+0x60><== NOT EXECUTED
/*
* The Stack Pointer and the Pattern Area are OK so return false.
*/
return false;
}
429ca: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 429ce: 4e5e unlk %fp <== NOT EXECUTED 429d0: 4200 clrb %d0 <== NOT EXECUTED 429d2: 4e75 rts <== 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;
429d4: 7001 moveq #1,%d0 <== NOT EXECUTED 429d6: 60ea bras 429c2 <rtems_stack_checker_is_blown+0x46><== NOT EXECUTED
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
return false;
429d8: 4202 clrb %d2 <== NOT EXECUTED 429da: 60c0 bras 4299c <rtems_stack_checker_is_blown+0x20><== NOT EXECUTED
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
Stack_check_report_blown_task( _Thread_Executing, pattern_ok );
429dc: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 429e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 429e4: 2f39 0006 30a4 movel 630a4 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 429ea: 4eb9 0004 284c jsr 4284c <Stack_check_report_blown_task> <== NOT EXECUTED
00042a56 <rtems_stack_checker_report_usage>:
void rtems_stack_checker_report_usage( void )
{
42a56: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_stack_checker_report_usage_with_plugin( NULL, printk_plugin );
42a5a: 4879 0004 47a0 pea 447a0 <printk_plugin> <== NOT EXECUTED 42a60: 42a7 clrl %sp@- <== NOT EXECUTED 42a62: 4eb9 0004 29f0 jsr 429f0 <rtems_stack_checker_report_usage_with_plugin><== NOT EXECUTED 42a68: 508f addql #8,%sp <== NOT EXECUTED
}
42a6a: 4e5e unlk %fp <== NOT EXECUTED
...
000429f0 <rtems_stack_checker_report_usage_with_plugin>:
void rtems_stack_checker_report_usage_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
429f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 429f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 429f6: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 429fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 429fc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ( !print )
42a00: 4a8a tstl %a2 <== NOT EXECUTED 42a02: 6746 beqs 42a4a <rtems_stack_checker_report_usage_with_plugin+0x5a><== NOT EXECUTED
return;
print_context = context;
print_handler = print;
(*print)( context, "Stack usage by thread\n");
42a04: 4879 0005 fd08 pea 5fd08 <IntUartPollCallbacks.6307+0x13c> <== NOT EXECUTED
)
{
if ( !print )
return;
print_context = context;
42a0a: 23c2 0006 2228 movel %d2,62228 <print_context> <== NOT EXECUTED
print_handler = print;
(*print)( context, "Stack usage by thread\n");
42a10: 2f02 movel %d2,%sp@- <== NOT EXECUTED
{
if ( !print )
return;
print_context = context;
print_handler = print;
42a12: 23ca 0006 222c movel %a2,6222c <print_handler> <== NOT EXECUTED
(*print)( context, "Stack usage by thread\n");
42a18: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context,
42a1a: 4879 0005 fd1f pea 5fd1f <IntUartPollCallbacks.6307+0x153> <== NOT EXECUTED 42a20: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42a22: 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 );
42a24: 4879 0004 25d0 pea 425d0 <Stack_check_Dump_threads_usage> <== NOT EXECUTED 42a2a: 4eb9 0004 a1c4 jsr 4a1c4 <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);
42a30: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 42a34: 4eb9 0004 25d0 jsr 425d0 <Stack_check_Dump_threads_usage> <== NOT EXECUTED
#endif
print_context = NULL;
print_handler = NULL;
42a3a: 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;
42a3e: 42b9 0006 2228 clrl 62228 <print_context> <== NOT EXECUTED
print_handler = NULL;
42a44: 42b9 0006 222c clrl 6222c <print_handler> <== NOT EXECUTED
}
42a4a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 42a4e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 42a52: 4e5e unlk %fp <== NOT EXECUTED
000428fc <rtems_stack_checker_switch_extension>:
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *heir __attribute__((unused))
)
{
428fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42900: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42902: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Stack_Control *the_stack = &running->Start.Initial_stack;
void *pattern;
bool sp_ok;
bool pattern_ok = true;
pattern = (void *) Stack_check_Get_pattern_area(the_stack)->pattern;
42906: 222a 00c2 movel %a2@(194),%d1 <== NOT EXECUTED 4290a: 5081 addql #8,%d1 <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
4290c: 202a 00c2 movel %a2@(194),%d0 <== NOT EXECUTED 42910: b08e cmpl %fp,%d0 <== NOT EXECUTED 42912: 622a bhis 4293e <rtems_stack_checker_switch_extension+0x42><== NOT EXECUTED
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
42914: d0aa 00be addl %a2@(190),%d0 <== NOT EXECUTED 42918: b08e cmpl %fp,%d0 <== NOT EXECUTED 4291a: 6522 bcss 4293e <rtems_stack_checker_switch_extension+0x42><== NOT EXECUTED
/*
* 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,
4291c: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 42920: 4879 0006 2a34 pea 62a34 <Stack_check_Pattern> <== NOT EXECUTED 42926: 2f01 movel %d1,%sp@- <== NOT EXECUTED 42928: 4eb9 0005 1d30 jsr 51d30 <memcmp> <== NOT EXECUTED 4292e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
(void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
if ( !sp_ok || !pattern_ok ) {
42932: 4a80 tstl %d0 <== NOT EXECUTED 42934: 6634 bnes 4296a <rtems_stack_checker_switch_extension+0x6e><== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
}
}
42936: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4293a: 4e5e unlk %fp <== NOT EXECUTED 4293c: 4e75 rts <== NOT EXECUTED
/*
* 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,
4293e: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 42942: 4879 0006 2a34 pea 62a34 <Stack_check_Pattern> <== NOT EXECUTED 42948: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4294a: 4eb9 0005 1d30 jsr 51d30 <memcmp> <== NOT EXECUTED 42950: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 42954: 4a80 tstl %d0 <== NOT EXECUTED 42956: 57c0 seq %d0 <== NOT EXECUTED 42958: 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 );
4295a: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 42960: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42962: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42964: 4eb9 0004 284c jsr 4284c <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 ) {
4296a: 4200 clrb %d0 <== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
4296c: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 42972: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42974: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42976: 4eb9 0004 284c jsr 4284c <Stack_check_report_blown_task> <== NOT EXECUTED
0004293c <rtems_status_text>:
const char *rtems_status_text(
rtems_status_code status
)
{
4293c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_assoc_name_by_local(rtems_status_assoc, status);
42940: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 42944: 4879 0005 d214 pea 5d214 <rtems_status_assoc> <== NOT EXECUTED 4294a: 4eb9 0004 adfc jsr 4adfc <rtems_assoc_name_by_local> <== NOT EXECUTED
}
42950: 4e5e unlk %fp <== NOT EXECUTED
0004d660 <rtems_string_to_double>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d660: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4d664: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4d668: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d66c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d670: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d674: 4a8a tstl %a2 <== NOT EXECUTED 4d676: 677a beqs 4d6f2 <rtems_string_to_double+0x92> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d678: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4d67e: 4e94 jsr %a4@ <== NOT EXECUTED
*n = 0;
4d680: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d682: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4d684: 4280 clrl %d0 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d686: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d688: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d68c: 2480 movel %d0,%a2@ <== NOT EXECUTED 4d68e: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d692: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d694: 4eb9 0005 3420 jsr 53420 <strtod> <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d69a: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d69c: 2600 movel %d0,%d3 <== NOT EXECUTED 4d69e: 2801 movel %d1,%d4 <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d6a0: 4a8b tstl %a3 <== NOT EXECUTED 4d6a2: 675a beqs 4d6fe <rtems_string_to_double+0x9e> <== NOT EXECUTED
*endptr = end;
4d6a4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d6a8: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d6aa: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d6ac: 6756 beqs 4d704 <rtems_string_to_double+0xa4> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d6ae: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 4d6b2: 2f3c 7fef ffff movel #2146435071,%sp@- <== NOT EXECUTED 4d6b8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d6ba: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d6bc: 4eb9 0005 e534 jsr 5e534 <__gtdf2> <== NOT EXECUTED 4d6c2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d6c6: 4a80 tstl %d0 <== NOT EXECUTED 4d6c8: 6e12 bgts 4d6dc <rtems_string_to_double+0x7c> <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d6ca: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4d6cc: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d6ce: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL; }
4d6d2: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d6d8: 4e5e unlk %fp <== NOT EXECUTED 4d6da: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d6dc: 4e94 jsr %a4@ <== NOT EXECUTED 4d6de: 7222 moveq #34,%d1 <== NOT EXECUTED 4d6e0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d6e2: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d6e4: 66e4 bnes 4d6ca <rtems_string_to_double+0x6a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d6e6: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6e8: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d6ee: 4e5e unlk %fp <== NOT EXECUTED 4d6f0: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d6f2: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6f4: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d6fa: 4e5e unlk %fp <== NOT EXECUTED 4d6fc: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d6fe: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d702: 60a6 bras 4d6aa <rtems_string_to_double+0x4a> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d704: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d706: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d70c: 4e5e unlk %fp <== NOT EXECUTED
0004d710 <rtems_string_to_float>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d710: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4d714: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d718: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d71c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d720: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d724: 4a8a tstl %a2 <== NOT EXECUTED 4d726: 6768 beqs 4d790 <rtems_string_to_float+0x80> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d728: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4d72e: 4e94 jsr %a4@ <== NOT EXECUTED 4d730: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d732: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d734: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d738: 24bc 0000 0000 movel #0,%a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d73e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d740: 4eb9 0005 3440 jsr 53440 <strtof> <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d746: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d748: 2600 movel %d0,%d3 <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d74a: 4a8b tstl %a3 <== NOT EXECUTED 4d74c: 674e beqs 4d79c <rtems_string_to_float+0x8c> <== NOT EXECUTED
*endptr = end;
4d74e: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d752: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d754: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d756: 674a beqs 4d7a2 <rtems_string_to_float+0x92> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d758: 2f3c 7f7f ffff movel #2139095039,%sp@- <== NOT EXECUTED 4d75e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d760: 4eb9 0005 e5c4 jsr 5e5c4 <__gtsf2> <== NOT EXECUTED 4d766: 508f addql #8,%sp <== NOT EXECUTED 4d768: 4a80 tstl %d0 <== NOT EXECUTED 4d76a: 6e0e bgts 4d77a <rtems_string_to_float+0x6a> <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d76c: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4d76e: 4280 clrl %d0 <== NOT EXECUTED
}
4d770: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d776: 4e5e unlk %fp <== NOT EXECUTED 4d778: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d77a: 4e94 jsr %a4@ <== NOT EXECUTED 4d77c: 7222 moveq #34,%d1 <== NOT EXECUTED 4d77e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d780: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d782: 66e8 bnes 4d76c <rtems_string_to_float+0x5c> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d784: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d786: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d78c: 4e5e unlk %fp <== NOT EXECUTED 4d78e: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d790: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d792: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d798: 4e5e unlk %fp <== NOT EXECUTED 4d79a: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d79c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d7a0: 60b2 bras 4d754 <rtems_string_to_float+0x44> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d7a2: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d7a4: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d7aa: 4e5e unlk %fp <== NOT EXECUTED
...
0004d7b0 <rtems_string_to_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d7b0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4d7b4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d7b8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d7bc: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d7c0: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d7c4: 4a8a tstl %a2 <== NOT EXECUTED 4d7c6: 675e beqs 4d826 <rtems_string_to_int+0x76> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d7c8: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4d7ce: 4e94 jsr %a4@ <== NOT EXECUTED 4d7d0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d7d2: 4290 clrl %a0@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4d7d4: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4d7d8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d7dc: 4292 clrl %a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4d7de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d7e0: 4eb9 0005 35f8 jsr 535f8 <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d7e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4d7ea: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d7ec: 4a8b tstl %a3 <== NOT EXECUTED 4d7ee: 6742 beqs 4d832 <rtems_string_to_int+0x82> <== NOT EXECUTED
*endptr = end;
4d7f0: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d7f4: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d7f6: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d7f8: 673e beqs 4d838 <rtems_string_to_int+0x88> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d7fa: 0c83 7fff ffff cmpil #2147483647,%d3 <== NOT EXECUTED 4d800: 670e beqs 4d810 <rtems_string_to_int+0x60> <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d802: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4d804: 4280 clrl %d0 <== NOT EXECUTED
}
4d806: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d80c: 4e5e unlk %fp <== NOT EXECUTED 4d80e: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d810: 4e94 jsr %a4@ <== NOT EXECUTED 4d812: 7222 moveq #34,%d1 <== NOT EXECUTED 4d814: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d816: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d818: 66e8 bnes 4d802 <rtems_string_to_int+0x52> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d81a: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d81c: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d822: 4e5e unlk %fp <== NOT EXECUTED 4d824: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d826: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d828: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d82e: 4e5e unlk %fp <== NOT EXECUTED 4d830: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d832: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d836: 60be bras 4d7f6 <rtems_string_to_int+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d838: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d83a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d840: 4e5e unlk %fp <== NOT EXECUTED
0004d8fc <rtems_string_to_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d8fc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4d900: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d904: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4d908: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d90c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d910: 4a8a tstl %a2 <== NOT EXECUTED 4d912: 6766 beqs 4d97a <rtems_string_to_long+0x7e> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d914: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4d91a: 4e94 jsr %a4@ <== NOT EXECUTED 4d91c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d91e: 4290 clrl %a0@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4d920: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4d924: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d928: 4292 clrl %a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4d92a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d92c: 4eb9 0005 35f8 jsr 535f8 <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d932: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4d936: 2400 movel %d0,%d2 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d938: 4a8b tstl %a3 <== NOT EXECUTED 4d93a: 674a beqs 4d986 <rtems_string_to_long+0x8a> <== NOT EXECUTED
*endptr = end;
4d93c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d940: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d942: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d944: 6746 beqs 4d98c <rtems_string_to_long+0x90> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d946: 0c82 7fff ffff cmpil #2147483647,%d2 <== NOT EXECUTED 4d94c: 6716 beqs 4d964 <rtems_string_to_long+0x68> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d94e: 0c82 8000 0000 cmpil #-2147483648,%d2 <== NOT EXECUTED 4d954: 670e beqs 4d964 <rtems_string_to_long+0x68> <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d956: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4d958: 4280 clrl %d0 <== NOT EXECUTED
}
4d95a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d960: 4e5e unlk %fp <== NOT EXECUTED 4d962: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d964: 4e94 jsr %a4@ <== NOT EXECUTED 4d966: 7222 moveq #34,%d1 <== NOT EXECUTED 4d968: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d96a: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d96c: 66e8 bnes 4d956 <rtems_string_to_long+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d96e: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d970: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d976: 4e5e unlk %fp <== NOT EXECUTED 4d978: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d97a: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d97c: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d982: 4e5e unlk %fp <== NOT EXECUTED 4d984: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d986: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d98a: 60b6 bras 4d942 <rtems_string_to_long+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d98c: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d98e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d994: 4e5e unlk %fp <== NOT EXECUTED
0004d844 <rtems_string_to_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d844: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4d848: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4d84c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 4d850: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d854: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d858: 4a8a tstl %a2 <== NOT EXECUTED 4d85a: 6700 0082 beqw 4d8de <rtems_string_to_long_long+0x9a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d85e: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4d864: 4e94 jsr %a4@ <== NOT EXECUTED 4d866: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4d868: 4280 clrl %d0 <== NOT EXECUTED 4d86a: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d86c: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4d86e: 2480 movel %d0,%a2@ <== NOT EXECUTED 4d870: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4d874: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4d878: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d87c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d87e: 4eb9 0005 3618 jsr 53618 <strtoll> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d884: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4d888: 2400 movel %d0,%d2 <== NOT EXECUTED 4d88a: 2601 movel %d1,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d88c: 4a8b tstl %a3 <== NOT EXECUTED 4d88e: 675a beqs 4d8ea <rtems_string_to_long_long+0xa6> <== NOT EXECUTED
*endptr = end;
4d890: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d894: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d896: b084 cmpl %d4,%d0 <== NOT EXECUTED 4d898: 6756 beqs 4d8f0 <rtems_string_to_long_long+0xac> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d89a: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED 4d8a0: 72ff moveq #-1,%d1 <== NOT EXECUTED 4d8a2: 9283 subl %d3,%d1 <== NOT EXECUTED 4d8a4: 9182 subxl %d2,%d0 <== NOT EXECUTED 4d8a6: 6720 beqs 4d8c8 <rtems_string_to_long_long+0x84> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d8a8: 203c 8000 0000 movel #-2147483648,%d0 <== NOT EXECUTED 4d8ae: 4281 clrl %d1 <== NOT EXECUTED 4d8b0: 9283 subl %d3,%d1 <== NOT EXECUTED 4d8b2: 9182 subxl %d2,%d0 <== NOT EXECUTED 4d8b4: 6712 beqs 4d8c8 <rtems_string_to_long_long+0x84> <== NOT EXECUTED
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4d8b6: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d8b8: 2482 movel %d2,%a2@ <== NOT EXECUTED 4d8ba: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL; }
4d8be: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d8c4: 4e5e unlk %fp <== NOT EXECUTED 4d8c6: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d8c8: 4e94 jsr %a4@ <== NOT EXECUTED 4d8ca: 7222 moveq #34,%d1 <== NOT EXECUTED 4d8cc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d8ce: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d8d0: 66e4 bnes 4d8b6 <rtems_string_to_long_long+0x72> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d8d2: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8d4: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d8da: 4e5e unlk %fp <== NOT EXECUTED 4d8dc: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d8de: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8e0: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d8e6: 4e5e unlk %fp <== NOT EXECUTED 4d8e8: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d8ea: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d8ee: 60a6 bras 4d896 <rtems_string_to_long_long+0x52> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d8f0: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8f2: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d8f8: 4e5e unlk %fp <== NOT EXECUTED
0004d998 <rtems_string_to_pointer>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d998: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4d99c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d9a0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d9a4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d9a8: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d9ac: 4a8a tstl %a2 <== NOT EXECUTED 4d9ae: 675c beqs 4da0c <rtems_string_to_pointer+0x74> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d9b0: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4d9b6: 4e94 jsr %a4@ <== NOT EXECUTED 4d9b8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d9ba: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
4d9bc: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 4d9c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d9c4: 4292 clrl %a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
4d9c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d9c8: 4eb9 0005 3a2c jsr 53a2c <strtoul> <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d9ce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
4d9d2: 2600 movel %d0,%d3 <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d9d4: 4a8b tstl %a3 <== NOT EXECUTED 4d9d6: 6740 beqs 4da18 <rtems_string_to_pointer+0x80> <== NOT EXECUTED
*endptr = end;
4d9d8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d9dc: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d9de: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d9e0: 673c beqs 4da1e <rtems_string_to_pointer+0x86> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d9e2: 70ff moveq #-1,%d0 <== NOT EXECUTED 4d9e4: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d9e6: 670e beqs 4d9f6 <rtems_string_to_pointer+0x5e> <== NOT EXECUTED
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
4d9e8: 2483 movel %d3,%a2@ <== NOT EXECUTED
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4d9ea: 4280 clrl %d0 <== NOT EXECUTED
}
4d9ec: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d9f2: 4e5e unlk %fp <== NOT EXECUTED 4d9f4: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d9f6: 4e94 jsr %a4@ <== NOT EXECUTED 4d9f8: 7222 moveq #34,%d1 <== NOT EXECUTED 4d9fa: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d9fc: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d9fe: 66e8 bnes 4d9e8 <rtems_string_to_pointer+0x50> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4da00: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da02: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4da08: 4e5e unlk %fp <== NOT EXECUTED 4da0a: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4da0c: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da0e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4da14: 4e5e unlk %fp <== NOT EXECUTED 4da16: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da18: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4da1c: 60c0 bras 4d9de <rtems_string_to_pointer+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4da1e: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da20: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4da26: 4e5e unlk %fp <== NOT EXECUTED
...
0004da2c <rtems_string_to_unsigned_char>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4da2c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4da30: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 4da34: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4da38: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4da3c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4da40: 4a8a tstl %a2 <== NOT EXECUTED 4da42: 673e beqs 4da82 <rtems_string_to_unsigned_char+0x56><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4da44: 4eb9 0005 0afc jsr 50afc <__errno> <== NOT EXECUTED 4da4a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4da4c: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4da4e: 4212 clrb %a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4da50: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4da54: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4da58: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4da5a: 4eb9 0005 3a2c jsr 53a2c <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da60: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4da64: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da66: 4a8b tstl %a3 <== NOT EXECUTED 4da68: 6724 beqs 4da8e <rtems_string_to_unsigned_char+0x62><== NOT EXECUTED
*endptr = end;
4da6a: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4da6e: 2681 movel %d1,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4da70: b282 cmpl %d2,%d1 <== NOT EXECUTED 4da72: 6720 beqs 4da94 <rtems_string_to_unsigned_char+0x68><== NOT EXECUTED
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4da74: 4280 clrl %d0 <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4da76: 1483 moveb %d3,%a2@ <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da78: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4da7e: 4e5e unlk %fp <== NOT EXECUTED 4da80: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4da82: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da84: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4da8a: 4e5e unlk %fp <== NOT EXECUTED 4da8c: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da8e: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4da92: 60dc bras 4da70 <rtems_string_to_unsigned_char+0x44><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4da94: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da96: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4da9c: 4e5e unlk %fp <== NOT EXECUTED
0004daa0 <rtems_string_to_unsigned_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4daa0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4daa4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4daa8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4daac: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4dab0: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4dab4: 4a8a tstl %a2 <== NOT EXECUTED 4dab6: 675c beqs 4db14 <rtems_string_to_unsigned_int+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4dab8: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4dabe: 4e94 jsr %a4@ <== NOT EXECUTED 4dac0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dac2: 4290 clrl %a0@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4dac4: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4dac8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4dacc: 4292 clrl %a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4dace: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4dad0: 4eb9 0005 3a2c jsr 53a2c <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dad6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4dada: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dadc: 4a8b tstl %a3 <== NOT EXECUTED 4dade: 6740 beqs 4db20 <rtems_string_to_unsigned_int+0x80><== NOT EXECUTED
*endptr = end;
4dae0: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4dae4: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4dae6: b082 cmpl %d2,%d0 <== NOT EXECUTED 4dae8: 673c beqs 4db26 <rtems_string_to_unsigned_int+0x86><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4daea: 70ff moveq #-1,%d0 <== NOT EXECUTED 4daec: b083 cmpl %d3,%d0 <== NOT EXECUTED 4daee: 670e beqs 4dafe <rtems_string_to_unsigned_int+0x5e><== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4daf0: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4daf2: 4280 clrl %d0 <== NOT EXECUTED
}
4daf4: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dafa: 4e5e unlk %fp <== NOT EXECUTED 4dafc: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4dafe: 4e94 jsr %a4@ <== NOT EXECUTED 4db00: 7222 moveq #34,%d1 <== NOT EXECUTED 4db02: 2040 moveal %d0,%a0 <== NOT EXECUTED 4db04: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4db06: 66e8 bnes 4daf0 <rtems_string_to_unsigned_int+0x50><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4db08: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db0a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4db10: 4e5e unlk %fp <== NOT EXECUTED 4db12: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4db14: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db16: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4db1c: 4e5e unlk %fp <== NOT EXECUTED 4db1e: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db20: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4db24: 60c0 bras 4dae6 <rtems_string_to_unsigned_int+0x46><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4db26: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db28: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4db2e: 4e5e unlk %fp <== NOT EXECUTED
...
0004dbd8 <rtems_string_to_unsigned_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4dbd8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4dbdc: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4dbe0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4dbe4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4dbe8: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4dbec: 4a8a tstl %a2 <== NOT EXECUTED 4dbee: 675c beqs 4dc4c <rtems_string_to_unsigned_long+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4dbf0: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4dbf6: 4e94 jsr %a4@ <== NOT EXECUTED 4dbf8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dbfa: 4290 clrl %a0@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4dbfc: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4dc00: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4dc04: 4292 clrl %a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4dc06: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4dc08: 4eb9 0005 3a2c jsr 53a2c <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dc0e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4dc12: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dc14: 4a8b tstl %a3 <== NOT EXECUTED 4dc16: 6740 beqs 4dc58 <rtems_string_to_unsigned_long+0x80><== NOT EXECUTED
*endptr = end;
4dc18: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4dc1c: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4dc1e: b082 cmpl %d2,%d0 <== NOT EXECUTED 4dc20: 673c beqs 4dc5e <rtems_string_to_unsigned_long+0x86><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4dc22: 70ff moveq #-1,%d0 <== NOT EXECUTED 4dc24: b083 cmpl %d3,%d0 <== NOT EXECUTED 4dc26: 670e beqs 4dc36 <rtems_string_to_unsigned_long+0x5e><== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4dc28: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4dc2a: 4280 clrl %d0 <== NOT EXECUTED
}
4dc2c: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dc32: 4e5e unlk %fp <== NOT EXECUTED 4dc34: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4dc36: 4e94 jsr %a4@ <== NOT EXECUTED 4dc38: 7222 moveq #34,%d1 <== NOT EXECUTED 4dc3a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dc3c: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4dc3e: 66e8 bnes 4dc28 <rtems_string_to_unsigned_long+0x50><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4dc40: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc42: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dc48: 4e5e unlk %fp <== NOT EXECUTED 4dc4a: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4dc4c: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc4e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dc54: 4e5e unlk %fp <== NOT EXECUTED 4dc56: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dc58: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4dc5c: 60c0 bras 4dc1e <rtems_string_to_unsigned_long+0x46><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4dc5e: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc60: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dc66: 4e5e unlk %fp <== NOT EXECUTED
...
0004db34 <rtems_string_to_unsigned_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4db34: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4db38: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4db3c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4db40: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4db44: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4db48: 4a8a tstl %a2 <== NOT EXECUTED 4db4a: 676e beqs 4dbba <rtems_string_to_unsigned_long_long+0x86><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4db4c: 49f9 0005 0afc lea 50afc <__errno>,%a4 <== NOT EXECUTED 4db52: 4e94 jsr %a4@ <== NOT EXECUTED 4db54: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4db56: 4280 clrl %d0 <== NOT EXECUTED 4db58: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4db5a: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4db5c: 2480 movel %d0,%a2@ <== NOT EXECUTED 4db5e: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4db62: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4db66: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4db6a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4db6c: 4eb9 0005 3a4c jsr 53a4c <strtoull> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db72: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
#elif defined(STRING_TO_POINTER)
result = STRING_TO_METHOD( s, &end, 16 );
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
4db76: 2600 movel %d0,%d3 <== NOT EXECUTED 4db78: 2801 movel %d1,%d4 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db7a: 4a8b tstl %a3 <== NOT EXECUTED 4db7c: 6748 beqs 4dbc6 <rtems_string_to_unsigned_long_long+0x92><== NOT EXECUTED
*endptr = end;
4db7e: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4db82: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4db84: b082 cmpl %d2,%d0 <== NOT EXECUTED 4db86: 6744 beqs 4dbcc <rtems_string_to_unsigned_long_long+0x98><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4db88: 70ff moveq #-1,%d0 <== NOT EXECUTED 4db8a: 72ff moveq #-1,%d1 <== NOT EXECUTED 4db8c: 9284 subl %d4,%d1 <== NOT EXECUTED 4db8e: 9183 subxl %d3,%d0 <== NOT EXECUTED 4db90: 6712 beqs 4dba4 <rtems_string_to_unsigned_long_long+0x70><== NOT EXECUTED
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4db92: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4db94: 2483 movel %d3,%a2@ <== NOT EXECUTED 4db96: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL; }
4db9a: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4dba0: 4e5e unlk %fp <== NOT EXECUTED 4dba2: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4dba4: 4e94 jsr %a4@ <== NOT EXECUTED 4dba6: 7222 moveq #34,%d1 <== NOT EXECUTED 4dba8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dbaa: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4dbac: 66e4 bnes 4db92 <rtems_string_to_unsigned_long_long+0x5e><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4dbae: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dbb0: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4dbb6: 4e5e unlk %fp <== NOT EXECUTED 4dbb8: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4dbba: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dbbc: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4dbc2: 4e5e unlk %fp <== NOT EXECUTED 4dbc4: 4e75 rts <== NOT EXECUTED
#elif defined(STRING_TO_INTEGER)
result = STRING_TO_METHOD( s, &end, base );
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dbc6: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4dbca: 60b8 bras 4db84 <rtems_string_to_unsigned_long_long+0x50><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4dbcc: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dbce: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4dbd4: 4e5e unlk %fp <== NOT EXECUTED
000428a4 <rtems_tarfs_load>:
int rtems_tarfs_load(
char *mountpoint,
uint8_t *tar_image,
size_t tar_size
)
{
428a4: 4e56 fe44 linkw %fp,#-444 <== NOT EXECUTED 428a8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int offset;
unsigned long nblocks;
IMFS_jnode_t *node;
int status;
status = rtems_filesystem_evaluate_path(
428ac: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int rtems_tarfs_load(
char *mountpoint,
uint8_t *tar_image,
size_t tar_size
)
{
428b0: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
int offset;
unsigned long nblocks;
IMFS_jnode_t *node;
int status;
status = rtems_filesystem_evaluate_path(
428b4: 4eb9 0005 3568 jsr 53568 <strlen> <== NOT EXECUTED
int rtems_tarfs_load(
char *mountpoint,
uint8_t *tar_image,
size_t tar_size
)
{
428ba: 2c2e 0010 movel %fp@(16),%d6 <== NOT EXECUTED
int offset;
unsigned long nblocks;
IMFS_jnode_t *node;
int status;
status = rtems_filesystem_evaluate_path(
428be: 4297 clrl %sp@ <== NOT EXECUTED 428c0: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 428c4: 42a7 clrl %sp@- <== NOT EXECUTED 428c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 428c8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 428cc: 4eb9 0004 33fc jsr 433fc <rtems_filesystem_evaluate_path> <== NOT EXECUTED
strlen(mountpoint),
0,
&root_loc,
0
);
if (status != 0)
428d2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
int offset;
unsigned long nblocks;
IMFS_jnode_t *node;
int status;
status = rtems_filesystem_evaluate_path(
428d6: 2d40 fe6c movel %d0,%fp@(-404) <== NOT EXECUTED
strlen(mountpoint),
0,
&root_loc,
0
);
if (status != 0)
428da: 6600 0168 bnew 42a44 <rtems_tarfs_load+0x1a0> <== NOT EXECUTED
return -1;
if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)
428de: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 428e2: 0c80 0006 22c2 cmpil #402114,%d0 <== NOT EXECUTED 428e8: 6600 01b8 bnew 42aa2 <rtems_tarfs_load+0x1fe> <== NOT EXECUTED 428ec: 95ca subal %a2,%a2 <== NOT EXECUTED
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
428ee: 280e movel %fp,%d4 <== NOT EXECUTED
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while (1) {
if (offset + 512 > tar_size)
428f0: 240a movel %a2,%d2 <== NOT EXECUTED
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
428f2: 0684 ffff ff70 addil #-144,%d4 <== NOT EXECUTED
* - 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);
428f8: 4bee fe70 lea %fp@(-400),%a5 <== NOT EXECUTED
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while (1) {
if (offset + 512 > tar_size)
428fc: 0682 0000 0200 addil #512,%d2 <== NOT EXECUTED 42902: bc82 cmpl %d2,%d6 <== NOT EXECUTED 42904: 6500 0098 bcsw 4299e <rtems_tarfs_load+0xfa> <== NOT EXECUTED
/*
* Read a header.
*/
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
42908: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
break;
/*
* Read a header.
*/
hdr_ptr = (char *) &tar_image[offset];
4290c: 45f2 5800 lea %a2@(00000000,%d5:l),%a2 <== NOT EXECUTED
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
42910: 4879 0006 230a pea 6230a <IMFS_ops+0x48> <== NOT EXECUTED 42916: 486a 0101 pea %a2@(257) <== NOT EXECUTED 4291a: 4eb9 0005 3580 jsr 53580 <strncmp> <== NOT EXECUTED 42920: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 42924: 4a80 tstl %d0 <== NOT EXECUTED 42926: 6676 bnes 4299e <rtems_tarfs_load+0xfa> <== NOT EXECUTED
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
42928: 4878 0063 pea 63 <DBL_MANT_DIG+0x2e> <== NOT EXECUTED
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
4292c: 47f9 0004 aa1c lea 4aa1c <_rtems_octal2ulong>,%a3 <== NOT EXECUTED
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
42932: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42934: 2f04 movel %d4,%sp@- <== NOT EXECUTED 42936: 4eb9 0005 3670 jsr 53670 <strncpy> <== NOT EXECUTED
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
4293c: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED 42940: 486a 0064 pea %a2@(100) <== NOT EXECUTED
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
filename[MAX_NAME_FIELD_SIZE] = '\0';
42944: 4200 clrb %d0 <== NOT EXECUTED 42946: 1d40 ffd3 moveb %d0,%fp@(-45) <== NOT EXECUTED
linkflag = hdr_ptr[156];
4294a: 162a 009c moveb %a2@(156),%d3 <== NOT EXECUTED
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
4294e: 4e93 jsr %a3@ <== NOT EXECUTED
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
42950: 4878 000c pea c <OPER1> <== NOT EXECUTED
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);
42954: 2840 moveal %d0,%a4 <== NOT EXECUTED
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
42956: 486a 007c pea %a2@(124) <== NOT EXECUTED 4295a: 4e93 jsr %a3@ <== NOT EXECUTED
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
4295c: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
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);
42960: 2e00 movel %d0,%d7 <== NOT EXECUTED
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
42962: 486a 0094 pea %a2@(148) <== NOT EXECUTED 42966: 4e93 jsr %a3@ <== NOT EXECUTED
if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)
42968: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
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);
4296c: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)
4296e: 2e8a movel %a2,%sp@ <== NOT EXECUTED 42970: 4eb9 0004 aeca jsr 4aeca <_rtems_tar_header_checksum> <== NOT EXECUTED 42976: 588f addql #4,%sp <== NOT EXECUTED 42978: b7c0 cmpal %d0,%a3 <== NOT EXECUTED 4297a: 6622 bnes 4299e <rtems_tarfs_load+0xfa> <== NOT EXECUTED
* 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) {
4297c: 7235 moveq #53,%d1 <== NOT EXECUTED 4297e: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED 42984: b283 cmpl %d3,%d1 <== NOT EXECUTED 42986: 676c beqs 429f4 <rtems_tarfs_load+0x150> <== NOT EXECUTED
* IMFS_create_node was ONLY passed a NULL when we created the
* root node. We added a new IMFS_create_root_node() so this
* path no longer existed. The result was simpler code which
* should not have this path.
*/
else if (linkflag == REGTYPE) {
42988: 7030 moveq #48,%d0 <== NOT EXECUTED 4298a: b083 cmpl %d3,%d0 <== NOT EXECUTED 4298c: 671e beqs 429ac <rtems_tarfs_load+0x108> <== NOT EXECUTED
0
);
if (status != 0)
return -1;
if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)
4298e: 2442 moveal %d2,%a2 <== NOT EXECUTED
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while (1) {
if (offset + 512 > tar_size)
42990: 240a movel %a2,%d2 <== NOT EXECUTED 42992: 0682 0000 0200 addil #512,%d2 <== NOT EXECUTED 42998: bc82 cmpl %d2,%d6 <== NOT EXECUTED 4299a: 6400 ff6c bccw 42908 <rtems_tarfs_load+0x64> <== NOT EXECUTED
nblocks = (((file_size) + 511) & ~511) / 512;
offset += 512 * nblocks;
}
}
return status;
}
4299e: 202e fe6c movel %fp@(-404),%d0 <== NOT EXECUTED 429a2: 4cee 3cfc fe44 moveml %fp@(-444),%d2-%d7/%a2-%a5 <== NOT EXECUTED 429a8: 4e5e unlk %fp <== NOT EXECUTED 429aa: 4e75 rts <== NOT EXECUTED
*/
else if (linkflag == REGTYPE) {
const char *name;
loc = root_loc;
if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {
429ac: 486e fffc pea %fp@(-4) <== NOT EXECUTED 429b0: 486e ffd4 pea %fp@(-44) <== NOT EXECUTED
* should not have this path.
*/
else if (linkflag == REGTYPE) {
const char *name;
loc = root_loc;
429b4: 2d6e ffe8 ffd4 movel %fp@(-24),%fp@(-44) <== NOT EXECUTED 429ba: 2d6e ffec ffd8 movel %fp@(-20),%fp@(-40) <== NOT EXECUTED 429c0: 2d6e fff0 ffdc movel %fp@(-16),%fp@(-36) <== NOT EXECUTED 429c6: 2d6e fff4 ffe0 movel %fp@(-12),%fp@(-32) <== NOT EXECUTED 429cc: 2d6e fff8 ffe4 movel %fp@(-8),%fp@(-28) <== NOT EXECUTED
if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {
429d2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 429d4: 4eb9 0004 b85e jsr 4b85e <IMFS_evaluate_for_make> <== NOT EXECUTED 429da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 429de: 4a80 tstl %d0 <== NOT EXECUTED 429e0: 6776 beqs 42a58 <rtems_tarfs_load+0x1b4> <== NOT EXECUTED
);
node->info.linearfile.size = file_size;
node->info.linearfile.direct = &tar_image[offset];
}
nblocks = (((file_size) + 511) & ~511) / 512;
429e2: 0687 0000 01ff addil #511,%d7 <== NOT EXECUTED
offset += 512 * nblocks;
429e8: 0287 ffff fe00 andil #-512,%d7 <== NOT EXECUTED 429ee: d487 addl %d7,%d2 <== NOT EXECUTED
0
);
if (status != 0)
return -1;
if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)
429f0: 2442 moveal %d2,%a2 <== NOT EXECUTED 429f2: 609c bras 42990 <rtems_tarfs_load+0xec> <== NOT EXECUTED
* - 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);
429f4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
if (full_filename[strlen(full_filename)-1] != '/')
429f8: 762f moveq #47,%d3 <== NOT EXECUTED
* - 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);
429fa: 2f0d movel %a5,%sp@- <== NOT EXECUTED 429fc: 4eb9 0005 30bc jsr 530bc <strcpy> <== NOT EXECUTED
if (full_filename[strlen(full_filename)-1] != '/')
42a02: 2f0d movel %a5,%sp@- <== NOT EXECUTED 42a04: 4eb9 0005 3568 jsr 53568 <strlen> <== NOT EXECUTED 42a0a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 42a0e: 41f6 0800 lea %fp@(00000000,%d0:l),%a0 <== NOT EXECUTED 42a12: 1228 fe6f moveb %a0@(-401),%d1 <== NOT EXECUTED 42a16: 49c1 extbl %d1 <== NOT EXECUTED 42a18: b681 cmpl %d1,%d3 <== NOT EXECUTED 42a1a: 6708 beqs 42a24 <rtems_tarfs_load+0x180> <== NOT EXECUTED
strcat(full_filename, "/");
42a1c: 323c 2f00 movew #12032,%d1 <== NOT EXECUTED 42a20: 3b81 0800 movew %d1,%a5@(00000000,%d0:l) <== NOT EXECUTED
strcat(full_filename, filename);
42a24: 2f04 movel %d4,%sp@- <== NOT EXECUTED
0
);
if (status != 0)
return -1;
if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)
42a26: 2442 moveal %d2,%a2 <== NOT EXECUTED
*/
if (linkflag == DIRTYPE) {
strcpy(full_filename, mountpoint);
if (full_filename[strlen(full_filename)-1] != '/')
strcat(full_filename, "/");
strcat(full_filename, filename);
42a28: 2f0d movel %a5,%sp@- <== NOT EXECUTED 42a2a: 4eb9 0005 2fa4 jsr 52fa4 <strcat> <== NOT EXECUTED
mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);
42a30: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED 42a34: 2f0d movel %a5,%sp@- <== NOT EXECUTED 42a36: 4eb9 0004 3d58 jsr 43d58 <mkdir> <== NOT EXECUTED 42a3c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 42a40: 6000 ff4e braw 42990 <rtems_tarfs_load+0xec> <== NOT EXECUTED
0,
&root_loc,
0
);
if (status != 0)
return -1;
42a44: 76ff moveq #-1,%d3 <== NOT EXECUTED 42a46: 2d43 fe6c movel %d3,%fp@(-404) <== NOT EXECUTED
nblocks = (((file_size) + 511) & ~511) / 512;
offset += 512 * nblocks;
}
}
return status;
}
42a4a: 202e fe6c movel %fp@(-404),%d0 <== NOT EXECUTED 42a4e: 4cee 3cfc fe44 moveml %fp@(-444),%d2-%d7/%a2-%a5 <== NOT EXECUTED 42a54: 4e5e unlk %fp <== NOT EXECUTED 42a56: 4e75 rts <== NOT EXECUTED
loc = root_loc;
if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {
node = IMFS_create_node(
&loc,
IMFS_LINEAR_FILE, (char *)name,
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
42a58: 200c movel %a4,%d0 <== NOT EXECUTED 42a5a: 0280 0000 01ff andil #511,%d0 <== NOT EXECUTED
else if (linkflag == REGTYPE) {
const char *name;
loc = root_loc;
if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {
node = IMFS_create_node(
42a60: 42a7 clrl %sp@- <== NOT EXECUTED 42a62: 08c0 000f bset #15,%d0 <== NOT EXECUTED 42a66: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42a68: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 42a6c: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED 42a70: 486e ffd4 pea %fp@(-44) <== NOT EXECUTED 42a74: 4eb9 0004 b0e2 jsr 4b0e2 <IMFS_create_node> <== NOT EXECUTED
IMFS_LINEAR_FILE, (char *)name,
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
NULL
);
node->info.linearfile.size = file_size;
node->info.linearfile.direct = &tar_image[offset];
42a7a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 42a7e: 2205 movel %d5,%d1 <== NOT EXECUTED
else if (linkflag == REGTYPE) {
const char *name;
loc = root_loc;
if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {
node = IMFS_create_node(
42a80: 2040 moveal %d0,%a0 <== NOT EXECUTED
IMFS_LINEAR_FILE, (char *)name,
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
NULL
);
node->info.linearfile.size = file_size;
node->info.linearfile.direct = &tar_image[offset];
42a82: d282 addl %d2,%d1 <== NOT EXECUTED
&loc,
IMFS_LINEAR_FILE, (char *)name,
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
NULL
);
node->info.linearfile.size = file_size;
42a84: 2147 0050 movel %d7,%a0@(80) <== NOT EXECUTED
node->info.linearfile.direct = &tar_image[offset];
}
nblocks = (((file_size) + 511) & ~511) / 512;
42a88: 0687 0000 01ff addil #511,%d7 <== NOT EXECUTED
offset += 512 * nblocks;
42a8e: 0287 ffff fe00 andil #-512,%d7 <== NOT EXECUTED
IMFS_LINEAR_FILE, (char *)name,
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
NULL
);
node->info.linearfile.size = file_size;
node->info.linearfile.direct = &tar_image[offset];
42a94: 2141 0054 movel %d1,%a0@(84) <== NOT EXECUTED
}
nblocks = (((file_size) + 511) & ~511) / 512;
offset += 512 * nblocks;
42a98: d487 addl %d7,%d2 <== NOT EXECUTED
&loc,
IMFS_LINEAR_FILE, (char *)name,
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
NULL
);
node->info.linearfile.size = file_size;
42a9a: 42a8 004c clrl %a0@(76) <== NOT EXECUTED 42a9e: 6000 ff50 braw 429f0 <rtems_tarfs_load+0x14c> <== NOT EXECUTED
0
);
if (status != 0)
return -1;
if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)
42aa2: 0c80 0006 2b16 cmpil #404246,%d0 <== NOT EXECUTED 42aa8: 6700 fe42 beqw 428ec <rtems_tarfs_load+0x48> <== NOT EXECUTED
return -1;
42aac: 70ff moveq #-1,%d0 <== NOT EXECUTED 42aae: 2d40 fe6c movel %d0,%fp@(-404) <== NOT EXECUTED
nblocks = (((file_size) + 511) & ~511) / 512;
offset += 512 * nblocks;
}
}
return status;
}
42ab2: 202e fe6c movel %fp@(-404),%d0 <== NOT EXECUTED 42ab6: 4cee 3cfc fe44 moveml %fp@(-444),%d2-%d7/%a2-%a5 <== NOT EXECUTED 42abc: 4e5e unlk %fp <== NOT EXECUTED
00046674 <rtems_task_create>:
size_t stack_size,
rtems_mode initial_modes,
rtems_attribute attribute_set,
rtems_id *id
)
{
46674: 4e56 ffe8 linkw %fp,#-24 46678: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ 4667c: 242e 0008 movel %fp@(8),%d2 46680: 282e 000c movel %fp@(12),%d4 46684: 262e 0014 movel %fp@(20),%d3 46688: 2a2e 0018 movel %fp@(24),%d5 4668c: 246e 001c moveal %fp@(28),%a2
Priority_Control core_priority;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !id )
46690: 4a8a tstl %a2 46692: 6700 0118 beqw 467ac <rtems_task_create+0x138>
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
46696: 4a82 tstl %d2 46698: 6700 00bc beqw 46756 <rtems_task_create+0xe2>
/*
* Validate the RTEMS API priority and convert it to the core priority range.
*/
if ( !_Attributes_Is_system_task( the_attribute_set ) ) {
4669c: 4a45 tstw %d5
4669e: 6d14 blts 466b4 <rtems_task_create+0x40> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
466a0: 4a84 tstl %d4 466a2: 6700 00a6 beqw 4674a <rtems_task_create+0xd6>
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
466a6: 4280 clrl %d0 466a8: 1039 0005 e3e2 moveb 5e3e2 <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
466ae: b084 cmpl %d4,%d0 466b0: 6500 0098 bcsw 4674a <rtems_task_create+0xd6>
*/
/*
* Lock the allocator mutex for protection
*/
_RTEMS_Lock_allocator();
466b4: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- 466ba: 4eb9 0004 6e50 jsr 46e50 <_API_Mutex_Lock>
* This function allocates a task control block from
* the inactive chain of free task control blocks.
*/
RTEMS_INLINE_ROUTINE Thread_Control *_RTEMS_tasks_Allocate( void )
{
return (Thread_Control *) _Objects_Allocate( &_RTEMS_tasks_Information );
466c0: 4879 0005 fc06 pea 5fc06 <_RTEMS_tasks_Information> 466c6: 4eb9 0004 7918 jsr 47918 <_Objects_Allocate>
* the event of an error.
*/
the_thread = _RTEMS_tasks_Allocate();
if ( !the_thread ) {
466cc: 508f addql #8,%sp 466ce: 2640 moveal %d0,%a3 466d0: 4a80 tstl %d0 466d2: 6700 00be beqw 46792 <rtems_task_create+0x11e>
/*
* Initialize the core thread for this task.
*/
status = _Thread_Initialize(
466d6: 7007 moveq #7,%d0 466d8: 2f02 movel %d2,%sp@- 466da: c083 andl %d3,%d0 466dc: 0803 0009 btst #9,%d3 466e0: 56c1 sne %d1 466e2: 2f00 movel %d0,%sp@- 466e4: 0803 0008 btst #8,%d3 466e8: 57c0 seq %d0 466ea: 42a7 clrl %sp@- 466ec: 49c1 extbl %d1 466ee: 4481 negl %d1 466f0: 49c0 extbl %d0 466f2: 4480 negl %d0 466f4: 2f01 movel %d1,%sp@- 466f6: 2f00 movel %d0,%sp@- 466f8: 7001 moveq #1,%d0 466fa: 2f04 movel %d4,%sp@- 466fc: c085 andl %d5,%d0 466fe: 2f00 movel %d0,%sp@- 46700: 2f2e 0010 movel %fp@(16),%sp@- 46704: 42a7 clrl %sp@- 46706: 2f0b movel %a3,%sp@- 46708: 4879 0005 fc06 pea 5fc06 <_RTEMS_tasks_Information> 4670e: 4eb9 0004 87a4 jsr 487a4 <_Thread_Initialize>
NULL, /* no budget algorithm callout */
_Modes_Get_interrupt_level(initial_modes),
(Objects_Name) name
);
if ( !status ) {
46714: 4fef 002c lea %sp@(44),%sp 46718: 4a00 tstb %d0
4671a: 6746 beqs 46762 <rtems_task_create+0xee>
_RTEMS_Unlock_allocator();
return RTEMS_UNSATISFIED;
}
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
4671c: 206b 010a moveal %a3@(266),%a0
* id - thread id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_task_create(
46720: 0803 000a btst #10,%d3 46724: 57c0 seq %d0 46726: 4480 negl %d0
}
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
asr->is_enabled = _Modes_Is_asr_disabled(initial_modes) ? false : true;
46728: 1140 0008 moveb %d0,%a0@(8)
*id = the_thread->Object.id;
4672c: 24ab 0008 movel %a3@(8),%a2@
);
}
#endif
_RTEMS_Unlock_allocator();
46730: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- 46736: 4eb9 0004 6eb0 jsr 46eb0 <_API_Mutex_Unlock>
return RTEMS_SUCCESSFUL;
4673c: 588f addql #4,%sp 4673e: 4280 clrl %d0
}
46740: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 46746: 4e5e unlk %fp 46748: 4e75 rts
* Validate the RTEMS API priority and convert it to the core priority range.
*/
if ( !_Attributes_Is_system_task( the_attribute_set ) ) {
if ( !_RTEMS_tasks_Priority_is_valid( initial_priority ) )
return RTEMS_INVALID_PRIORITY;
4674a: 7013 moveq #19,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
4674c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 46752: 4e5e unlk %fp <== NOT EXECUTED 46754: 4e75 rts <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
46756: 7003 moveq #3,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
46758: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4675e: 4e5e unlk %fp <== NOT EXECUTED 46760: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free (
Thread_Control *the_task
)
{
_Objects_Free(
46762: 2f2b 0008 movel %a3@(8),%sp@- 46766: 4eb9 0004 7cf0 jsr 47cf0 <_Objects_Get_information_id> 4676c: 2f0b movel %a3,%sp@- 4676e: 2f00 movel %d0,%sp@- 46770: 4eb9 0004 7c6c jsr 47c6c <_Objects_Free>
#if defined(RTEMS_MULTIPROCESSING)
if ( is_global )
_Objects_MP_Free_global_object( the_global_object );
#endif
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
46776: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- 4677c: 4eb9 0004 6eb0 jsr 46eb0 <_API_Mutex_Unlock>
return RTEMS_UNSATISFIED;
46782: 4fef 0010 lea %sp@(16),%sp 46786: 700d moveq #13,%d0
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
46788: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 4678e: 4e5e unlk %fp 46790: 4e75 rts
*/
the_thread = _RTEMS_tasks_Allocate();
if ( !the_thread ) {
_RTEMS_Unlock_allocator();
46792: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46798: 4eb9 0004 6eb0 jsr 46eb0 <_API_Mutex_Unlock> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4679e: 588f addql #4,%sp <== NOT EXECUTED 467a0: 7005 moveq #5,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
467a2: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 467a8: 4e5e unlk %fp <== NOT EXECUTED 467aa: 4e75 rts <== NOT EXECUTED
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !id )
return RTEMS_INVALID_ADDRESS;
467ac: 7009 moveq #9,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
467ae: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 467b4: 4e5e unlk %fp <== NOT EXECUTED
000467b8 <rtems_task_delete>:
*/
rtems_status_code rtems_task_delete(
rtems_id id
)
{
467b8: 4e56 fffc linkw %fp,#-4 467bc: 2f0b movel %a3,%sp@- 467be: 2f0a movel %a2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
Objects_Information *the_information;
_RTEMS_Lock_allocator();
467c0: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- 467c6: 4eb9 0004 6e50 jsr 46e50 <_API_Mutex_Lock>
the_thread = _Thread_Get( id, &location );
467cc: 486e fffc pea %fp@(-4) 467d0: 2f2e 0008 movel %fp@(8),%sp@- 467d4: 4eb9 0004 870c jsr 4870c <_Thread_Get>
switch ( location ) {
467da: 4fef 000c lea %sp@(12),%sp
Objects_Locations location;
Objects_Information *the_information;
_RTEMS_Lock_allocator();
the_thread = _Thread_Get( id, &location );
467de: 2440 moveal %d0,%a2
switch ( location ) {
467e0: 4aae fffc tstl %fp@(-4)
467e4: 664a bnes 46830 <rtems_task_delete+0x78> <== NEVER TAKEN
case OBJECTS_LOCAL:
the_information = _Objects_Get_information_id( the_thread->Object.id );
467e6: 2f2a 0008 movel %a2@(8),%sp@- 467ea: 47f9 0004 7cf0 lea 47cf0 <_Objects_Get_information_id>,%a3 467f0: 4e93 jsr %a3@
0 /* Not used */
);
}
#endif
_Thread_Close( the_information, the_thread );
467f2: 2f0a movel %a2,%sp@- 467f4: 2f00 movel %d0,%sp@- 467f6: 4eb9 0004 83b4 jsr 483b4 <_Thread_Close> 467fc: 2f2a 0008 movel %a2@(8),%sp@- 46800: 4e93 jsr %a3@ 46802: 2f0a movel %a2,%sp@- 46804: 2f00 movel %d0,%sp@- 46806: 4eb9 0004 7c6c jsr 47c6c <_Objects_Free>
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
4680c: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- 46812: 4eb9 0004 6eb0 jsr 46eb0 <_API_Mutex_Unlock>
_Thread_Enable_dispatch();
46818: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
}
4681e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46822: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 46826: 4280 clrl %d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
}
46828: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4682c: 4e5e unlk %fp <== NOT EXECUTED 4682e: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
_RTEMS_Unlock_allocator();
46830: 2f39 0005 fd2e movel 5fd2e <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46836: 4eb9 0004 6eb0 jsr 46eb0 <_API_Mutex_Unlock> <== NOT EXECUTED
return RTEMS_INVALID_ID; }
4683c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
46840: 588f addql #4,%sp <== NOT EXECUTED 46842: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46844: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 46848: 4e5e unlk %fp <== NOT EXECUTED
00048c94 <rtems_task_get_note>:
rtems_status_code rtems_task_get_note(
rtems_id id,
uint32_t notepad,
uint32_t *note
)
{
48c94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48c98: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 48c9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48c9e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 48ca2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48ca4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
48ca8: 4a39 0006 18e4 tstb 618e4 <Configuration_RTEMS_API+0x4> <== NOT EXECUTED 48cae: 6778 beqs 48d28 <rtems_task_get_note+0x94> <== NOT EXECUTED
return RTEMS_NOT_CONFIGURED;
if ( !note )
48cb0: 4a8a tstl %a2 <== NOT EXECUTED 48cb2: 6700 0090 beqw 48d44 <rtems_task_get_note+0xb0> <== NOT EXECUTED
/*
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
*/
if ( notepad > RTEMS_NOTEPAD_LAST )
48cb6: 720f moveq #15,%d1 <== NOT EXECUTED 48cb8: b282 cmpl %d2,%d1 <== NOT EXECUTED 48cba: 6542 bcss 48cfe <rtems_task_get_note+0x6a> <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48cbc: 4a80 tstl %d0 <== NOT EXECUTED 48cbe: 674c beqs 48d0c <rtems_task_get_note+0x78> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
48cc0: 2079 0006 38f6 moveal 638f6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48cc6: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 48cca: 6746 beqs 48d12 <rtems_task_get_note+0x7e> <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
return RTEMS_SUCCESSFUL;
}
the_thread = _Thread_Get( id, &location );
48ccc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48cd0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48cd2: 4eb9 0004 aeb8 jsr 4aeb8 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48cd8: 508f addql #8,%sp <== NOT EXECUTED 48cda: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48cde: 6656 bnes 48d36 <rtems_task_get_note+0xa2> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
48ce0: 2240 moveal %d0,%a1 <== NOT EXECUTED 48ce2: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED 48ce6: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
48cea: 4eb9 0004 ae92 jsr 4ae92 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48cf0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
48cf4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48cf6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48cfa: 4e5e unlk %fp <== NOT EXECUTED 48cfc: 4e75 rts <== NOT EXECUTED 48cfe: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
*/
if ( notepad > RTEMS_NOTEPAD_LAST )
return RTEMS_INVALID_NUMBER;
48d02: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d04: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d08: 4e5e unlk %fp <== NOT EXECUTED 48d0a: 4e75 rts <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48d0c: 2079 0006 38f6 moveal 638f6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
48d12: 2068 010a moveal %a0@(266),%a0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48d16: 4280 clrl %d0 <== NOT EXECUTED
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
48d18: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d1c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 48d20: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d24: 4e5e unlk %fp <== NOT EXECUTED 48d26: 4e75 rts <== NOT EXECUTED 48d28: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
48d2c: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d2e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d32: 4e5e unlk %fp <== NOT EXECUTED 48d34: 4e75 rts <== NOT EXECUTED 48d36: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48d3a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48d3c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d40: 4e5e unlk %fp <== NOT EXECUTED 48d42: 4e75 rts <== NOT EXECUTED 48d44: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
if ( !note )
return RTEMS_INVALID_ADDRESS;
48d48: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d4a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48d4e: 4e5e unlk %fp <== NOT EXECUTED
...
0004684c <rtems_task_ident>:
rtems_status_code rtems_task_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4684c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46850: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46854: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
if ( !id )
46858: 4a88 tstl %a0 <== NOT EXECUTED 4685a: 6738 beqs 46894 <rtems_task_ident+0x48> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( name == OBJECTS_ID_OF_SELF ) {
4685c: 4a80 tstl %d0 <== NOT EXECUTED 4685e: 660e bnes 4686e <rtems_task_ident+0x22> <== NOT EXECUTED
*id = _Thread_Executing->Object.id;
46860: 2279 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
return _Status_Object_name_errors_to_status[ status ];
}
46866: 4e5e unlk %fp <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( name == OBJECTS_ID_OF_SELF ) {
*id = _Thread_Executing->Object.id;
46868: 20a9 0008 movel %a1@(8),%a0@ <== NOT EXECUTED
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
return _Status_Object_name_errors_to_status[ status ];
}
4686c: 4e75 rts <== NOT EXECUTED
if ( name == OBJECTS_ID_OF_SELF ) {
*id = _Thread_Executing->Object.id;
return RTEMS_SUCCESSFUL;
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
4686e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 46870: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 46874: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46876: 4879 0005 fc06 pea 5fc06 <_RTEMS_tasks_Information> <== NOT EXECUTED 4687c: 4eb9 0004 7f88 jsr 47f88 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
46882: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46886: 41f9 0005 d4f6 lea 5d4f6 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4688c: 4e5e unlk %fp <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
return _Status_Object_name_errors_to_status[ status ];
4688e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
}
46892: 4e75 rts <== NOT EXECUTED
)
{
Objects_Name_or_id_lookup_errors status;
if ( !id )
return RTEMS_INVALID_ADDRESS;
46894: 7009 moveq #9,%d0 <== NOT EXECUTED
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
return _Status_Object_name_errors_to_status[ status ];
}
46896: 4e5e unlk %fp <== NOT EXECUTED
...
000583b8 <rtems_task_is_suspended>:
*/
rtems_status_code rtems_task_is_suspended(
rtems_id id
)
{
583b8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
583bc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 583c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 583c4: 4eb9 0005 c2a4 jsr 5c2a4 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
583ca: 508f addql #8,%sp <== NOT EXECUTED 583cc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 583d0: 6706 beqs 583d8 <rtems_task_is_suspended+0x20> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
583d2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
583d4: 4e5e unlk %fp <== NOT EXECUTED 583d6: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
583d8: 7202 moveq #2,%d1 <== NOT EXECUTED 583da: 2040 moveal %d0,%a0 <== NOT EXECUTED 583dc: c2a8 0010 andl %a0@(16),%d1 <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
583e0: 670c beqs 583ee <rtems_task_is_suspended+0x36> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
583e2: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_ALREADY_SUSPENDED;
583e8: 700f moveq #15,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
583ea: 4e5e unlk %fp <== NOT EXECUTED 583ec: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
_Thread_Enable_dispatch();
583ee: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
583f4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
583f6: 4e5e unlk %fp <== NOT EXECUTED
...
0004e3b0 <rtems_task_mode>:
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
)
{
4e3b0: 4e56 ffe4 linkw %fp,#-28 4e3b4: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ 4e3b8: 2a2e 0008 movel %fp@(8),%d5 4e3bc: 242e 000c movel %fp@(12),%d2 4e3c0: 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 )
4e3c4: 4a8c tstl %a4 4e3c6: 6700 015a beqw 4e522 <rtems_task_mode+0x172>
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
4e3ca: 2479 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a2
api = executing->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4e3d0: 4a2a 0074 tstb %a2@(116) 4e3d4: 57c3 seq %d3
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
4e3d6: 266a 010a moveal %a2@(266),%a3
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4e3da: 49c3 extbl %d3 4e3dc: 0283 0000 0100 andil #256,%d3
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
4e3e2: 4aaa 007a tstl %a2@(122) 4e3e6: 6600 00cc bnew 4e4b4 <rtems_task_mode+0x104>
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4e3ea: 4a2b 0008 tstb %a3@(8) 4e3ee: 57c4 seq %d4
old_mode |= _ISR_Get_level();
4e3f0: 4eb9 0004 9cdc jsr 49cdc <_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;
4e3f6: 49c4 extbl %d4 4e3f8: 0284 0000 0400 andil #1024,%d4 4e3fe: 8084 orl %d4,%d0
old_mode |= _ISR_Get_level();
4e400: 8083 orl %d3,%d0 4e402: 2880 movel %d0,%a4@
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4e404: 0802 0008 btst #8,%d2
4e408: 670c beqs 4e416 <rtems_task_mode+0x66> <== NEVER TAKEN
executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
4e40a: 0805 0008 btst #8,%d5 4e40e: 57c0 seq %d0 4e410: 4480 negl %d0 4e412: 1540 0074 moveb %d0,%a2@(116)
if ( mask & RTEMS_TIMESLICE_MASK ) {
4e416: 0802 0009 btst #9,%d2
4e41a: 6718 beqs 4e434 <rtems_task_mode+0x84>
if ( _Modes_Is_timeslice(mode_set) ) {
4e41c: 0805 0009 btst #9,%d5 4e420: 6700 00ee beqw 4e510 <rtems_task_mode+0x160>
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
4e424: 7001 moveq #1,%d0 <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4e426: 41f9 0005 fc44 lea 5fc44 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
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;
4e42c: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4e430: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e434: 7007 moveq #7,%d0 4e436: c082 andl %d2,%d0
4e438: 6712 beqs 4e44c <rtems_task_mode+0x9c> <== ALWAYS TAKEN
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
{
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
4e43a: 40c0 movew %sr,%d0
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
{
return ( mode_set & RTEMS_INTERRUPT_MASK );
4e43c: 7207 moveq #7,%d1 4e43e: 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 ) );
4e440: 0280 0000 f8ff andil #63743,%d0 4e446: e189 lsll #8,%d1 4e448: 8081 orl %d1,%d0 4e44a: 46c0 movew %d0,%sr
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
4e44c: 0802 000a btst #10,%d2
4e450: 6754 beqs 4e4a6 <rtems_task_mode+0xf6>
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4e452: 4282 clrl %d2 4e454: 142b 0008 moveb %a3@(8),%d2 4e458: 4280 clrl %d0
* Output:
* *previous_mode_set - previous mode set
* always return RTEMS_SUCCESSFUL;
*/
rtems_status_code rtems_task_mode(
4e45a: 0805 000a btst #10,%d5 4e45e: 57c1 seq %d1 4e460: 4481 negl %d1
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4e462: 1001 moveb %d1,%d0 4e464: b082 cmpl %d2,%d0
4e466: 673e beqs 4e4a6 <rtems_task_mode+0xf6> <== ALWAYS TAKEN
)
{
rtems_signal_set _signals;
ISR_Level _level;
_ISR_Disable( _level );
4e468: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
asr->is_enabled = is_asr_enabled;
4e46e: 1741 0008 moveb %d1,%a3@(8) <== NOT EXECUTED 4e472: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e474: 8081 orl %d1,%d0 <== NOT EXECUTED 4e476: 46c0 movew %d0,%sr <== NOT EXECUTED
_signals = information->signals_pending;
4e478: 202b 0016 movel %a3@(22),%d0 <== NOT EXECUTED
information->signals_pending = information->signals_posted;
4e47c: 276b 0012 0016 movel %a3@(18),%a3@(22) <== NOT EXECUTED
information->signals_posted = _signals;
4e482: 2740 0012 movel %d0,%a3@(18) <== NOT EXECUTED
_ISR_Enable( _level );
4e486: 46c1 movew %d1,%sr <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e488: 4aab 0012 tstl %a3@(18) <== NOT EXECUTED 4e48c: 56c0 sne %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e48e: 7203 moveq #3,%d1 <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e490: 4480 negl %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e492: b2b9 0005 fdfa cmpl 5fdfa <_System_state_Current>,%d1 <== NOT EXECUTED 4e498: 6744 beqs 4e4de <rtems_task_mode+0x12e> <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
4e49a: 4280 clrl %d0
}
4e49c: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 4e4a2: 4e5e unlk %fp 4e4a4: 4e75 rts
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e4a6: 7203 moveq #3,%d1
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e4a8: 4200 clrb %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e4aa: b2b9 0005 fdfa cmpl 5fdfa <_System_state_Current>,%d1
4e4b0: 66e8 bnes 4e49a <rtems_task_mode+0xea> <== NEVER TAKEN
4e4b2: 602a bras 4e4de <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;
4e4b4: 4a2b 0008 tstb %a3@(8) <== NOT EXECUTED 4e4b8: 57c4 seq %d4 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4e4ba: 4eb9 0004 9cdc jsr 49cdc <_CPU_ISR_Get_level> <== NOT EXECUTED
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;
4e4c0: 49c4 extbl %d4 <== NOT EXECUTED 4e4c2: 0284 0000 0400 andil #1024,%d4 <== NOT EXECUTED
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;
4e4c8: 08c3 0009 bset #9,%d3 <== NOT EXECUTED
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4e4cc: 8084 orl %d4,%d0 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4e4ce: 8083 orl %d3,%d0 <== NOT EXECUTED 4e4d0: 2880 movel %d0,%a4@ <== NOT EXECUTED
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4e4d2: 0802 0008 btst #8,%d2 <== NOT EXECUTED 4e4d6: 6700 ff3e beqw 4e416 <rtems_task_mode+0x66> <== NOT EXECUTED 4e4da: 6000 ff2e braw 4e40a <rtems_task_mode+0x5a> <== NOT EXECUTED
bool are_signals_pending
)
{
Thread_Control *executing;
executing = _Thread_Executing;
4e4de: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0
if ( are_signals_pending ||
4e4e4: 4a00 tstb %d0
4e4e6: 660e bnes 4e4f6 <rtems_task_mode+0x146> <== NEVER TAKEN
4e4e8: b1f9 0006 0120 cmpal 60120 <_Per_CPU_Information+0x10>,%a0
4e4ee: 67aa beqs 4e49a <rtems_task_mode+0xea> <== ALWAYS TAKEN
(!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
4e4f0: 4a28 0074 tstb %a0@(116) <== NOT EXECUTED 4e4f4: 67a4 beqs 4e49a <rtems_task_mode+0xea> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4e4f6: 7001 moveq #1,%d0 <== NOT EXECUTED 4e4f8: 13c0 0006 0128 moveb %d0,60128 <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
4e4fe: 4eb9 0004 857c jsr 4857c <_Thread_Dispatch> <== NOT EXECUTED
}
return RTEMS_SUCCESSFUL;
}
4e504: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
if ( _System_state_Is_up( _System_state_Get() ) ) {
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
4e50a: 4280 clrl %d0 <== NOT EXECUTED
}
4e50c: 4e5e unlk %fp <== NOT EXECUTED 4e50e: 4e75 rts <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e510: 7007 moveq #7,%d0 4e512: 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;
4e514: 42aa 007a clrl %a2@(122)
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e518: 4a80 tstl %d0 4e51a: 6700 ff30 beqw 4e44c <rtems_task_mode+0x9c> 4e51e: 6000 ff1a braw 4e43a <rtems_task_mode+0x8a>
bool is_asr_enabled = false;
bool needs_asr_dispatching = false;
rtems_mode old_mode;
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
4e522: 7009 moveq #9,%d0 <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
}
4e524: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4e52a: 4e5e unlk %fp <== NOT EXECUTED
...
000474c8 <rtems_task_restart>:
rtems_status_code rtems_task_restart(
rtems_id id,
uint32_t argument
)
{
474c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
474cc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 474d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 474d4: 4eb9 0004 9320 jsr 49320 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
474da: 508f addql #8,%sp <== NOT EXECUTED 474dc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 474e0: 6622 bnes 47504 <rtems_task_restart+0x3c> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_Restart( the_thread, NULL, argument ) ) {
474e2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 474e6: 42a7 clrl %sp@- <== NOT EXECUTED 474e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 474ea: 4eb9 0004 9c4c jsr 49c4c <_Thread_Restart> <== NOT EXECUTED 474f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 474f4: 4a00 tstb %d0 <== NOT EXECUTED 474f6: 6612 bnes 4750a <rtems_task_restart+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
474f8: 4eb9 0004 92fa jsr 492fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
474fe: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47500: 4e5e unlk %fp <== NOT EXECUTED 47502: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47504: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47506: 4e5e unlk %fp <== NOT EXECUTED 47508: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( _Thread_Restart( the_thread, NULL, argument ) ) {
_Thread_Enable_dispatch();
4750a: 4eb9 0004 92fa jsr 492fa <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47510: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47512: 4e5e unlk %fp <== NOT EXECUTED
...
00049f40 <rtems_task_resume>:
*/
rtems_status_code rtems_task_resume(
rtems_id id
)
{
49f40: 4e56 fffc linkw %fp,#-4
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49f44: 486e fffc pea %fp@(-4) 49f48: 2f2e 0008 movel %fp@(8),%sp@- 49f4c: 4eb9 0004 bdc4 jsr 4bdc4 <_Thread_Get>
switch ( location ) {
49f52: 508f addql #8,%sp 49f54: 4aae fffc tstl %fp@(-4)
49f58: 6706 beqs 49f60 <rtems_task_resume+0x20> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
49f5a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
49f5c: 4e5e unlk %fp <== NOT EXECUTED 49f5e: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
49f60: 7202 moveq #2,%d1 49f62: 2040 moveal %d0,%a0 49f64: c2a8 0010 andl %a0@(16),%d1
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( _States_Is_suspended( the_thread->current_state ) ) {
49f68: 660c bnes 49f76 <rtems_task_resume+0x36> <== ALWAYS TAKEN
_Thread_Resume( the_thread, true );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
49f6a: 4eb9 0004 bd9e jsr 4bd9e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
49f70: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
49f72: 4e5e unlk %fp <== NOT EXECUTED 49f74: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( _States_Is_suspended( the_thread->current_state ) ) {
_Thread_Resume( the_thread, true );
49f76: 4878 0001 pea 1 <ADD> 49f7a: 2f00 movel %d0,%sp@- 49f7c: 4eb9 0004 c6f0 jsr 4c6f0 <_Thread_Resume>
_Thread_Enable_dispatch();
49f82: 4eb9 0004 bd9e jsr 4bd9e <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
49f88: 508f addql #8,%sp 49f8a: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
49f8c: 4e5e unlk %fp <== NOT EXECUTED
00048e40 <rtems_task_set_note>:
rtems_status_code rtems_task_set_note(
rtems_id id,
uint32_t notepad,
uint32_t note
)
{
48e40: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48e44: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 48e48: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48e4a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
48e4e: 4a39 0006 18e4 tstb 618e4 <Configuration_RTEMS_API+0x4> <== NOT EXECUTED 48e54: 676e beqs 48ec4 <rtems_task_set_note+0x84> <== NOT EXECUTED
/*
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
*/
if ( notepad > RTEMS_NOTEPAD_LAST )
48e56: 720f moveq #15,%d1 <== NOT EXECUTED 48e58: b282 cmpl %d2,%d1 <== NOT EXECUTED 48e5a: 6542 bcss 48e9e <rtems_task_set_note+0x5e> <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48e5c: 4a80 tstl %d0 <== NOT EXECUTED 48e5e: 6748 beqs 48ea8 <rtems_task_set_note+0x68> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
48e60: 2079 0006 38f6 moveal 638f6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48e66: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 48e6a: 6742 beqs 48eae <rtems_task_set_note+0x6e> <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
return RTEMS_SUCCESSFUL;
}
the_thread = _Thread_Get( id, &location );
48e6c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48e70: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48e72: 4eb9 0004 aeb8 jsr 4aeb8 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48e78: 508f addql #8,%sp <== NOT EXECUTED 48e7a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48e7e: 664e bnes 48ece <rtems_task_set_note+0x8e> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
48e80: 2240 moveal %d0,%a1 <== NOT EXECUTED 48e82: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 48e86: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED 48e8a: 2180 2c1e movel %d0,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
48e8e: 4eb9 0004 ae92 jsr 4ae92 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48e94: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
48e98: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48e9a: 4e5e unlk %fp <== NOT EXECUTED 48e9c: 4e75 rts <== NOT EXECUTED 48e9e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
*/
if ( notepad > RTEMS_NOTEPAD_LAST )
return RTEMS_INVALID_NUMBER;
48ea2: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48ea4: 4e5e unlk %fp <== NOT EXECUTED 48ea6: 4e75 rts <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48ea8: 2079 0006 38f6 moveal 638f6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
48eae: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48eb2: 4280 clrl %d0 <== NOT EXECUTED
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
48eb4: 2068 010a moveal %a0@(266),%a0 <== NOT EXECUTED 48eb8: 2189 2c1e movel %a1,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48ebc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48ec0: 4e5e unlk %fp <== NOT EXECUTED 48ec2: 4e75 rts <== NOT EXECUTED 48ec4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
48ec8: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48eca: 4e5e unlk %fp <== NOT EXECUTED 48ecc: 4e75 rts <== NOT EXECUTED 48ece: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48ed2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48ed4: 4e5e unlk %fp <== NOT EXECUTED
0004ad28 <rtems_task_set_priority>:
rtems_status_code rtems_task_set_priority(
rtems_id id,
rtems_task_priority new_priority,
rtems_task_priority *old_priority
)
{
4ad28: 4e56 fffc linkw %fp,#-4 4ad2c: 2f0a movel %a2,%sp@- 4ad2e: 246e 0010 moveal %fp@(16),%a2 4ad32: 2f02 movel %d2,%sp@- 4ad34: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
4ad38: 670c beqs 4ad46 <rtems_task_set_priority+0x1e> <== NEVER TAKEN
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 ) );
4ad3a: 4280 clrl %d0 4ad3c: 1039 0006 28a2 moveb 628a2 <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
4ad42: b082 cmpl %d2,%d0
4ad44: 6566 bcss 4adac <rtems_task_set_priority+0x84> <== NEVER TAKEN
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
4ad46: 4a8a tstl %a2
4ad48: 6770 beqs 4adba <rtems_task_set_priority+0x92> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
4ad4a: 486e fffc pea %fp@(-4) 4ad4e: 2f2e 0008 movel %fp@(8),%sp@- 4ad52: 4eb9 0004 cd58 jsr 4cd58 <_Thread_Get>
switch ( location ) {
4ad58: 508f addql #8,%sp 4ad5a: 4aae fffc tstl %fp@(-4)
4ad5e: 663e bnes 4ad9e <rtems_task_set_priority+0x76> <== NEVER TAKEN
case OBJECTS_LOCAL:
/* XXX need helper to "convert" from core priority */
*old_priority = the_thread->current_priority;
4ad60: 2040 moveal %d0,%a0 4ad62: 24a8 0014 movel %a0@(20),%a2@
if ( new_priority != RTEMS_CURRENT_PRIORITY ) {
4ad66: 4a82 tstl %d2
4ad68: 6720 beqs 4ad8a <rtems_task_set_priority+0x62> <== NEVER TAKEN
the_thread->real_priority = new_priority;
4ad6a: 2142 0018 movel %d2,%a0@(24)
if ( the_thread->resource_count == 0 ||
4ad6e: 4aa8 001c tstl %a0@(28)
4ad72: 6706 beqs 4ad7a <rtems_task_set_priority+0x52> <== ALWAYS TAKEN
4ad74: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED 4ad78: 6410 bccs 4ad8a <rtems_task_set_priority+0x62> <== NOT EXECUTED
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, false );
4ad7a: 42a7 clrl %sp@- 4ad7c: 2f02 movel %d2,%sp@- 4ad7e: 2f00 movel %d0,%sp@- 4ad80: 4eb9 0004 c800 jsr 4c800 <_Thread_Change_priority> 4ad86: 4fef 000c lea %sp@(12),%sp
}
_Thread_Enable_dispatch();
4ad8a: 4eb9 0004 cd32 jsr 4cd32 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad90: 242e fff4 movel %fp@(-12),%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;
4ad94: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad96: 246e fff8 moveal %fp@(-8),%a2 4ad9a: 4e5e unlk %fp 4ad9c: 4e75 rts
4ad9e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ada2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ada4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ada8: 4e5e unlk %fp <== NOT EXECUTED 4adaa: 4e75 rts <== NOT EXECUTED 4adac: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
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;
4adb0: 7013 moveq #19,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4adb2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4adb6: 4e5e unlk %fp <== NOT EXECUTED 4adb8: 4e75 rts <== NOT EXECUTED 4adba: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
return RTEMS_INVALID_ADDRESS;
4adbe: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4adc0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4adc4: 4e5e unlk %fp <== NOT EXECUTED
00046924 <rtems_task_start>:
rtems_status_code rtems_task_start(
rtems_id id,
rtems_task_entry entry_point,
rtems_task_argument argument
)
{
46924: 4e56 fffc linkw %fp,#-4 46928: 2f02 movel %d2,%sp@- 4692a: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
4692e: 674a beqs 4697a <rtems_task_start+0x56>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
46930: 486e fffc pea %fp@(-4) 46934: 2f2e 0008 movel %fp@(8),%sp@- 46938: 4eb9 0004 870c jsr 4870c <_Thread_Get>
switch ( location ) {
4693e: 508f addql #8,%sp 46940: 4aae fffc tstl %fp@(-4)
46944: 662a bnes 46970 <rtems_task_start+0x4c> <== NEVER TAKEN
case OBJECTS_LOCAL:
if ( _Thread_Start(
46946: 2f2e 0010 movel %fp@(16),%sp@- 4694a: 42a7 clrl %sp@- 4694c: 2f02 movel %d2,%sp@- 4694e: 42a7 clrl %sp@- 46950: 2f00 movel %d0,%sp@- 46952: 4eb9 0004 9328 jsr 49328 <_Thread_Start> 46958: 4fef 0014 lea %sp@(20),%sp 4695c: 4a00 tstb %d0
4695e: 6624 bnes 46984 <rtems_task_start+0x60> <== ALWAYS TAKEN
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
46960: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46966: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
4696a: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4696c: 4e5e unlk %fp <== NOT EXECUTED 4696e: 4e75 rts <== NOT EXECUTED 46970: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46974: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46976: 4e5e unlk %fp <== NOT EXECUTED 46978: 4e75 rts <== NOT EXECUTED
4697a: 242e fff8 movel %fp@(-8),%d2
{
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
return RTEMS_INVALID_ADDRESS;
4697e: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46980: 4e5e unlk %fp 46982: 4e75 rts
switch ( location ) {
case OBJECTS_LOCAL:
if ( _Thread_Start(
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
46984: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4698a: 242e fff8 movel %fp@(-8),%d2
case OBJECTS_LOCAL:
if ( _Thread_Start(
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4698e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46990: 4e5e unlk %fp <== NOT EXECUTED
00046994 <rtems_task_suspend>:
*/
rtems_status_code rtems_task_suspend(
rtems_id id
)
{
46994: 4e56 fffc linkw %fp,#-4
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
46998: 486e fffc pea %fp@(-4) 4699c: 2f2e 0008 movel %fp@(8),%sp@- 469a0: 4eb9 0004 870c jsr 4870c <_Thread_Get>
switch ( location ) {
469a6: 508f addql #8,%sp 469a8: 4aae fffc tstl %fp@(-4)
469ac: 6706 beqs 469b4 <rtems_task_suspend+0x20> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
469ae: 7004 moveq #4,%d0 <== NOT EXECUTED
}
469b0: 4e5e unlk %fp <== NOT EXECUTED 469b2: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
469b4: 7202 moveq #2,%d1 469b6: 2040 moveal %d0,%a0 469b8: c2a8 0010 andl %a0@(16),%d1
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
469bc: 670c beqs 469ca <rtems_task_suspend+0x36> <== ALWAYS TAKEN
_Thread_Suspend( the_thread );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
469be: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_ALREADY_SUSPENDED;
469c4: 700f moveq #15,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
469c6: 4e5e unlk %fp <== NOT EXECUTED 469c8: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
_Thread_Suspend( the_thread );
469ca: 2f00 movel %d0,%sp@- 469cc: 4eb9 0004 9384 jsr 49384 <_Thread_Suspend>
_Thread_Enable_dispatch();
469d2: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
469d8: 588f addql #4,%sp 469da: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
469dc: 4e5e unlk %fp <== NOT EXECUTED
000477a8 <rtems_task_variable_add>:
rtems_status_code rtems_task_variable_add(
rtems_id tid,
void **ptr,
void (*dtor)(void *)
)
{
477a8: 4e56 fff0 linkw %fp,#-16 477ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 477b0: 246e 000c moveal %fp@(12),%a2 477b4: 242e 0010 movel %fp@(16),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
477b8: 4a8a tstl %a2 477ba: 6700 009a beqw 47856 <rtems_task_variable_add+0xae>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
477be: 486e fffc pea %fp@(-4) <== NOT EXECUTED 477c2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 477c6: 4eb9 0004 9688 jsr 49688 <_Thread_Get> <== NOT EXECUTED
switch (location) {
477cc: 508f addql #8,%sp <== NOT EXECUTED
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
477ce: 2640 moveal %d0,%a3 <== NOT EXECUTED
switch (location) {
477d0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 477d4: 664c bnes 47822 <rtems_task_variable_add+0x7a> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
477d6: 206b 0116 moveal %a3@(278),%a0 <== NOT EXECUTED
while (tvp) {
477da: 4a88 tstl %a0 <== NOT EXECUTED 477dc: 670c beqs 477ea <rtems_task_variable_add+0x42> <== NOT EXECUTED
if (tvp->ptr == ptr) {
477de: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 477e2: 674a beqs 4782e <rtems_task_variable_add+0x86> <== NOT EXECUTED
tvp->dtor = dtor;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
477e4: 2050 moveal %a0@,%a0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
477e6: 4a88 tstl %a0 <== NOT EXECUTED 477e8: 66f4 bnes 477de <rtems_task_variable_add+0x36> <== NOT EXECUTED
/*
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
477ea: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED 477ee: 4eb9 0004 ab32 jsr 4ab32 <_Workspace_Allocate> <== NOT EXECUTED
if (new == NULL) {
477f4: 588f addql #4,%sp <== NOT EXECUTED
/*
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
477f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (new == NULL) {
477f8: 4a80 tstl %d0 <== NOT EXECUTED 477fa: 6748 beqs 47844 <rtems_task_variable_add+0x9c> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
477fc: 2152 0008 movel %a2@,%a0@(8) <== NOT EXECUTED
new->ptr = ptr;
new->dtor = dtor;
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
47800: 20ab 0116 movel %a3@(278),%a0@ <== NOT EXECUTED
if (new == NULL) {
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
new->ptr = ptr;
47804: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
new->dtor = dtor;
47808: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
the_thread->task_variables = new;
4780c: 2740 0116 movel %d0,%a3@(278) <== NOT EXECUTED
_Thread_Enable_dispatch();
47810: 4eb9 0004 9662 jsr 49662 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47816: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
new->dtor = dtor;
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
the_thread->task_variables = new;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4781c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4781e: 4e5e unlk %fp <== NOT EXECUTED 47820: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47822: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47824: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 4782a: 4e5e unlk %fp <== NOT EXECUTED 4782c: 4e75 rts <== NOT EXECUTED
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
tvp->dtor = dtor;
4782e: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
_Thread_Enable_dispatch();
47832: 4eb9 0004 9662 jsr 49662 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47838: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
tvp->dtor = dtor;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4783e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47840: 4e5e unlk %fp <== NOT EXECUTED 47842: 4e75 rts <== NOT EXECUTED
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
if (new == NULL) {
_Thread_Enable_dispatch();
47844: 4eb9 0004 9662 jsr 49662 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
4784a: 701a moveq #26,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4784c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 47852: 4e5e unlk %fp <== NOT EXECUTED 47854: 4e75 rts <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
47856: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47858: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 4785e: 4e5e unlk %fp
...
00047864 <rtems_task_variable_delete>:
rtems_status_code rtems_task_variable_delete(
rtems_id tid,
void **ptr
)
{
47864: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47868: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4786a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
4786e: 6772 beqs 478e2 <rtems_task_variable_delete+0x7e><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
prev = NULL;
the_thread = _Thread_Get (tid, &location);
47870: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47874: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47878: 4eb9 0004 9688 jsr 49688 <_Thread_Get> <== NOT EXECUTED
switch (location) {
4787e: 508f addql #8,%sp <== NOT EXECUTED 47880: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47884: 6634 bnes 478ba <rtems_task_variable_delete+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
47886: 2040 moveal %d0,%a0 <== NOT EXECUTED 47888: 2268 0116 moveal %a0@(278),%a1 <== NOT EXECUTED
while (tvp) {
4788c: 4a89 tstl %a1 <== NOT EXECUTED 4788e: 671a beqs 478aa <rtems_task_variable_delete+0x46><== NOT EXECUTED
if (tvp->ptr == ptr) {
47890: b4a9 0004 cmpl %a1@(4),%d2 <== NOT EXECUTED 47894: 6756 beqs 478ec <rtems_task_variable_delete+0x88><== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
47896: 2051 moveal %a1@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
47898: 4a88 tstl %a0 <== NOT EXECUTED 4789a: 670e beqs 478aa <rtems_task_variable_delete+0x46><== NOT EXECUTED
if (tvp->ptr == ptr) {
4789c: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 478a0: 6722 beqs 478c4 <rtems_task_variable_delete+0x60><== NOT EXECUTED 478a2: 2248 moveal %a0,%a1 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
478a4: 2051 moveal %a1@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
478a6: 4a88 tstl %a0 <== NOT EXECUTED 478a8: 66f2 bnes 4789c <rtems_task_variable_delete+0x38><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
478aa: 4eb9 0004 9662 jsr 49662 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478b0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
478b4: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478b6: 4e5e unlk %fp <== NOT EXECUTED 478b8: 4e75 rts <== NOT EXECUTED 478ba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
478be: 7004 moveq #4,%d0 <== NOT EXECUTED
}
478c0: 4e5e unlk %fp <== NOT EXECUTED 478c2: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
478c4: 2290 movel %a0@,%a1@ <== NOT EXECUTED
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
478c6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 478c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 478ca: 4eb9 0004 7998 jsr 47998 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
478d0: 4eb9 0004 9662 jsr 49662 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
478d6: 508f addql #8,%sp <== NOT EXECUTED 478d8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478da: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 478de: 4e5e unlk %fp <== NOT EXECUTED 478e0: 4e75 rts <== NOT EXECUTED 478e2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
478e6: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478e8: 4e5e unlk %fp <== NOT EXECUTED 478ea: 4e75 rts <== NOT EXECUTED
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
478ec: 2040 moveal %d0,%a0 <== NOT EXECUTED 478ee: 2151 0116 movel %a1@,%a0@(278) <== NOT EXECUTED 478f2: 2049 moveal %a1,%a0 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
478f4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 478f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 478f8: 4eb9 0004 7998 jsr 47998 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
478fe: 4eb9 0004 9662 jsr 49662 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47904: 508f addql #8,%sp <== NOT EXECUTED 47906: 4280 clrl %d0 <== NOT EXECUTED 47908: 60d0 bras 478da <rtems_task_variable_delete+0x76><== NOT EXECUTED
...
0004790c <rtems_task_variable_get>:
rtems_status_code rtems_task_variable_get(
rtems_id tid,
void **ptr,
void **result
)
{
4790c: 4e56 fffc linkw %fp,#-4 47910: 2f0a movel %a2,%sp@- 47912: 246e 0010 moveal %fp@(16),%a2 47916: 2f02 movel %d2,%sp@- 47918: 242e 000c movel %fp@(12),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp;
if ( !ptr )
4791c: 6752 beqs 47970 <rtems_task_variable_get+0x64> <== ALWAYS TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !result )
4791e: 4a8a tstl %a2 <== NOT EXECUTED 47920: 674e beqs 47970 <rtems_task_variable_get+0x64> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
47922: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47926: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4792a: 4eb9 0004 9688 jsr 49688 <_Thread_Get> <== NOT EXECUTED
switch (location) {
47930: 508f addql #8,%sp <== NOT EXECUTED 47932: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47936: 662a bnes 47962 <rtems_task_variable_get+0x56> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
47938: 2240 moveal %d0,%a1 <== NOT EXECUTED 4793a: 2069 0116 moveal %a1@(278),%a0 <== NOT EXECUTED
while (tvp) {
4793e: 4a88 tstl %a0 <== NOT EXECUTED 47940: 670c beqs 4794e <rtems_task_variable_get+0x42> <== NOT EXECUTED
if (tvp->ptr == ptr) {
47942: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 47946: 6736 beqs 4797e <rtems_task_variable_get+0x72> <== NOT EXECUTED
*/
*result = tvp->tval;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
47948: 2050 moveal %a0@,%a0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
4794a: 4a88 tstl %a0 <== NOT EXECUTED 4794c: 66f4 bnes 47942 <rtems_task_variable_get+0x36> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
4794e: 4eb9 0004 9662 jsr 49662 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47954: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
47958: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4795a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4795e: 4e5e unlk %fp <== NOT EXECUTED 47960: 4e75 rts <== NOT EXECUTED 47962: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47966: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47968: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4796c: 4e5e unlk %fp <== NOT EXECUTED 4796e: 4e75 rts <== NOT EXECUTED
47970: 242e fff4 movel %fp@(-12),%d2
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
if ( !result )
return RTEMS_INVALID_ADDRESS;
47974: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47976: 246e fff8 moveal %fp@(-8),%a2 4797a: 4e5e unlk %fp 4797c: 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;
4797e: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47982: 4eb9 0004 9662 jsr 49662 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47988: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
* 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;
4798c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4798e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47992: 4e5e unlk %fp <== NOT EXECUTED
...
000469e0 <rtems_task_wake_after>:
*/
rtems_status_code rtems_task_wake_after(
rtems_interval ticks
)
{
469e0: 4e56 0000 linkw %fp,#0 469e4: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0 469ea: 5280 addql #1,%d0 469ec: 2f02 movel %d2,%sp@- 469ee: 242e 0008 movel %fp@(8),%d2 469f2: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
469f8: 4a82 tstl %d2
469fa: 6758 beqs 46a54 <rtems_task_wake_after+0x74> <== NEVER TAKEN
_Thread_Yield_processor();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
469fc: 4878 0008 pea 8 <DIVIDE_BY_ZERO> 46a00: 2f39 0006 011c movel 6011c <_Per_CPU_Information+0xc>,%sp@- 46a06: 4eb9 0004 90a8 jsr 490a8 <_Thread_Set_state>
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
46a0c: 2079 0006 011c moveal 6011c <_Per_CPU_Information+0xc>,%a0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
46a12: 203c 0004 8540 movel #296256,%d0 46a18: 2140 0064 movel %d0,%a0@(100)
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
_Thread_Yield_processor();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
_Watchdog_Initialize(
46a1c: 2028 0008 movel %a0@(8),%d0
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46a20: 2142 0054 movel %d2,%a0@(84)
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
46a24: 2140 0068 movel %d0,%a0@(104)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46a28: 42a8 0050 clrl %a0@(80)
the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data;
46a2c: 42a8 006c clrl %a0@(108)
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46a30: 4868 0048 pea %a0@(72) 46a34: 4879 0005 fd4e pea 5fd4e <_Watchdog_Ticks_chain> 46a3a: 4eb9 0004 98ec jsr 498ec <_Watchdog_Insert> 46a40: 4fef 0010 lea %sp@(16),%sp
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
}
_Thread_Enable_dispatch();
46a44: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL; }
46a4a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46a4e: 4280 clrl %d0 <== NOT EXECUTED 46a50: 4e5e unlk %fp <== NOT EXECUTED 46a52: 4e75 rts <== NOT EXECUTED
rtems_interval ticks
)
{
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
_Thread_Yield_processor();
46a54: 4eb9 0004 9514 jsr 49514 <_Thread_Yield_processor> <== NOT EXECUTED
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
}
_Thread_Enable_dispatch();
46a5a: 4eb9 0004 86e6 jsr 486e6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
46a60: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46a64: 4280 clrl %d0 <== NOT EXECUTED 46a66: 4e5e unlk %fp <== NOT EXECUTED
...
00047970 <rtems_task_wake_when>:
*/
rtems_status_code rtems_task_wake_when(
rtems_time_of_day *time_buffer
)
{
47970: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47974: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47976: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
4797a: 4a39 0006 1624 tstb 61624 <_TOD_Is_set> <== NOT EXECUTED 47980: 6700 00aa beqw 47a2c <rtems_task_wake_when+0xbc> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
47984: 4a8a tstl %a2 <== NOT EXECUTED 47986: 6700 00ae beqw 47a36 <rtems_task_wake_when+0xc6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
time_buffer->ticks = 0;
4798a: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
if ( !_TOD_Validate( time_buffer ) )
4798e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47990: 4eb9 0004 6c84 jsr 46c84 <_TOD_Validate> <== NOT EXECUTED 47996: 588f addql #4,%sp <== NOT EXECUTED 47998: 4a00 tstb %d0 <== NOT EXECUTED 4799a: 660a bnes 479a6 <rtems_task_wake_when+0x36> <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4799c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
479a0: 7014 moveq #20,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
479a2: 4e5e unlk %fp <== NOT EXECUTED 479a4: 4e75 rts <== NOT EXECUTED
time_buffer->ticks = 0;
if ( !_TOD_Validate( time_buffer ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
479a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 479a8: 4eb9 0004 6b7c jsr 46b7c <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
479ae: 588f addql #4,%sp <== NOT EXECUTED 479b0: b0b9 0006 169e cmpl 6169e <_TOD_Now>,%d0 <== NOT EXECUTED 479b6: 63e4 blss 4799c <rtems_task_wake_when+0x2c> <== NOT EXECUTED 479b8: 2239 0006 1614 movel 61614 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 479be: 5281 addql #1,%d1 <== NOT EXECUTED 479c0: 23c1 0006 1614 movel %d1,61614 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
479c6: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 479ca: 2f39 0006 1aa4 movel 61aa4 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 479d0: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 479d4: 4eb9 0004 a094 jsr 4a094 <_Thread_Set_state> <== NOT EXECUTED
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_seconds(
479da: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 479de: 90b9 0006 169e subl 6169e <_TOD_Now>,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
479e4: 2079 0006 1aa4 moveal 61aa4 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Watchdog_Insert_seconds(
479ea: 2140 0054 movel %d0,%a0@(84) <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
479ee: 203c 0004 952c movel #300332,%d0 <== NOT EXECUTED 479f4: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
_Watchdog_Initialize(
479f8: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
479fc: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id;
47a00: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
47a04: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
47a08: 4868 0048 pea %a0@(72) <== NOT EXECUTED 47a0c: 4879 0006 16ca pea 616ca <_Watchdog_Seconds_chain> <== NOT EXECUTED 47a12: 4eb9 0004 a96c jsr 4a96c <_Watchdog_Insert> <== NOT EXECUTED
);
_Watchdog_Insert_seconds(
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
47a18: 4eb9 0004 96d2 jsr 496d2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
47a1e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Watchdog_Insert_seconds(
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47a22: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47a26: 4280 clrl %d0 <== NOT EXECUTED
}
47a28: 4e5e unlk %fp <== NOT EXECUTED 47a2a: 4e75 rts <== NOT EXECUTED 47a2c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
)
{
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
47a30: 700b moveq #11,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47a32: 4e5e unlk %fp <== NOT EXECUTED 47a34: 4e75 rts <== NOT EXECUTED 47a36: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
47a3a: 7009 moveq #9,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47a3c: 4e5e unlk %fp <== NOT EXECUTED
000457c0 <rtems_termios_baud_to_index>:
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
457c0: 7209 moveq #9,%d1 <== NOT EXECUTED
#include <rtems/termiostypes.h>
int rtems_termios_baud_to_index(
rtems_termios_baud_t termios_baud
)
{
457c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 457c6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
int baud_index;
switch (termios_baud) {
457ca: b280 cmpl %d0,%d1 <== NOT EXECUTED 457cc: 6700 010a beqw 458d8 <rtems_termios_baud_to_index+0x118><== NOT EXECUTED 457d0: 6c32 bges 45804 <rtems_termios_baud_to_index+0x44><== NOT EXECUTED 457d2: 720e moveq #14,%d1 <== NOT EXECUTED 457d4: b280 cmpl %d0,%d1 <== NOT EXECUTED 457d6: 6700 00d6 beqw 458ae <rtems_termios_baud_to_index+0xee><== NOT EXECUTED 457da: 6c56 bges 45832 <rtems_termios_baud_to_index+0x72><== NOT EXECUTED 457dc: 0c80 0000 1002 cmpil #4098,%d0 <== NOT EXECUTED 457e2: 6700 00e2 beqw 458c6 <rtems_termios_baud_to_index+0x106><== NOT EXECUTED 457e6: 6f00 0098 blew 45880 <rtems_termios_baud_to_index+0xc0><== NOT EXECUTED 457ea: 0c80 0000 1003 cmpil #4099,%d0 <== NOT EXECUTED 457f0: 6700 00b6 beqw 458a8 <rtems_termios_baud_to_index+0xe8><== NOT EXECUTED 457f4: 0c80 0000 1004 cmpil #4100,%d0 <== NOT EXECUTED 457fa: 6700 009a beqw 45896 <rtems_termios_baud_to_index+0xd6><== NOT EXECUTED
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;
457fe: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return baud_index;
}
45800: 4e5e unlk %fp <== NOT EXECUTED 45802: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45804: 123c 0004 moveb #4,%d1 <== NOT EXECUTED 45808: b280 cmpl %d0,%d1 <== NOT EXECUTED 4580a: 6700 00d2 beqw 458de <rtems_termios_baud_to_index+0x11e><== NOT EXECUTED 4580e: 6d46 blts 45856 <rtems_termios_baud_to_index+0x96><== NOT EXECUTED 45810: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 45814: b280 cmpl %d0,%d1 <== NOT EXECUTED 45816: 6700 00a2 beqw 458ba <rtems_termios_baud_to_index+0xfa><== NOT EXECUTED 4581a: 6c00 00c8 bgew 458e4 <rtems_termios_baud_to_index+0x124><== NOT EXECUTED 4581e: 7202 moveq #2,%d1 <== NOT EXECUTED 45820: b280 cmpl %d0,%d1 <== NOT EXECUTED 45822: 677e beqs 458a2 <rtems_termios_baud_to_index+0xe2><== NOT EXECUTED 45824: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 45828: b280 cmpl %d0,%d1 <== NOT EXECUTED 4582a: 66d2 bnes 457fe <rtems_termios_baud_to_index+0x3e><== NOT EXECUTED
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
case B75: baud_index = 2; break;
case B110: baud_index = 3; break;
4582c: 7003 moveq #3,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
4582e: 4e5e unlk %fp <== NOT EXECUTED 45830: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45832: 123c 000b moveb #11,%d1 <== NOT EXECUTED 45836: b280 cmpl %d0,%d1 <== NOT EXECUTED 45838: 6700 0086 beqw 458c0 <rtems_termios_baud_to_index+0x100><== NOT EXECUTED 4583c: 6e3c bgts 4587a <rtems_termios_baud_to_index+0xba><== NOT EXECUTED 4583e: 123c 000c moveb #12,%d1 <== NOT EXECUTED 45842: b280 cmpl %d0,%d1 <== NOT EXECUTED 45844: 6700 008c beqw 458d2 <rtems_termios_baud_to_index+0x112><== NOT EXECUTED 45848: 123c 000d moveb #13,%d1 <== NOT EXECUTED 4584c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4584e: 66ae bnes 457fe <rtems_termios_baud_to_index+0x3e><== NOT EXECUTED
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;
45850: 700d moveq #13,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45852: 4e5e unlk %fp <== NOT EXECUTED 45854: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45856: 7206 moveq #6,%d1 <== NOT EXECUTED 45858: b280 cmpl %d0,%d1 <== NOT EXECUTED 4585a: 6758 beqs 458b4 <rtems_termios_baud_to_index+0xf4><== NOT EXECUTED 4585c: 6e16 bgts 45874 <rtems_termios_baud_to_index+0xb4><== NOT EXECUTED 4585e: 123c 0007 moveb #7,%d1 <== NOT EXECUTED 45862: b280 cmpl %d0,%d1 <== NOT EXECUTED 45864: 6766 beqs 458cc <rtems_termios_baud_to_index+0x10c><== NOT EXECUTED 45866: 123c 0008 moveb #8,%d1 <== NOT EXECUTED 4586a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4586c: 6690 bnes 457fe <rtems_termios_baud_to_index+0x3e><== NOT EXECUTED
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;
4586e: 7008 moveq #8,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45870: 4e5e unlk %fp <== NOT EXECUTED 45872: 4e75 rts <== NOT EXECUTED
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;
45874: 7005 moveq #5,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45876: 4e5e unlk %fp <== NOT EXECUTED 45878: 4e75 rts <== NOT EXECUTED
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;
4587a: 700a moveq #10,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
4587c: 4e5e unlk %fp <== NOT EXECUTED 4587e: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45880: 720f moveq #15,%d1 <== NOT EXECUTED 45882: b280 cmpl %d0,%d1 <== NOT EXECUTED 45884: 6716 beqs 4589c <rtems_termios_baud_to_index+0xdc><== NOT EXECUTED 45886: 0c80 0000 1001 cmpil #4097,%d0 <== NOT EXECUTED 4588c: 6600 ff70 bnew 457fe <rtems_termios_baud_to_index+0x3e><== NOT EXECUTED
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;
45890: 7010 moveq #16,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45892: 4e5e unlk %fp <== NOT EXECUTED 45894: 4e75 rts <== NOT EXECUTED
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;
45896: 7013 moveq #19,%d0 <== NOT EXECUTED
default: baud_index = -1; break;
}
return baud_index;
}
45898: 4e5e unlk %fp <== NOT EXECUTED 4589a: 4e75 rts <== NOT EXECUTED
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;
4589c: 700f moveq #15,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
4589e: 4e5e unlk %fp <== NOT EXECUTED 458a0: 4e75 rts <== NOT EXECUTED
int baud_index;
switch (termios_baud) {
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
case B75: baud_index = 2; break;
458a2: 7002 moveq #2,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458a4: 4e5e unlk %fp <== NOT EXECUTED 458a6: 4e75 rts <== NOT EXECUTED
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;
458a8: 7012 moveq #18,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458aa: 4e5e unlk %fp <== NOT EXECUTED 458ac: 4e75 rts <== NOT EXECUTED
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;
458ae: 700e moveq #14,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458b0: 4e5e unlk %fp <== NOT EXECUTED 458b2: 4e75 rts <== NOT EXECUTED
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;
458b4: 7006 moveq #6,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458b6: 4e5e unlk %fp <== NOT EXECUTED 458b8: 4e75 rts <== NOT EXECUTED
{
int baud_index;
switch (termios_baud) {
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
458ba: 7001 moveq #1,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458bc: 4e5e unlk %fp <== NOT EXECUTED 458be: 4e75 rts <== NOT EXECUTED
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;
458c0: 700b moveq #11,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458c2: 4e5e unlk %fp <== NOT EXECUTED 458c4: 4e75 rts <== NOT EXECUTED
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;
458c6: 7011 moveq #17,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458c8: 4e5e unlk %fp <== NOT EXECUTED 458ca: 4e75 rts <== NOT EXECUTED
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;
458cc: 7007 moveq #7,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458ce: 4e5e unlk %fp <== NOT EXECUTED 458d0: 4e75 rts <== NOT EXECUTED
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;
458d2: 700c moveq #12,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458d4: 4e5e unlk %fp <== NOT EXECUTED 458d6: 4e75 rts <== NOT EXECUTED
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;
458d8: 7009 moveq #9,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458da: 4e5e unlk %fp <== NOT EXECUTED 458dc: 4e75 rts <== NOT EXECUTED
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;
458de: 7004 moveq #4,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458e0: 4e5e unlk %fp <== NOT EXECUTED 458e2: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
458e4: 4a80 tstl %d0 <== NOT EXECUTED 458e6: 6600 ff16 bnew 457fe <rtems_termios_baud_to_index+0x3e><== NOT EXECUTED
case B0: baud_index = 0; break;
458ea: 4280 clrl %d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458ec: 4e5e unlk %fp <== NOT EXECUTED
00043c5c <rtems_termios_baud_to_number>:
extern rtems_assoc_t termios_assoc_table[];
int32_t rtems_termios_baud_to_number(
int termios_baud
)
{
43c5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43c60: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43c62: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int baud;
baud = rtems_assoc_local_by_remote( termios_assoc_table, termios_baud );
43c66: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43c68: 4879 0005 e43c pea 5e43c <termios_assoc_table> <== NOT EXECUTED 43c6e: 4eb9 0004 add4 jsr 4add4 <rtems_assoc_local_by_remote> <== NOT EXECUTED
if ( baud == 0 && termios_baud != 0 )
43c74: 508f addql #8,%sp <== NOT EXECUTED 43c76: 4a80 tstl %d0 <== NOT EXECUTED 43c78: 6708 beqs 43c82 <rtems_termios_baud_to_number+0x26><== NOT EXECUTED
return -1;
return baud;
}
43c7a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43c7e: 4e5e unlk %fp <== NOT EXECUTED 43c80: 4e75 rts <== NOT EXECUTED
)
{
int baud;
baud = rtems_assoc_local_by_remote( termios_assoc_table, termios_baud );
if ( baud == 0 && termios_baud != 0 )
43c82: 4a82 tstl %d2 <== NOT EXECUTED 43c84: 67f4 beqs 43c7a <rtems_termios_baud_to_number+0x1e><== NOT EXECUTED
return -1;
return baud;
}
43c86: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
{
int baud;
baud = rtems_assoc_local_by_remote( termios_assoc_table, termios_baud );
if ( baud == 0 && termios_baud != 0 )
return -1;
43c8a: 70ff moveq #-1,%d0 <== NOT EXECUTED
return baud;
}
43c8c: 4e5e unlk %fp <== NOT EXECUTED
0004432c <rtems_termios_bufsize>:
{
rtems_termios_cbufsize = cbufsize;
rtems_termios_raw_input_size = raw_input;
rtems_termios_raw_output_size = raw_output;
return RTEMS_SUCCESSFUL;
}
4432c: 4280 clrl %d0 <== NOT EXECUTED
rtems_status_code rtems_termios_bufsize (
int cbufsize,
int raw_input,
int raw_output
)
{
4432e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_termios_cbufsize = cbufsize;
44332: 41ee 0008 lea %fp@(8),%a0 <== NOT EXECUTED 44336: 23d0 0005 e53c movel %a0@,5e53c <rtems_termios_cbufsize> <== NOT EXECUTED
rtems_termios_raw_input_size = raw_input;
4433c: 41ee 000c lea %fp@(12),%a0 <== NOT EXECUTED 44340: 23d0 0005 e540 movel %a0@,5e540 <rtems_termios_raw_input_size><== NOT EXECUTED
rtems_termios_raw_output_size = raw_output;
44346: 41ee 0010 lea %fp@(16),%a0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
4434a: 4e5e unlk %fp <== NOT EXECUTED
int raw_output
)
{
rtems_termios_cbufsize = cbufsize;
rtems_termios_raw_input_size = raw_input;
rtems_termios_raw_output_size = raw_output;
4434c: 23d0 0005 e544 movel %a0@,5e544 <rtems_termios_raw_output_size><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
00044182 <rtems_termios_close>:
}
}
rtems_status_code
rtems_termios_close (void *arg)
{
44182: 4e56 fff4 linkw %fp,#-12 44186: 48d7 1c00 moveml %a2-%a4,%sp@ 4418a: 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(
4418e: 49f9 0004 6478 lea 46478 <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;
44194: 2053 moveal %a3@,%a0 44196: 2468 0034 moveal %a0@(52),%a2
rtems_status_code sc;
sc = rtems_semaphore_obtain(
4419a: 42a7 clrl %sp@- 4419c: 42a7 clrl %sp@- 4419e: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@- 441a4: 4e94 jsr %a4@
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
441a6: 4fef 000c lea %sp@(12),%sp 441aa: 4a80 tstl %d0 441ac: 6600 011c bnew 442ca <rtems_termios_close+0x148>
rtems_fatal_error_occurred (sc);
if (--tty->refcount == 0) {
441b0: 202a 0008 movel %a2@(8),%d0 441b4: 5380 subql #1,%d0 441b6: 2540 0008 movel %d0,%a2@(8) 441ba: 6600 00a4 bnew 44260 <rtems_termios_close+0xde>
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
441be: 202a 00cc movel %a2@(204),%d0 441c2: eb88 lsll #5,%d0 441c4: 0680 0005 f340 addil #389952,%d0 441ca: 2240 moveal %d0,%a1 441cc: 2051 moveal %a1@,%a0 441ce: 4a88 tstl %a0 441d0: 6700 0128 beqw 442fa <rtems_termios_close+0x178>
/*
* call discipline-specific close
*/
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
441d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 441d6: 4e90 jsr %a0@ <== NOT EXECUTED 441d8: 588f addql #4,%sp <== NOT EXECUTED
}
drainOutput (tty);
rtems_semaphore_release (tty->osem);
}
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
441da: 7002 moveq #2,%d0 <== NOT EXECUTED 441dc: b0aa 00b4 cmpl %a2@(180),%d0 <== NOT EXECUTED 441e0: 6700 00c0 beqw 442a2 <rtems_termios_close+0x120> <== NOT EXECUTED
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)
441e4: 206a 009c moveal %a2@(156),%a0 441e8: 4a88 tstl %a0
441ea: 6710 beqs 441fc <rtems_termios_close+0x7a> <== NEVER TAKEN
(*tty->device.lastClose)(tty->major, tty->minor, arg);
441ec: 2f0b movel %a3,%sp@- 441ee: 2f2a 0010 movel %a2@(16),%sp@- 441f2: 2f2a 000c movel %a2@(12),%sp@- 441f6: 4e90 jsr %a0@ 441f8: 4fef 000c lea %sp@(12),%sp
if (tty->forw == NULL) {
441fc: 2052 moveal %a2@,%a0 441fe: 4a88 tstl %a0 44200: 6700 00e2 beqw 442e4 <rtems_termios_close+0x162>
rtems_termios_ttyTail = tty->back;
if ( rtems_termios_ttyTail != NULL ) {
rtems_termios_ttyTail->forw = NULL;
}
} else {
tty->forw->back = tty->back;
44204: 216a 0004 0004 movel %a2@(4),%a0@(4) <== NOT EXECUTED 4420a: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED
}
if (tty->back == NULL) {
4420e: 4a89 tstl %a1 <== NOT EXECUTED 44210: 6700 00c0 beqw 442d2 <rtems_termios_close+0x150> <== NOT EXECUTED
rtems_termios_ttyHead = tty->forw;
if ( rtems_termios_ttyHead != NULL ) {
rtems_termios_ttyHead->back = NULL;
}
} else {
tty->back->forw = tty->forw;
44214: 2288 movel %a0,%a1@ <== NOT EXECUTED
}
rtems_semaphore_delete (tty->isem);
44216: 2f2a 0014 movel %a2@(20),%sp@- 4421a: 47f9 0004 63a0 lea 463a0 <rtems_semaphore_delete>,%a3 44220: 4e93 jsr %a3@
rtems_semaphore_delete (tty->osem);
44222: 2f2a 0018 movel %a2@(24),%sp@- 44226: 4e93 jsr %a3@
rtems_semaphore_delete (tty->rawOutBuf.Semaphore);
44228: 2f2a 008c movel %a2@(140),%sp@- 4422c: 4e93 jsr %a3@
if ((tty->device.pollRead == NULL) ||
4422e: 4fef 000c lea %sp@(12),%sp 44232: 4aaa 00a0 tstl %a2@(160)
44236: 6740 beqs 44278 <rtems_termios_close+0xf6> <== ALWAYS TAKEN
44238: 7002 moveq #2,%d0 <== NOT EXECUTED 4423a: b0aa 00b4 cmpl %a2@(180),%d0 <== NOT EXECUTED 4423e: 6738 beqs 44278 <rtems_termios_close+0xf6> <== NOT EXECUTED
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))
rtems_semaphore_delete (tty->rawInBuf.Semaphore);
free (tty->rawInBuf.theBuf);
44240: 2f2a 0058 movel %a2@(88),%sp@- <== NOT EXECUTED 44244: 47f9 0004 2cfc lea 42cfc <free>,%a3 <== NOT EXECUTED 4424a: 4e93 jsr %a3@ <== NOT EXECUTED
free (tty->rawOutBuf.theBuf);
4424c: 2f2a 007c movel %a2@(124),%sp@- <== NOT EXECUTED 44250: 4e93 jsr %a3@ <== NOT EXECUTED
free (tty->cbuf);
44252: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED 44256: 4e93 jsr %a3@ <== NOT EXECUTED
free (tty);
44258: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4425a: 4e93 jsr %a3@ <== NOT EXECUTED 4425c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
} rtems_semaphore_release (rtems_termios_ttyMutex);
44260: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@- 44266: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
return RTEMS_SUCCESSFUL; }
4426c: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 44272: 4280 clrl %d0 44274: 4e5e unlk %fp 44276: 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);
44278: 2f2a 0068 movel %a2@(104),%sp@- 4427c: 4e93 jsr %a3@ 4427e: 588f addql #4,%sp
free (tty->rawInBuf.theBuf);
44280: 47f9 0004 2cfc lea 42cfc <free>,%a3 44286: 2f2a 0058 movel %a2@(88),%sp@- 4428a: 4e93 jsr %a3@
free (tty->rawOutBuf.theBuf);
4428c: 2f2a 007c movel %a2@(124),%sp@- 44290: 4e93 jsr %a3@
free (tty->cbuf);
44292: 2f2a 001c movel %a2@(28),%sp@- 44296: 4e93 jsr %a3@
free (tty);
44298: 2f0a movel %a2,%sp@- 4429a: 4e93 jsr %a3@ 4429c: 4fef 0010 lea %sp@(16),%sp 442a0: 60be bras 44260 <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 );
442a2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 442a6: 49f9 0004 5f68 lea 45f68 <rtems_event_send>,%a4 <== NOT EXECUTED 442ac: 2f2a 00c4 movel %a2@(196),%sp@- <== NOT EXECUTED 442b0: 4e94 jsr %a4@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
442b2: 508f addql #8,%sp <== NOT EXECUTED 442b4: 4a80 tstl %d0 <== NOT EXECUTED 442b6: 6612 bnes 442ca <rtems_termios_close+0x148> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
442b8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 442bc: 2f2a 00c8 movel %a2@(200),%sp@- <== NOT EXECUTED 442c0: 4e94 jsr %a4@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
442c2: 508f addql #8,%sp <== NOT EXECUTED 442c4: 4a80 tstl %d0 <== NOT EXECUTED 442c6: 6700 ff1c beqw 441e4 <rtems_termios_close+0x62> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
442ca: 2f00 movel %d0,%sp@- <== NOT EXECUTED 442cc: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred> <== NOT EXECUTED
} else {
tty->forw->back = tty->back;
}
if (tty->back == NULL) {
rtems_termios_ttyHead = tty->forw;
442d2: 23c8 0005 fb80 movel %a0,5fb80 <rtems_termios_ttyHead>
if ( rtems_termios_ttyHead != NULL ) {
442d8: 6700 ff3c beqw 44216 <rtems_termios_close+0x94>
rtems_termios_ttyHead->back = NULL;
442dc: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED 442e0: 6000 ff34 braw 44216 <rtems_termios_close+0x94> <== NOT EXECUTED
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;
442e4: 226a 0004 moveal %a2@(4),%a1 442e8: 23c9 0005 fb7c movel %a1,5fb7c <rtems_termios_ttyTail>
if ( rtems_termios_ttyTail != NULL ) {
442ee: 67e2 beqs 442d2 <rtems_termios_close+0x150> <== ALWAYS TAKEN
rtems_termios_ttyTail->forw = NULL;
442f0: 4291 clrl %a1@ <== NOT EXECUTED 442f2: 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;
442f4: 2288 movel %a0,%a1@ <== NOT EXECUTED 442f6: 6000 ff1e braw 44216 <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);
442fa: 42a7 clrl %sp@- 442fc: 42a7 clrl %sp@- 442fe: 2f2a 0018 movel %a2@(24),%sp@- 44302: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL) {
44304: 4fef 000c lea %sp@(12),%sp 44308: 4a80 tstl %d0
4430a: 66be bnes 442ca <rtems_termios_close+0x148> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
}
drainOutput (tty);
4430c: 2f0a movel %a2,%sp@- 4430e: 4eba f9bc jsr %pc@(43ccc <drainOutput>)
rtems_semaphore_release (tty->osem);
44312: 2f2a 0018 movel %a2@(24),%sp@- 44316: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> 4431c: 508f addql #8,%sp
}
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
4431e: 7002 moveq #2,%d0 44320: b0aa 00b4 cmpl %a2@(180),%d0 44324: 6600 febe bnew 441e4 <rtems_termios_close+0x62>
44328: 6000 ff78 braw 442a2 <rtems_termios_close+0x120> <== NOT EXECUTED
0004595a <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)
{
4595a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code sc;
/*
* sum up character count already sent
*/
tty->t_dqlen += len;
4595e: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
* for each transmitted character.
* It returns number of characters left to transmit
*/
int
rtems_termios_dequeue_characters (void *ttyp, int len)
{
45962: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_status_code sc;
/*
* sum up character count already sent
*/
tty->t_dqlen += len;
45966: d1a8 0090 addl %d0,%a0@(144) <== NOT EXECUTED
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
4596a: 7002 moveq #2,%d0 <== NOT EXECUTED 4596c: b0a8 00b4 cmpl %a0@(180),%d0 <== NOT EXECUTED 45970: 672a beqs 4599c <rtems_termios_dequeue_characters+0x42><== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
return 0; /* nothing to output in IRQ... */
}
if (tty->t_line == PPPDISC ) {
45972: 7005 moveq #5,%d0 <== NOT EXECUTED 45974: b0a8 00cc cmpl %a0@(204),%d0 <== NOT EXECUTED 45978: 670c beqs 45986 <rtems_termios_dequeue_characters+0x2c><== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_start(tty);
}
return 0; /* nothing to output in IRQ... */
}
return rtems_termios_refill_transmitter(tty);
4597a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4597e: 4e5e unlk %fp <== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_start(tty);
}
return 0; /* nothing to output in IRQ... */
}
return rtems_termios_refill_transmitter(tty);
45980: 4ef9 0004 56a6 jmp 456a6 <rtems_termios_refill_transmitter><== NOT EXECUTED
if (tty->t_line == PPPDISC ) {
/*
* call any line discipline start function
*/
if (rtems_termios_linesw[tty->t_line].l_start != NULL) {
45986: 2279 0005 f3f0 moveal 5f3f0 <rtems_termios_linesw+0xb4>,%a1<== NOT EXECUTED 4598c: 4a89 tstl %a1 <== NOT EXECUTED 4598e: 6706 beqs 45996 <rtems_termios_dequeue_characters+0x3c><== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_start(tty);
45990: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45992: 4e91 jsr %a1@ <== NOT EXECUTED 45994: 588f addql #4,%sp <== NOT EXECUTED
}
return 0; /* nothing to output in IRQ... */
}
return rtems_termios_refill_transmitter(tty);
}
45996: 4280 clrl %d0 <== NOT EXECUTED 45998: 4e5e unlk %fp <== NOT EXECUTED 4599a: 4e75 rts <== NOT EXECUTED
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
/*
* send wake up to transmitter task
*/
sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);
4599c: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 459a0: 2f28 00c8 movel %a0@(200),%sp@- <== NOT EXECUTED 459a4: 4eb9 0004 5f68 jsr 45f68 <rtems_event_send> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
459aa: 508f addql #8,%sp <== NOT EXECUTED 459ac: 4a80 tstl %d0 <== NOT EXECUTED 459ae: 67e6 beqs 45996 <rtems_termios_dequeue_characters+0x3c><== NOT EXECUTED
rtems_fatal_error_occurred (sc);
459b0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 459b2: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred> <== NOT EXECUTED
00045358 <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, char *buf, int len)
{
45358: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 4535c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 45360: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
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) {
45364: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED 45368: eb88 lsll #5,%d0 <== NOT EXECUTED
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len)
{
4536a: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
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) {
4536e: 0680 0005 f34c addil #389964,%d0 <== NOT EXECUTED 45374: 2240 moveal %d0,%a1 <== NOT EXECUTED
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len)
{
45376: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
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) {
4537a: 2051 moveal %a1@,%a0 <== NOT EXECUTED 4537c: 4a88 tstl %a0 <== NOT EXECUTED 4537e: 6774 beqs 453f4 <rtems_termios_enqueue_raw_characters+0x9c><== NOT EXECUTED
while (len--) {
45380: 4a82 tstl %d2 <== NOT EXECUTED 45382: 6734 beqs 453b8 <rtems_termios_enqueue_raw_characters+0x60><== NOT EXECUTED
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
45384: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45386: 5382 subql #1,%d2 <== NOT EXECUTED 45388: 121b moveb %a3@+,%d1 <== NOT EXECUTED 4538a: 49c1 extbl %d1 <== NOT EXECUTED 4538c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4538e: 4e90 jsr %a0@ <== NOT EXECUTED
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--) {
45390: 508f addql #8,%sp <== NOT EXECUTED 45392: 4a82 tstl %d2 <== NOT EXECUTED 45394: 6722 beqs 453b8 <rtems_termios_enqueue_raw_characters+0x60><== NOT EXECUTED 45396: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
4539a: 5382 subql #1,%d2 <== NOT EXECUTED
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--) {
4539c: eb88 lsll #5,%d0 <== NOT EXECUTED 4539e: 0680 0005 f34c addil #389964,%d0 <== NOT EXECUTED 453a4: 2240 moveal %d0,%a1 <== NOT EXECUTED 453a6: 2051 moveal %a1@,%a0 <== NOT EXECUTED
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
453a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 453aa: 121b moveb %a3@+,%d1 <== NOT EXECUTED 453ac: 49c1 extbl %d1 <== NOT EXECUTED 453ae: 2f01 movel %d1,%sp@- <== NOT EXECUTED 453b0: 4e90 jsr %a0@ <== NOT EXECUTED
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--) {
453b2: 508f addql #8,%sp <== NOT EXECUTED 453b4: 4a82 tstl %d2 <== NOT EXECUTED 453b6: 66de bnes 45396 <rtems_termios_enqueue_raw_characters+0x3e><== NOT EXECUTED
}
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
453b8: 4aaa 00e4 tstl %a2@(228) <== NOT EXECUTED 453bc: 6628 bnes 453e6 <rtems_termios_enqueue_raw_characters+0x8e><== NOT EXECUTED 453be: 206a 00dc moveal %a2@(220),%a0 <== NOT EXECUTED 453c2: 4a88 tstl %a0 <== NOT EXECUTED 453c4: 6720 beqs 453e6 <rtems_termios_enqueue_raw_characters+0x8e><== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
453c6: 2f2a 00e0 movel %a2@(224),%sp@- <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
}
return 0;
453ca: 4285 clrl %d5 <== 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);
453cc: 486a 0030 pea %a2@(48) <== NOT EXECUTED 453d0: 4e90 jsr %a0@ <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
453d2: 508f addql #8,%sp <== NOT EXECUTED 453d4: 7001 moveq #1,%d0 <== NOT EXECUTED 453d6: 2540 00e4 movel %d0,%a2@(228) <== NOT EXECUTED
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
return dropped;
}
453da: 2005 movel %d5,%d0 <== NOT EXECUTED 453dc: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 453e2: 4e5e unlk %fp <== NOT EXECUTED 453e4: 4e75 rts <== NOT EXECUTED
*/
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;
453e6: 4285 clrl %d5 <== NOT EXECUTED
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
return dropped;
}
453e8: 2005 movel %d5,%d0 <== NOT EXECUTED 453ea: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 453f0: 4e5e unlk %fp <== NOT EXECUTED 453f2: 4e75 rts <== NOT EXECUTED
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;
(*tty->device.write)(tty->minor,
453f4: 41ea 004a lea %a2@(74),%a0 <== NOT EXECUTED
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) {
453f8: 4285 clrl %d5 <== NOT EXECUTED
}
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);
453fa: 387c 0700 moveaw #1792,%a4 <== 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);
453fe: 4bea 0030 lea %a2@(48),%a5 <== NOT EXECUTED
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) {
45402: 4200 clrb %d0 <== NOT EXECUTED
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;
(*tty->device.write)(tty->minor,
45404: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
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) {
45408: 1d40 fff7 moveb %d0,%fp@(-9) <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
}
return 0;
}
while (len--) {
4540c: 4a82 tstl %d2 <== NOT EXECUTED 4540e: 6700 00e6 beqw 454f6 <rtems_termios_enqueue_raw_characters+0x19e><== NOT EXECUTED
c = *buf++;
/* FIXME: implement IXANY: any character restarts output */
/* if incoming XON/XOFF controls outgoing stream: */
if (tty->flow_ctrl & FL_MDXON) {
45412: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
}
return 0;
}
while (len--) {
c = *buf++;
45416: 181b moveb %a3@+,%d4 <== NOT EXECUTED
/* FIXME: implement IXANY: any character restarts output */
/* if incoming XON/XOFF controls outgoing stream: */
if (tty->flow_ctrl & FL_MDXON) {
45418: 0800 0009 btst #9,%d0 <== NOT EXECUTED 4541c: 671c beqs 4543a <rtems_termios_enqueue_raw_characters+0xe2><== NOT EXECUTED
/* if received char is V_STOP and V_START (both are equal value) */
if (c == tty->termios.c_cc[VSTOP]) {
4541e: 4281 clrl %d1 <== NOT EXECUTED 45420: 122a 004a moveb %a2@(74),%d1 <== NOT EXECUTED 45424: 1004 moveb %d4,%d0 <== NOT EXECUTED 45426: 49c0 extbl %d0 <== NOT EXECUTED 45428: b280 cmpl %d0,%d1 <== NOT EXECUTED 4542a: 6700 0146 beqw 45572 <rtems_termios_enqueue_raw_characters+0x21a><== NOT EXECUTED
/* stop output */
tty->flow_ctrl |= FL_ORCVXOF;
}
flow_rcv = true;
}
else if (c == tty->termios.c_cc[VSTART]) {
4542e: 4281 clrl %d1 <== NOT EXECUTED 45430: 122a 0049 moveb %a2@(73),%d1 <== NOT EXECUTED 45434: b280 cmpl %d0,%d1 <== NOT EXECUTED 45436: 6700 00da beqw 45512 <rtems_termios_enqueue_raw_characters+0x1ba><== NOT EXECUTED
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
flow_rcv = true;
}
}
if (flow_rcv) {
4543a: 4a2e fff7 tstb %fp@(-9) <== NOT EXECUTED 4543e: 6600 00e4 bnew 45524 <rtems_termios_enqueue_raw_characters+0x1cc><== NOT EXECUTED
}
/* reenable interrupts */
rtems_interrupt_enable(level);
}
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
45442: 2e2a 0060 movel %a2@(96),%d7 <== NOT EXECUTED 45446: 5287 addql #1,%d7 <== NOT EXECUTED
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
45448: 200c movel %a4,%d0 <== NOT EXECUTED
}
/* reenable interrupts */
rtems_interrupt_enable(level);
}
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
4544a: 222a 0064 movel %a2@(100),%d1 <== NOT EXECUTED 4544e: 4c41 7003 remul %d1,%d3,%d7 <== NOT EXECUTED
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
45452: 40c7 movew %sr,%d7 <== NOT EXECUTED 45454: 8087 orl %d7,%d0 <== NOT EXECUTED 45456: 46c0 movew %d0,%sr <== NOT EXECUTED
if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)
45458: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED 4545c: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED 45460: 9081 subl %d1,%d0 <== NOT EXECUTED 45462: 2240 moveal %d0,%a1 <== NOT EXECUTED 45464: d3c3 addal %d3,%a1 <== NOT EXECUTED
% tty->rawInBuf.Size) > tty->highwater) &&
45466: 2209 movel %a1,%d1 <== NOT EXECUTED 45468: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED 4546c: 4c40 1006 remul %d0,%d6,%d1 <== NOT EXECUTED 45470: 2d40 fff8 movel %d0,%fp@(-8) <== 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)
45474: bcaa 00c0 cmpl %a2@(192),%d6 <== NOT EXECUTED 45478: 633e blss 454b8 <rtems_termios_enqueue_raw_characters+0x160><== NOT EXECUTED
% tty->rawInBuf.Size) > tty->highwater) &&
!(tty->flow_ctrl & FL_IREQXOF)) {
4547a: 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) &&
4547e: 0800 0000 btst #0,%d0 <== NOT EXECUTED 45482: 6634 bnes 454b8 <rtems_termios_enqueue_raw_characters+0x160><== NOT EXECUTED
!(tty->flow_ctrl & FL_IREQXOF)) {
/* incoming data stream should be stopped */
tty->flow_ctrl |= FL_IREQXOF;
45484: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45488: 7201 moveq #1,%d1 <== NOT EXECUTED 4548a: 8081 orl %d1,%d0 <== NOT EXECUTED 4548c: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
45490: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45494: 0280 0000 0402 andil #1026,%d0 <== NOT EXECUTED 4549a: 0c80 0000 0400 cmpil #1024,%d0 <== NOT EXECUTED 454a0: 6700 010c beqw 455ae <rtems_termios_enqueue_raw_characters+0x256><== 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) ) {
454a4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 454a8: 0280 0000 0104 andil #260,%d0 <== NOT EXECUTED 454ae: 0c80 0000 0100 cmpil #256,%d0 <== NOT EXECUTED 454b4: 6700 0130 beqw 455e6 <rtems_termios_enqueue_raw_characters+0x28e><== NOT EXECUTED
}
}
}
/* reenable interrupts */
rtems_interrupt_enable(level);
454b8: 46c7 movew %d7,%sr <== NOT EXECUTED
if (newTail == tty->rawInBuf.Head) {
454ba: 202a 005c movel %a2@(92),%d0 <== NOT EXECUTED 454be: b680 cmpl %d0,%d3 <== NOT EXECUTED 454c0: 6700 00ce beqw 45590 <rtems_termios_enqueue_raw_characters+0x238><== NOT EXECUTED
dropped++;
} else {
tty->rawInBuf.theBuf[newTail] = c;
454c4: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED 454c8: 1184 3800 moveb %d4,%a0@(00000000,%d3:l) <== NOT EXECUTED
tty->rawInBuf.Tail = newTail;
454cc: 2543 0060 movel %d3,%a2@(96) <== NOT EXECUTED
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
454d0: 4aaa 00e4 tstl %a2@(228) <== NOT EXECUTED 454d4: 6618 bnes 454ee <rtems_termios_enqueue_raw_characters+0x196><== NOT EXECUTED 454d6: 206a 00dc moveal %a2@(220),%a0 <== NOT EXECUTED 454da: 4a88 tstl %a0 <== NOT EXECUTED 454dc: 6710 beqs 454ee <rtems_termios_enqueue_raw_characters+0x196><== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
454de: 2f2a 00e0 movel %a2@(224),%sp@- <== NOT EXECUTED 454e2: 2f0d movel %a5,%sp@- <== NOT EXECUTED 454e4: 4e90 jsr %a0@ <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
454e6: 508f addql #8,%sp <== NOT EXECUTED 454e8: 7201 moveq #1,%d1 <== NOT EXECUTED 454ea: 2541 00e4 movel %d1,%a2@(228) <== NOT EXECUTED 454ee: 5382 subql #1,%d2 <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
}
return 0;
}
while (len--) {
454f0: 4a82 tstl %d2 <== NOT EXECUTED 454f2: 6600 ff1e bnew 45412 <rtems_termios_enqueue_raw_characters+0xba><== NOT EXECUTED
}
}
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
454f6: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
}
}
}
}
tty->rawInBufDropped += dropped;
454fa: dbaa 0078 addl %d5,%a2@(120) <== NOT EXECUTED
rtems_semaphore_release (tty->rawInBuf.Semaphore);
454fe: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return dropped;
45504: 588f addql #4,%sp <== NOT EXECUTED
}
45506: 2005 movel %d5,%d0 <== NOT EXECUTED 45508: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4550e: 4e5e unlk %fp <== NOT EXECUTED 45510: 4e75 rts <== NOT EXECUTED
flow_rcv = true;
}
else if (c == tty->termios.c_cc[VSTART]) {
/* VSTART received */
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
45512: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45516: 72ef moveq #-17,%d1 <== NOT EXECUTED 45518: c081 andl %d1,%d0 <== NOT EXECUTED
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len)
{
4551a: 7c01 moveq #1,%d6 <== NOT EXECUTED
flow_rcv = true;
}
else if (c == tty->termios.c_cc[VSTART]) {
/* VSTART received */
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
4551c: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len)
{
45520: 1d46 fff7 moveb %d6,%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) {
45524: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45528: 7c30 moveq #48,%d6 <== NOT EXECUTED 4552a: 7220 moveq #32,%d1 <== NOT EXECUTED 4552c: c086 andl %d6,%d0 <== NOT EXECUTED 4552e: b280 cmpl %d0,%d1 <== NOT EXECUTED 45530: 66bc bnes 454ee <rtems_termios_enqueue_raw_characters+0x196><== NOT EXECUTED
/* disable interrupts */
rtems_interrupt_disable(level);
45532: 200c movel %a4,%d0 <== NOT EXECUTED 45534: 40c3 movew %sr,%d3 <== NOT EXECUTED 45536: 8083 orl %d3,%d0 <== NOT EXECUTED 45538: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
4553a: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 4553e: 7cdf moveq #-33,%d6 <== NOT EXECUTED 45540: c086 andl %d6,%d0 <== NOT EXECUTED 45542: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
45546: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED 4554a: 6606 bnes 45552 <rtems_termios_enqueue_raw_characters+0x1fa><== 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);
4554c: 46c3 movew %d3,%sr <== 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);
tty->tty_rcvwakeup = 1;
4554e: 5382 subql #1,%d2 <== NOT EXECUTED 45550: 609e bras 454f0 <rtems_termios_enqueue_raw_characters+0x198><== 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)(
45552: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
45556: 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)(
4555a: d0aa 007c addl %a2@(124),%d0 <== NOT EXECUTED 4555e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45560: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 45564: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED 45568: 4e90 jsr %a0@ <== NOT EXECUTED 4556a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
4556e: 46c3 movew %d3,%sr <== NOT EXECUTED 45570: 60dc bras 4554e <rtems_termios_enqueue_raw_characters+0x1f6><== 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]) {
45572: 4281 clrl %d1 <== NOT EXECUTED 45574: 122a 0049 moveb %a2@(73),%d1 <== NOT EXECUTED 45578: b280 cmpl %d0,%d1 <== NOT EXECUTED 4557a: 671c beqs 45598 <rtems_termios_enqueue_raw_characters+0x240><== NOT EXECUTED
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
}
else {
/* VSTOP received (other code than VSTART) */
/* stop output */
tty->flow_ctrl |= FL_ORCVXOF;
4557c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45580: 7c10 moveq #16,%d6 <== NOT EXECUTED 45582: 8086 orl %d6,%d0 <== NOT EXECUTED
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len)
{
45584: 7c01 moveq #1,%d6 <== NOT EXECUTED
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
}
else {
/* VSTOP received (other code than VSTART) */
/* stop output */
tty->flow_ctrl |= FL_ORCVXOF;
45586: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len)
{
4558a: 1d46 fff7 moveb %d6,%fp@(-9) <== NOT EXECUTED 4558e: 6094 bras 45524 <rtems_termios_enqueue_raw_characters+0x1cc><== NOT EXECUTED
/* reenable interrupts */
rtems_interrupt_enable(level);
if (newTail == tty->rawInBuf.Head) {
dropped++;
45590: 5285 addql #1,%d5 <== 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);
tty->tty_rcvwakeup = 1;
45592: 5382 subql #1,%d2 <== NOT EXECUTED 45594: 6000 ff5a braw 454f0 <rtems_termios_enqueue_raw_characters+0x198><== 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;
45598: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 4559c: 7210 moveq #16,%d1 <== NOT EXECUTED 4559e: b380 eorl %d1,%d0 <== NOT EXECUTED
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len)
{
455a0: 7c01 moveq #1,%d6 <== 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;
455a2: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
* device receive interrupt handler.
* Returns the number of characters dropped because of overflow.
*/
int
rtems_termios_enqueue_raw_characters (void *ttyp, char *buf, int len)
{
455a6: 1d46 fff7 moveb %d6,%fp@(-9) <== NOT EXECUTED 455aa: 6000 ff78 braw 45524 <rtems_termios_enqueue_raw_characters+0x1cc><== 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) ||
455ae: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 455b2: 0800 0005 btst #5,%d0 <== NOT EXECUTED 455b6: 6608 bnes 455c0 <rtems_termios_enqueue_raw_characters+0x268><== NOT EXECUTED 455b8: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED 455bc: 6600 fefa bnew 454b8 <rtems_termios_enqueue_raw_characters+0x160><== 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,
455c0: 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;
455c4: 7c02 moveq #2,%d6 <== NOT EXECUTED 455c6: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED
(*tty->device.write)(tty->minor,
455ca: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 455ce: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 455d2: 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;
455d6: 8286 orl %d6,%d1 <== NOT EXECUTED 455d8: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
(*tty->device.write)(tty->minor,
455dc: 4e90 jsr %a0@ <== NOT EXECUTED 455de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 455e2: 6000 fed4 braw 454b8 <rtems_termios_enqueue_raw_characters+0x160><== 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;
455e6: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED 455ea: 303c 0004 movew #4,%d0 <== NOT EXECUTED
/* deactivate RTS line */
if (tty->device.stopRemoteTx != NULL) {
455ee: 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;
455f2: 8280 orl %d0,%d1 <== NOT EXECUTED 455f4: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
/* deactivate RTS line */
if (tty->device.stopRemoteTx != NULL) {
455f8: 4a88 tstl %a0 <== NOT EXECUTED 455fa: 6700 febc beqw 454b8 <rtems_termios_enqueue_raw_characters+0x160><== NOT EXECUTED
tty->device.stopRemoteTx(tty->minor);
455fe: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 45602: 4e90 jsr %a0@ <== NOT EXECUTED 45604: 588f addql #4,%sp <== NOT EXECUTED 45606: 6000 feb0 braw 454b8 <rtems_termios_enqueue_raw_characters+0x160><== NOT EXECUTED
00044354 <rtems_termios_ioctl>:
}
}
rtems_status_code
rtems_termios_ioctl (void *arg)
{
44354: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 44358: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4435c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_libio_ioctl_args_t *args = arg; struct rtems_termios_tty *tty = args->iop->data1;
44360: 2053 moveal %a3@,%a0 <== NOT EXECUTED 44362: 2468 0034 moveal %a0@(52),%a2 <== NOT EXECUTED
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);
44366: 42a7 clrl %sp@- <== NOT EXECUTED
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;
44368: 286b 0008 moveal %a3@(8),%a4 <== NOT EXECUTED
rtems_status_code sc;
args->ioctl_return = 0;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4436c: 42a7 clrl %sp@- <== NOT EXECUTED 4436e: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
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;
44372: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
44376: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
4437c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
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);
44380: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
44382: 662c bnes 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
}
switch (args->command) {
44384: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED 44388: 7204 moveq #4,%d1 <== NOT EXECUTED 4438a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4438c: 6774 beqs 44402 <rtems_termios_ioctl+0xae> <== NOT EXECUTED 4438e: 6530 bcss 443c0 <rtems_termios_ioctl+0x6c> <== NOT EXECUTED 44390: 7602 moveq #2,%d3 <== NOT EXECUTED 44392: b680 cmpl %d0,%d3 <== NOT EXECUTED 44394: 6700 00b6 beqw 4444c <rtems_termios_ioctl+0xf8> <== NOT EXECUTED 44398: 6400 0228 bccw 445c2 <rtems_termios_ioctl+0x26e> <== NOT EXECUTED
if (tty->device.setAttributes)
(*tty->device.setAttributes)(tty->minor, &tty->termios);
break;
case RTEMS_IO_TCDRAIN:
drainOutput (tty);
4439c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4439e: 4eba f92c jsr %pc@(43ccc <drainOutput>) <== NOT EXECUTED
break;
443a2: 588f addql #4,%sp <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
443a4: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 443a8: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
443ae: 588f addql #4,%sp <== NOT EXECUTED
}
443b0: 2002 movel %d2,%d0 <== NOT EXECUTED
}
break;
}
rtems_semaphore_release (tty->osem);
args->ioctl_return = sc;
443b2: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
return sc; }
443b6: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 443bc: 4e5e unlk %fp <== NOT EXECUTED 443be: 4e75 rts <== NOT EXECUTED
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL) {
args->ioctl_return = sc;
return sc;
}
switch (args->command) {
443c0: 0c80 4004 667f cmpil #1074030207,%d0 <== NOT EXECUTED 443c6: 6756 beqs 4441e <rtems_termios_ioctl+0xca> <== NOT EXECUTED 443c8: 6200 023a bhiw 44604 <rtems_termios_ioctl+0x2b0> <== NOT EXECUTED 443cc: 7605 moveq #5,%d3 <== NOT EXECUTED 443ce: b680 cmpl %d0,%d3 <== NOT EXECUTED 443d0: 6700 01d2 beqw 445a4 <rtems_termios_ioctl+0x250> <== NOT EXECUTED
default:
if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {
443d4: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED 443d8: eb88 lsll #5,%d0 <== NOT EXECUTED 443da: 0680 0005 f354 addil #389972,%d0 <== NOT EXECUTED 443e0: 2240 moveal %d0,%a1 <== NOT EXECUTED 443e2: 2051 moveal %a1@,%a0 <== NOT EXECUTED 443e4: 4a88 tstl %a0 <== NOT EXECUTED 443e6: 6700 02a6 beqw 4468e <rtems_termios_ioctl+0x33a> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);
443ea: 2f0b movel %a3,%sp@- <== NOT EXECUTED 443ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 443ee: 4e90 jsr %a0@ <== NOT EXECUTED 443f0: 508f addql #8,%sp <== NOT EXECUTED 443f2: 2400 movel %d0,%d2 <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
443f4: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 443f8: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
443fe: 588f addql #4,%sp <== NOT EXECUTED 44400: 60ae bras 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
case RTEMS_IO_SNDWAKEUP:
tty->tty_snd = *wakeup;
break;
case RTEMS_IO_RCVWAKEUP:
tty->tty_rcv = *wakeup;
44402: 2014 movel %a4@,%d0 <== NOT EXECUTED 44404: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED 44408: 2540 00dc movel %d0,%a2@(220) <== NOT EXECUTED 4440c: 2541 00e0 movel %d1,%a2@(224) <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44410: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 44414: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
4441a: 588f addql #4,%sp <== NOT EXECUTED 4441c: 6092 bras 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
case TIOCGETD:
*(int*)(args->buffer)=tty->t_line;
break;
#endif
case FIONREAD: {
int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;
4441e: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED 44422: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED 44426: 9081 subl %d1,%d0 <== NOT EXECUTED
if ( rawnc < 0 )
44428: 6b00 02ae bmiw 446d8 <rtems_termios_ioctl+0x384> <== NOT EXECUTED
rawnc += tty->rawInBuf.Size;
/* Half guess that this is the right operation */
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
4442c: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED 44430: 92aa 0024 subl %a2@(36),%d1 <== NOT EXECUTED 44434: d280 addl %d0,%d1 <== NOT EXECUTED 44436: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED 4443a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
break;
}
rtems_semaphore_release (tty->osem);
4443c: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 44440: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
44446: 588f addql #4,%sp <== NOT EXECUTED 44448: 6000 ff66 braw 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
case RTEMS_IO_GET_ATTRIBUTES:
*(struct termios *)args->buffer = tty->termios;
break;
case RTEMS_IO_SET_ATTRIBUTES:
tty->termios = *(struct termios *)args->buffer;
4444c: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED 44450: 49ea 0030 lea %a2@(48),%a4 <== NOT EXECUTED 44454: 2898 movel %a0@+,%a4@ <== NOT EXECUTED 44456: 2558 0034 movel %a0@+,%a2@(52) <== NOT EXECUTED 4445a: 2558 0038 movel %a0@+,%a2@(56) <== NOT EXECUTED 4445e: 2558 003c movel %a0@+,%a2@(60) <== NOT EXECUTED 44462: 2558 0040 movel %a0@+,%a2@(64) <== NOT EXECUTED 44466: 2558 0044 movel %a0@+,%a2@(68) <== NOT EXECUTED 4446a: 2558 0048 movel %a0@+,%a2@(72) <== NOT EXECUTED 4446e: 2558 004c movel %a0@+,%a2@(76) <== NOT EXECUTED
/*
* check for flow control options to be switched off
*/
/* check for outgoing XON/XOFF flow control switched off */
if (( tty->flow_ctrl & FL_MDXON) &&
44472: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
case RTEMS_IO_GET_ATTRIBUTES:
*(struct termios *)args->buffer = tty->termios;
break;
case RTEMS_IO_SET_ATTRIBUTES:
tty->termios = *(struct termios *)args->buffer;
44476: 2550 0050 movel %a0@,%a2@(80) <== NOT EXECUTED
/*
* check for flow control options to be switched off
*/
/* check for outgoing XON/XOFF flow control switched off */
if (( tty->flow_ctrl & FL_MDXON) &&
4447a: 0800 0009 btst #9,%d0 <== NOT EXECUTED 4447e: 6746 beqs 444c6 <rtems_termios_ioctl+0x172> <== NOT EXECUTED
!(tty->termios.c_iflag & IXON)) {
44480: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED 44484: 0280 0000 0400 andil #1024,%d0 <== NOT EXECUTED
/*
* check for flow control options to be switched off
*/
/* check for outgoing XON/XOFF flow control switched off */
if (( tty->flow_ctrl & FL_MDXON) &&
4448a: 663a bnes 444c6 <rtems_termios_ioctl+0x172> <== NOT EXECUTED
!(tty->termios.c_iflag & IXON)) {
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);
4448c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 44490: 0280 ffff fdef andil #-529,%d0 <== NOT EXECUTED 44496: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* has output been stopped due to received XOFF? */
if (tty->flow_ctrl & FL_OSTOP) {
4449a: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 4449e: 0800 0005 btst #5,%d0 <== NOT EXECUTED 444a2: 6722 beqs 444c6 <rtems_termios_ioctl+0x172> <== NOT EXECUTED
/* disable interrupts */
rtems_interrupt_disable(level);
444a4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 444aa: 40c3 movew %sr,%d3 <== NOT EXECUTED 444ac: 8083 orl %d3,%d0 <== NOT EXECUTED 444ae: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
444b0: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 444b4: 72df moveq #-33,%d1 <== NOT EXECUTED 444b6: c081 andl %d1,%d0 <== NOT EXECUTED 444b8: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
444bc: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED 444c0: 6600 0240 bnew 44702 <rtems_termios_ioctl+0x3ae> <== 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);
444c4: 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)) {
444c6: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 444ca: 0800 000a btst #10,%d0 <== NOT EXECUTED 444ce: 6724 beqs 444f4 <rtems_termios_ioctl+0x1a0> <== NOT EXECUTED 444d0: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED 444d4: 0280 0000 1000 andil #4096,%d0 <== NOT EXECUTED 444da: 6618 bnes 444f4 <rtems_termios_ioctl+0x1a0> <== NOT EXECUTED
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXOF);
444dc: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
/* FIXME: what happens, if we had sent XOFF but not yet XON? */
tty->flow_ctrl &= ~(FL_ISNTXOF);
444e0: 76fd moveq #-3,%d3 <== NOT EXECUTED
}
}
/* 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);
444e2: 0880 000a bclr #10,%d0 <== NOT EXECUTED 444e6: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* FIXME: what happens, if we had sent XOFF but not yet XON? */
tty->flow_ctrl &= ~(FL_ISNTXOF);
444ea: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 444ee: c083 andl %d3,%d0 <== NOT EXECUTED 444f0: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
}
/* check for incoming RTS/CTS flow control switched off */
if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
444f4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 444f8: 0800 0008 btst #8,%d0 <== NOT EXECUTED 444fc: 6700 0186 beqw 44684 <rtems_termios_ioctl+0x330> <== NOT EXECUTED 44500: 222a 0038 movel %a2@(56),%d1 <== NOT EXECUTED 44504: 6d00 01ec bltw 446f2 <rtems_termios_ioctl+0x39e> <== NOT EXECUTED
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDRTS);
44508: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 4450c: 0880 0008 bclr #8,%d0 <== NOT EXECUTED 44510: 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)) {
44514: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 44518: 44c0 movew %d0,%ccr <== NOT EXECUTED 4451a: 6614 bnes 44530 <rtems_termios_ioctl+0x1dc> <== NOT EXECUTED 4451c: 206a 00b0 moveal %a2@(176),%a0 <== NOT EXECUTED 44520: 4a88 tstl %a0 <== NOT EXECUTED 44522: 670c beqs 44530 <rtems_termios_ioctl+0x1dc> <== NOT EXECUTED
tty->device.startRemoteTx(tty->minor);
44524: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 44528: 4e90 jsr %a0@ <== NOT EXECUTED 4452a: 222a 0038 movel %a2@(56),%d1 <== NOT EXECUTED 4452e: 588f addql #4,%sp <== NOT EXECUTED
}
tty->flow_ctrl &= ~(FL_IRTSOFF);
44530: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 44534: 76fb moveq #-5,%d3 <== NOT EXECUTED 44536: c083 andl %d3,%d0 <== NOT EXECUTED 44538: 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) {
4453c: 4a81 tstl %d1 <== NOT EXECUTED 4453e: 6d00 01b2 bltw 446f2 <rtems_termios_ioctl+0x39e> <== NOT EXECUTED
tty->flow_ctrl |= FL_MDRTS;
}
/* check for incoming XON/XOF flow control switched on */
if (tty->termios.c_iflag & IXOFF) {
44542: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED 44546: 0800 000c btst #12,%d0 <== NOT EXECUTED 4454a: 670c beqs 44558 <rtems_termios_ioctl+0x204> <== NOT EXECUTED
tty->flow_ctrl |= FL_MDXOF;
4454c: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED 44550: 08c1 000a bset #10,%d1 <== NOT EXECUTED 44554: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
}
/* check for outgoing XON/XOF flow control switched on */
if (tty->termios.c_iflag & IXON) {
44558: 0800 000a btst #10,%d0 <== NOT EXECUTED 4455c: 670c beqs 4456a <rtems_termios_ioctl+0x216> <== NOT EXECUTED
tty->flow_ctrl |= FL_MDXON;
4455e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 44562: 08c0 0009 bset #9,%d0 <== NOT EXECUTED 44566: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
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) {
4456a: 7002 moveq #2,%d0 <== NOT EXECUTED 4456c: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED 44570: 6700 012e beqw 446a0 <rtems_termios_ioctl+0x34c> <== NOT EXECUTED
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
else
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
} else {
if (tty->termios.c_cc[VMIN]) {
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
44574: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
44578: 42aa 0070 clrl %a2@(112) <== NOT EXECUTED
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
4457c: 42aa 0074 clrl %a2@(116) <== NOT EXECUTED
} else {
tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;
}
}
}
if (tty->device.setAttributes)
44580: 206a 00a8 moveal %a2@(168),%a0 <== NOT EXECUTED 44584: 4a88 tstl %a0 <== NOT EXECUTED 44586: 6700 fe1c beqw 443a4 <rtems_termios_ioctl+0x50> <== NOT EXECUTED
(*tty->device.setAttributes)(tty->minor, &tty->termios);
4458a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4458c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 44590: 4e90 jsr %a0@ <== NOT EXECUTED 44592: 508f addql #8,%sp <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44594: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 44598: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
4459e: 588f addql #4,%sp <== NOT EXECUTED 445a0: 6000 fe0e braw 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
case RTEMS_IO_TCDRAIN:
drainOutput (tty);
break;
case RTEMS_IO_SNDWAKEUP:
tty->tty_snd = *wakeup;
445a4: 2014 movel %a4@,%d0 <== NOT EXECUTED 445a6: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED 445aa: 2540 00d4 movel %d0,%a2@(212) <== NOT EXECUTED 445ae: 2541 00d8 movel %d1,%a2@(216) <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
445b2: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 445b6: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
445bc: 588f addql #4,%sp <== NOT EXECUTED 445be: 6000 fdf0 braw 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL) {
args->ioctl_return = sc;
return sc;
}
switch (args->command) {
445c2: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 445c6: b280 cmpl %d0,%d1 <== NOT EXECUTED 445c8: 6600 fe0a bnew 443d4 <rtems_termios_ioctl+0x80> <== NOT EXECUTED
sc = RTEMS_INVALID_NUMBER;
}
break;
case RTEMS_IO_GET_ATTRIBUTES:
*(struct termios *)args->buffer = tty->termios;
445cc: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED 445d0: 20ea 0030 movel %a2@(48),%a0@+ <== NOT EXECUTED 445d4: 20ea 0034 movel %a2@(52),%a0@+ <== NOT EXECUTED 445d8: 20ea 0038 movel %a2@(56),%a0@+ <== NOT EXECUTED 445dc: 20ea 003c movel %a2@(60),%a0@+ <== NOT EXECUTED 445e0: 20ea 0040 movel %a2@(64),%a0@+ <== NOT EXECUTED 445e4: 20ea 0044 movel %a2@(68),%a0@+ <== NOT EXECUTED 445e8: 20ea 0048 movel %a2@(72),%a0@+ <== NOT EXECUTED 445ec: 20ea 004c movel %a2@(76),%a0@+ <== NOT EXECUTED 445f0: 20aa 0050 movel %a2@(80),%a0@ <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
445f4: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 445f8: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
445fe: 588f addql #4,%sp <== NOT EXECUTED 44600: 6000 fdae braw 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL) {
args->ioctl_return = sc;
return sc;
}
switch (args->command) {
44604: 0c80 4004 741a cmpil #1074033690,%d0 <== NOT EXECUTED 4460a: 6760 beqs 4466c <rtems_termios_ioctl+0x318> <== NOT EXECUTED 4460c: 0c80 8004 741b cmpil #-2147191781,%d0 <== NOT EXECUTED 44612: 6600 fdc0 bnew 443d4 <rtems_termios_ioctl+0x80> <== NOT EXECUTED
#if 1 /* FIXME */
case TIOCSETD:
/*
* close old line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
44616: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED 4461a: eb88 lsll #5,%d0 <== NOT EXECUTED 4461c: 0680 0005 f340 addil #389952,%d0 <== NOT EXECUTED 44622: 2240 moveal %d0,%a1 <== NOT EXECUTED 44624: 2051 moveal %a1@,%a0 <== NOT EXECUTED 44626: 4a88 tstl %a0 <== NOT EXECUTED 44628: 6708 beqs 44632 <rtems_termios_ioctl+0x2de> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
4462a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4462c: 4e90 jsr %a0@ <== NOT EXECUTED 4462e: 588f addql #4,%sp <== NOT EXECUTED 44630: 2400 movel %d0,%d2 <== NOT EXECUTED
}
tty->t_line=*(int*)(args->buffer);
44632: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED 44636: 2010 movel %a0@,%d0 <== NOT EXECUTED
tty->t_sc = NULL; /* ensure that no more valid data */
/*
* open new line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
44638: 2200 movel %d0,%d1 <== NOT EXECUTED 4463a: 41f9 0005 f33c lea 5f33c <rtems_termios_linesw>,%a0 <== NOT EXECUTED 44640: eb89 lsll #5,%d1 <== NOT EXECUTED
* 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);
44642: 2540 00cc movel %d0,%a2@(204) <== NOT EXECUTED
tty->t_sc = NULL; /* ensure that no more valid data */
/*
* open new line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
44646: 2070 1800 moveal %a0@(00000000,%d1:l),%a0 <== NOT EXECUTED
*/
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 */
4464a: 42aa 00d0 clrl %a2@(208) <== NOT EXECUTED
/*
* open new line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
4464e: 4a88 tstl %a0 <== NOT EXECUTED 44650: 6700 fd52 beqw 443a4 <rtems_termios_ioctl+0x50> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_open(tty);
44654: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44656: 4e90 jsr %a0@ <== NOT EXECUTED 44658: 588f addql #4,%sp <== NOT EXECUTED 4465a: 2400 movel %d0,%d2 <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
4465c: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 44660: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
44666: 588f addql #4,%sp <== NOT EXECUTED 44668: 6000 fd46 braw 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
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;
4466c: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED 44670: 20aa 00cc movel %a2@(204),%a0@ <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44674: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 44678: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
4467e: 588f addql #4,%sp <== NOT EXECUTED 44680: 6000 fd2e braw 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
/* FIXME: what happens, if we had sent XOFF but not yet XON? */
tty->flow_ctrl &= ~(FL_ISNTXOF);
}
/* check for incoming RTS/CTS flow control switched off */
if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
44684: 222a 0038 movel %a2@(56),%d1 <== 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) {
44688: 6c00 feb8 bgew 44542 <rtems_termios_ioctl+0x1ee> <== NOT EXECUTED 4468c: 6064 bras 446f2 <rtems_termios_ioctl+0x39e> <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
4468e: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
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;
44692: 740a moveq #10,%d2 <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44694: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc; return sc;
4469a: 588f addql #4,%sp <== NOT EXECUTED 4469c: 6000 fd12 braw 443b0 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
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] *
446a0: 4283 clrl %d3 <== NOT EXECUTED 446a2: 162a 0046 moveb %a2@(70),%d3 <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
446a6: 4eb9 0004 5d3c jsr 45d3c <rtems_clock_get_ticks_per_second><== NOT EXECUTED
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] *
446ac: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
446b0: 760a moveq #10,%d3 <== NOT EXECUTED 446b2: 4c43 0000 remul %d3,%d0,%d0 <== NOT EXECUTED
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] *
446b6: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
if (tty->termios.c_cc[VTIME]) {
446ba: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED 446be: 6764 beqs 44724 <rtems_termios_ioctl+0x3d0> <== NOT EXECUTED
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
446c0: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;
446c4: 2540 0070 movel %d0,%a2@(112) <== NOT EXECUTED
if (tty->termios.c_cc[VMIN])
446c8: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED 446cc: 6600 feae bnew 4457c <rtems_termios_ioctl+0x228> <== NOT EXECUTED
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
else
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
446d0: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 446d4: 6000 feaa braw 44580 <rtems_termios_ioctl+0x22c> <== NOT EXECUTED
break;
#endif
case FIONREAD: {
int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;
if ( rawnc < 0 )
rawnc += tty->rawInBuf.Size;
446d8: 222a 0064 movel %a2@(100),%d1 <== NOT EXECUTED 446dc: d081 addl %d1,%d0 <== NOT EXECUTED
/* Half guess that this is the right operation */
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
446de: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED 446e2: 92aa 0024 subl %a2@(36),%d1 <== NOT EXECUTED 446e6: d280 addl %d0,%d1 <== NOT EXECUTED 446e8: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED 446ec: 2081 movel %d1,%a0@ <== NOT EXECUTED 446ee: 6000 fd4c braw 4443c <rtems_termios_ioctl+0xe8> <== 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;
446f2: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 446f6: 08c0 0008 bset #8,%d0 <== NOT EXECUTED 446fa: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED 446fe: 6000 fe42 braw 44542 <rtems_termios_ioctl+0x1ee> <== 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);
44702: 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)(
44706: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4470a: d0aa 007c addl %a2@(124),%d0 <== NOT EXECUTED 4470e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44710: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 44714: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED 44718: 4e90 jsr %a0@ <== NOT EXECUTED 4471a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
4471e: 46c3 movew %d3,%sr <== NOT EXECUTED 44720: 6000 fda4 braw 444c6 <rtems_termios_ioctl+0x172> <== NOT EXECUTED
if (tty->termios.c_cc[VMIN])
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
else
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
} else {
if (tty->termios.c_cc[VMIN]) {
44724: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED 44728: 6600 fe4a bnew 44574 <rtems_termios_ioctl+0x220> <== NOT EXECUTED
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
} else {
tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;
4472c: 7001 moveq #1,%d0 <== NOT EXECUTED 4472e: 2540 006c movel %d0,%a2@(108) <== NOT EXECUTED 44732: 6000 fe4c braw 44580 <rtems_termios_ioctl+0x22c> <== NOT EXECUTED
00045960 <rtems_termios_number_to_baud>:
extern rtems_assoc_t termios_assoc_table[];
int rtems_termios_number_to_baud(
int32_t baud
)
{
45960: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45964: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45966: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int termios_baud;
termios_baud = rtems_assoc_remote_by_local( termios_assoc_table, baud );
4596a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4596c: 4879 0006 090c pea 6090c <termios_assoc_table> <== NOT EXECUTED 45972: 4eb9 0004 cd34 jsr 4cd34 <rtems_assoc_remote_by_local> <== NOT EXECUTED
if ( termios_baud == 0 && baud != 0 )
45978: 508f addql #8,%sp <== NOT EXECUTED 4597a: 4a80 tstl %d0 <== NOT EXECUTED 4597c: 6708 beqs 45986 <rtems_termios_number_to_baud+0x26><== NOT EXECUTED
return -1;
return termios_baud;
}
4597e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45982: 4e5e unlk %fp <== NOT EXECUTED 45984: 4e75 rts <== NOT EXECUTED
)
{
int termios_baud;
termios_baud = rtems_assoc_remote_by_local( termios_assoc_table, baud );
if ( termios_baud == 0 && baud != 0 )
45986: 4a82 tstl %d2 <== NOT EXECUTED 45988: 67f4 beqs 4597e <rtems_termios_number_to_baud+0x1e><== NOT EXECUTED
return -1;
return termios_baud;
}
4598a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
{
int termios_baud;
termios_baud = rtems_assoc_remote_by_local( termios_assoc_table, baud );
if ( termios_baud == 0 && baud != 0 )
return -1;
4598e: 70ff moveq #-1,%d0 <== NOT EXECUTED
return termios_baud; }
45990: 4e5e unlk %fp <== NOT EXECUTED
00043d40 <rtems_termios_open>:
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
43d40: 4e56 ffd8 linkw %fp,#-40 43d44: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
43d48: 42a7 clrl %sp@-
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
43d4a: 242e 0008 movel %fp@(8),%d2
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
43d4e: 42a7 clrl %sp@- 43d50: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@-
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
43d56: 262e 000c movel %fp@(12),%d3 43d5a: 266e 0010 moveal %fp@(16),%a3
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
43d5e: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain>
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
43d64: 4fef 000c lea %sp@(12),%sp
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
43d68: 2800 movel %d0,%d4
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
43d6a: 6600 027e bnew 43fea <rtems_termios_open+0x2aa>
return sc;
for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) {
43d6e: 2879 0005 fb80 moveal 5fb80 <rtems_termios_ttyHead>,%a4 43d74: 4a8c tstl %a4
43d76: 6710 beqs 43d88 <rtems_termios_open+0x48>
43d78: 244c moveal %a4,%a2
if ((tty->major == major) && (tty->minor == minor))
43d7a: b4aa 000c cmpl %a2@(12),%d2 43d7e: 6700 0276 beqw 43ff6 <rtems_termios_open+0x2b6>
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) {
43d82: 2452 moveal %a2@,%a2 <== NOT EXECUTED 43d84: 4a8a tstl %a2 <== NOT EXECUTED 43d86: 66f2 bnes 43d7a <rtems_termios_open+0x3a> <== NOT EXECUTED
static char c = 'a';
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
43d88: 4878 00e8 pea e8 <DBL_MANT_DIG+0xb3> 43d8c: 4878 0001 pea 1 <ADD> 43d90: 4eb9 0004 28f0 jsr 428f0 <calloc>
if (tty == NULL) {
43d96: 508f addql #8,%sp
static char c = 'a';
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
43d98: 2a40 moveal %d0,%a5 43d9a: 2440 moveal %d0,%a2
if (tty == NULL) {
43d9c: 4a80 tstl %d0 43d9e: 6700 0346 beqw 440e6 <rtems_termios_open+0x3a6>
return RTEMS_NO_MEMORY;
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
43da2: 41f9 0005 e540 lea 5e540 <rtems_termios_raw_input_size>,%a0 43da8: 2b50 0064 movel %a0@,%a5@(100)
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
43dac: 2e3c 0004 302c movel #274476,%d7 43db2: 2047 moveal %d7,%a0 43db4: 202d 0064 movel %a5@(100),%d0 43db8: 2f00 movel %d0,%sp@- 43dba: 4e90 jsr %a0@
if (tty->rawInBuf.theBuf == NULL) {
43dbc: 588f addql #4,%sp
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
43dbe: 2a00 movel %d0,%d5 43dc0: 2b40 0058 movel %d0,%a5@(88)
if (tty->rawInBuf.theBuf == NULL) {
43dc4: 6700 033c beqw 44102 <rtems_termios_open+0x3c2>
return RTEMS_NO_MEMORY;
}
/*
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
43dc8: 41f9 0005 e544 lea 5e544 <rtems_termios_raw_output_size>,%a0 43dce: 2b50 0088 movel %a0@,%a5@(136)
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
43dd2: 2047 moveal %d7,%a0 43dd4: 202d 0088 movel %a5@(136),%d0 43dd8: 2f00 movel %d0,%sp@- 43dda: 4e90 jsr %a0@
if (tty->rawOutBuf.theBuf == NULL) {
43ddc: 588f addql #4,%sp
}
/*
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
43dde: 2c00 movel %d0,%d6 43de0: 2b40 007c movel %d0,%a5@(124)
if (tty->rawOutBuf.theBuf == NULL) {
43de4: 6700 0340 beqw 44126 <rtems_termios_open+0x3e6>
return RTEMS_NO_MEMORY;
}
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
43de8: 2f39 0005 e53c movel 5e53c <rtems_termios_cbufsize>,%sp@- 43dee: 2047 moveal %d7,%a0 43df0: 4e90 jsr %a0@
if (tty->cbuf == NULL) {
43df2: 588f addql #4,%sp
return RTEMS_NO_MEMORY;
}
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
43df4: 2b40 001c movel %d0,%a5@(28)
if (tty->cbuf == NULL) {
43df8: 6700 0358 beqw 44152 <rtems_termios_open+0x412>
return RTEMS_NO_MEMORY;
}
/*
* Initialize wakeup callbacks
*/
tty->tty_snd.sw_pfn = NULL;
43dfc: 42ad 00d4 clrl %a5@(212)
tty->tty_snd.sw_arg = NULL;
43e00: 42ad 00d8 clrl %a5@(216)
tty->tty_rcv.sw_pfn = NULL;
43e04: 42ad 00dc clrl %a5@(220)
tty->tty_rcv.sw_arg = NULL;
43e08: 42ad 00e0 clrl %a5@(224)
tty->tty_rcvwakeup = 0;
43e0c: 42ad 00e4 clrl %a5@(228)
/*
* link tty
*/
tty->forw = rtems_termios_ttyHead;
43e10: 2a8c movel %a4,%a5@
tty->back = NULL;
43e12: 42ad 0004 clrl %a5@(4)
if (rtems_termios_ttyHead != NULL)
43e16: 4a8c tstl %a4
43e18: 6704 beqs 43e1e <rtems_termios_open+0xde> <== ALWAYS TAKEN
rtems_termios_ttyHead->back = tty;
43e1a: 294d 0004 movel %a5,%a4@(4) <== NOT EXECUTED
rtems_termios_ttyHead = tty;
43e1e: 23cd 0005 fb80 movel %a5,5fb80 <rtems_termios_ttyHead>
if (rtems_termios_ttyTail == NULL)
43e24: 4ab9 0005 fb7c tstl 5fb7c <rtems_termios_ttyTail> 43e2a: 6700 02b0 beqw 440dc <rtems_termios_open+0x39c>
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e2e: 486d 0014 pea %a5@(20) 43e32: 49f9 0004 61dc lea 461dc <rtems_semaphore_create>,%a4
rtems_build_name ('T', 'R', 'i', c),
43e38: 1039 0005 e548 moveb 5e548 <c.6293>,%d0
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e3e: 42a7 clrl %sp@- 43e40: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
rtems_build_name ('T', 'R', 'i', c),
43e44: 49c0 extbl %d0
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e46: 4878 0001 pea 1 <ADD> 43e4a: 0080 5452 6900 oril #1414686976,%d0
rtems_termios_ttyHead->back = tty;
rtems_termios_ttyHead = tty;
if (rtems_termios_ttyTail == NULL)
rtems_termios_ttyTail = tty;
tty->minor = minor;
43e50: 2b43 0010 movel %d3,%a5@(16)
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e54: 2f00 movel %d0,%sp@-
rtems_termios_ttyHead = tty;
if (rtems_termios_ttyTail == NULL)
rtems_termios_ttyTail = tty;
tty->minor = minor;
tty->major = major;
43e56: 2b42 000c movel %d2,%a5@(12)
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e5a: 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)
43e5c: 4fef 0014 lea %sp@(20),%sp 43e60: 4a80 tstl %d0 43e62: 6600 020a bnew 4406e <rtems_termios_open+0x32e>
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
43e66: 486d 0018 pea %a5@(24)
rtems_build_name ('T', 'R', 'o', c),
43e6a: 1039 0005 e548 moveb 5e548 <c.6293>,%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 (
43e70: 42a7 clrl %sp@- 43e72: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
rtems_build_name ('T', 'R', 'o', c),
43e76: 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 (
43e78: 4878 0001 pea 1 <ADD> 43e7c: 0080 5452 6f00 oril #1414688512,%d0 43e82: 2f00 movel %d0,%sp@- 43e84: 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)
43e86: 4fef 0014 lea %sp@(20),%sp 43e8a: 4a80 tstl %d0 43e8c: 6600 01e0 bnew 4406e <rtems_termios_open+0x32e>
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
43e90: 486d 008c pea %a5@(140)
rtems_build_name ('T', 'R', 'x', c),
43e94: 1039 0005 e548 moveb 5e548 <c.6293>,%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 (
43e9a: 42a7 clrl %sp@- 43e9c: 4878 0020 pea 20 <OPER2+0xc>
rtems_build_name ('T', 'R', 'x', c),
43ea0: 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 (
43ea2: 0080 5452 7800 oril #1414690816,%d0 43ea8: 42a7 clrl %sp@- 43eaa: 2f00 movel %d0,%sp@- 43eac: 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)
43eae: 4fef 0014 lea %sp@(20),%sp 43eb2: 4a80 tstl %d0 43eb4: 6600 01b8 bnew 4406e <rtems_termios_open+0x32e>
tty->rawOutBufState = rob_idle;
/*
* Set callbacks
*/
tty->device = *callbacks;
43eb8: 226e 0014 moveal %fp@(20),%a1 43ebc: 41ed 0098 lea %a5@(152),%a0
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
43ec0: 7002 moveq #2,%d0
tty->rawOutBufState = rob_idle;
/*
* Set callbacks
*/
tty->device = *callbacks;
43ec2: 20d9 movel %a1@+,%a0@+ 43ec4: 20d9 movel %a1@+,%a0@+ 43ec6: 20d9 movel %a1@+,%a0@+ 43ec8: 20d9 movel %a1@+,%a0@+ 43eca: 20d9 movel %a1@+,%a0@+ 43ecc: 20d9 movel %a1@+,%a0@+ 43ece: 20d9 movel %a1@+,%a0@+ 43ed0: 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;
43ed2: 42ad 0094 clrl %a5@(148)
tty->device = *callbacks;
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
43ed6: b0ad 00b4 cmpl %a5@(180),%d0 43eda: 6700 019a beqw 44076 <rtems_termios_open+0x336>
&tty->rxTaskId);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
43ede: 4aad 00a0 tstl %a5@(160) 43ee2: 6700 0162 beqw 44046 <rtems_termios_open+0x306>
43ee6: 7002 moveq #2,%d0 <== NOT EXECUTED 43ee8: b0ad 00b4 cmpl %a5@(180),%d0 <== NOT EXECUTED 43eec: 6700 0158 beqw 44046 <rtems_termios_open+0x306> <== NOT EXECUTED
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;
43ef0: 42ad 00b8 clrl %a5@(184)
/*
* set low/highwater mark for XON/XOFF support
*/
tty->lowwater = tty->rawInBuf.Size * 1/2;
43ef4: 222d 0064 movel %a5@(100),%d1
tty->highwater = tty->rawInBuf.Size * 3/4;
43ef8: 206d 0064 moveal %a5@(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;
43efc: 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';
43efe: 7c03 moveq #3,%d6
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
43f00: 1039 0005 e548 moveb 5e548 <c.6293>,%d0
/* 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;
43f06: 2b41 00bc movel %d1,%a5@(188)
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
43f0a: 49c0 extbl %d0 43f0c: 2a00 movel %d0,%d5 43f0e: 2240 moveal %d0,%a1 43f10: 5285 addql #1,%d5
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';
43f12: 1b46 0041 moveb %d6,%a5@(65)
tty->termios.c_cc[VQUIT] = '\034';
43f16: 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;
43f18: 41f0 8a00 lea %a0@(00000000,%a0:l:2),%a0
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';
43f1c: 4201 clrb %d1
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';
43f1e: 1b46 0042 moveb %d6,%a5@(66)
tty->termios.c_cc[VERASE] = '\177';
43f22: 7c7f moveq #127,%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;
43f24: 2008 movel %a0,%d0 43f26: e488 lsrl #2,%d0
}
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
43f28: 307c 2502 moveaw #9474,%a0
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';
43f2c: 1b46 0043 moveb %d6,%a5@(67)
tty->termios.c_cc[VKILL] = '\025';
43f30: 7c15 moveq #21,%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;
43f32: 2b40 00c0 movel %d0,%a5@(192)
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';
43f36: 1b46 0044 moveb %d6,%a5@(68)
}
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
43f3a: 2b48 0030 movel %a0,%a5@(48)
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';
43f3e: 7c04 moveq #4,%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';
43f40: 7013 moveq #19,%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';
43f42: 1b46 0045 moveb %d6,%a5@(69)
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
43f46: 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';
43f48: 1b41 004c moveb %d1,%a5@(76)
tty->termios.c_cc[VEOL2] = '\000';
43f4c: 1b41 0051 moveb %d1,%a5@(81)
tty->termios.c_cc[VSTART] = '\021';
43f50: 1b46 0049 moveb %d6,%a5@(73)
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
43f54: 721a moveq #26,%d1
tty->termios.c_cc[VREPRINT] = '\022';
43f56: 7c12 moveq #18,%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';
43f58: 1b40 004a moveb %d0,%a5@(74)
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
tty->termios.c_cc[VDISCARD] = '\017';
43f5c: 700f moveq #15,%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';
43f5e: 1b41 004b moveb %d1,%a5@(75)
tty->termios.c_cc[VREPRINT] = '\022';
43f62: 1b46 004d moveb %d6,%a5@(77)
tty->termios.c_cc[VDISCARD] = '\017';
tty->termios.c_cc[VWERASE] = '\027';
43f66: 7217 moveq #23,%d1
tty->termios.c_cc[VLNEXT] = '\026';
43f68: 7c16 moveq #22,%d6
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';
43f6a: 1b40 004e moveb %d0,%a5@(78)
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
43f6e: 203c 0000 1805 movel #6149,%d0
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';
43f74: 1b41 004f moveb %d1,%a5@(79)
tty->termios.c_cc[VLNEXT] = '\026';
43f78: 1b46 0050 moveb %d6,%a5@(80)
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
43f7c: 2b40 0034 movel %d0,%a5@(52)
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
43f80: 223c 0000 08bd movel #2237,%d1 43f86: 2b41 0038 movel %d1,%a5@(56)
tty->termios.c_lflag =
43f8a: 2c3c 0000 823b movel #33339,%d6
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
43f90: 303c 007a movew #122,%d0 43f94: 13c5 0005 e548 moveb %d5,5e548 <c.6293>
* 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;
tty->termios.c_lflag =
43f9a: 2b46 003c movel %d6,%a5@(60)
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
43f9e: b089 cmpl %a1,%d0
43fa0: 6608 bnes 43faa <rtems_termios_open+0x26a> <== ALWAYS TAKEN
c = 'a';
43fa2: 7261 moveq #97,%d1 <== NOT EXECUTED 43fa4: 13c1 0005 e548 moveb %d1,5e548 <c.6293> <== NOT EXECUTED
}
args->iop->data1 = tty;
if (!tty->refcount++) {
43faa: 202a 0008 movel %a2@(8),%d0 43fae: 2c00 movel %d0,%d6 43fb0: 5286 addql #1,%d6
*/
if (c++ == 'z')
c = 'a';
}
args->iop->data1 = tty;
43fb2: 2053 moveal %a3@,%a0 43fb4: 214a 0034 movel %a2,%a0@(52)
if (!tty->refcount++) {
43fb8: 2546 0008 movel %d6,%a2@(8) 43fbc: 4a80 tstl %d0
43fbe: 661c bnes 43fdc <rtems_termios_open+0x29c>
if (tty->device.firstOpen)
43fc0: 206a 0098 moveal %a2@(152),%a0 43fc4: 4a88 tstl %a0
43fc6: 670c beqs 43fd4 <rtems_termios_open+0x294> <== NEVER TAKEN
(*tty->device.firstOpen)(major, minor, arg);
43fc8: 2f0b movel %a3,%sp@- 43fca: 2f03 movel %d3,%sp@- 43fcc: 2f02 movel %d2,%sp@- 43fce: 4e90 jsr %a0@ 43fd0: 4fef 000c lea %sp@(12),%sp
/*
* start I/O tasks, if needed
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
43fd4: 7002 moveq #2,%d0 43fd6: b0aa 00b4 cmpl %a2@(180),%d0
43fda: 672c beqs 44008 <rtems_termios_open+0x2c8> <== NEVER TAKEN
tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
43fdc: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@- 43fe2: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
return RTEMS_SUCCESSFUL;
43fe8: 588f addql #4,%sp
}
43fea: 2004 movel %d4,%d0 43fec: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 43ff2: 4e5e unlk %fp 43ff4: 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))
43ff6: b6aa 0010 cmpl %a2@(16),%d3
43ffa: 67ae beqs 43faa <rtems_termios_open+0x26a> <== 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) {
43ffc: 2452 moveal %a2@,%a2 <== NOT EXECUTED 43ffe: 4a8a tstl %a2 <== NOT EXECUTED 44000: 6600 fd78 bnew 43d7a <rtems_termios_open+0x3a> <== NOT EXECUTED 44004: 6000 fd82 braw 43d88 <rtems_termios_open+0x48> <== NOT EXECUTED
/*
* start I/O tasks, if needed
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_start(
44008: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4400a: 487a 15fe pea %pc@(4560a <rtems_termios_rxdaemon>) <== NOT EXECUTED 4400e: 47f9 0004 6924 lea 46924 <rtems_task_start>,%a3 <== NOT EXECUTED 44014: 2f2a 00c4 movel %a2@(196),%sp@- <== NOT EXECUTED 44018: 4e93 jsr %a3@ <== NOT EXECUTED
tty->rxTaskId, rtems_termios_rxdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
4401a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4401e: 4a80 tstl %d0 <== NOT EXECUTED 44020: 664c bnes 4406e <rtems_termios_open+0x32e> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_task_start(
44022: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44024: 487a 18b2 pea %pc@(458d8 <rtems_termios_txdaemon>) <== NOT EXECUTED 44028: 2f2a 00c8 movel %a2@(200),%sp@- <== NOT EXECUTED 4402c: 4e93 jsr %a3@ <== NOT EXECUTED
tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
4402e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 44032: 4a80 tstl %d0 <== NOT EXECUTED 44034: 6638 bnes 4406e <rtems_termios_open+0x32e> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
44036: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED 4403c: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
44042: 588f addql #4,%sp <== NOT EXECUTED 44044: 60a4 bras 43fea <rtems_termios_open+0x2aa> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
44046: 486d 0068 pea %a5@(104)
rtems_build_name ('T', 'R', 'r', c),
4404a: 1039 0005 e548 moveb 5e548 <c.6293>,%d0
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
44050: 42a7 clrl %sp@- 44052: 4878 0024 pea 24 <OPER2+0x10>
rtems_build_name ('T', 'R', 'r', c),
44056: 49c0 extbl %d0
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
44058: 0080 5452 7200 oril #1414689280,%d0 4405e: 42a7 clrl %sp@- 44060: 2f00 movel %d0,%sp@- 44062: 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)
44064: 4fef 0014 lea %sp@(20),%sp 44068: 4a80 tstl %d0 4406a: 6700 fe84 beqw 43ef0 <rtems_termios_open+0x1b0>
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);
4406e: 2f00 movel %d0,%sp@- 44070: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred>
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
44076: 486d 00c8 pea %a5@(200) <== NOT EXECUTED 4407a: 2a3c 0004 6674 movel #288372,%d5 <== NOT EXECUTED 44080: 2045 moveal %d5,%a0 <== NOT EXECUTED 44082: 42a7 clrl %sp@- <== NOT EXECUTED 44084: 4878 0500 pea 500 <DBL_MAX_EXP+0xff> <== NOT EXECUTED 44088: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED 4408c: 4878 000a pea a <LASTO> <== NOT EXECUTED
rtems_build_name ('T', 'x', 'T', c),
44090: 1039 0005 e548 moveb 5e548 <c.6293>,%d0 <== NOT EXECUTED 44096: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
44098: 0080 5478 5400 oril #1417171968,%d0 <== NOT EXECUTED 4409e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 440a0: 4e90 jsr %a0@ <== NOT EXECUTED
TERMIOS_TXTASK_STACKSIZE,
RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->txTaskId);
if (sc != RTEMS_SUCCESSFUL)
440a2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 440a6: 4a80 tstl %d0 <== NOT EXECUTED 440a8: 66c4 bnes 4406e <rtems_termios_open+0x32e> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
440aa: 486d 00c4 pea %a5@(196) <== NOT EXECUTED 440ae: 2045 moveal %d5,%a0 <== NOT EXECUTED
rtems_build_name ('R', 'x', 'T', c),
440b0: 1039 0005 e548 moveb 5e548 <c.6293>,%d0 <== NOT EXECUTED
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->txTaskId);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
440b6: 42a7 clrl %sp@- <== NOT EXECUTED 440b8: 4878 0500 pea 500 <DBL_MAX_EXP+0xff> <== NOT EXECUTED
rtems_build_name ('R', 'x', 'T', c),
440bc: 49c0 extbl %d0 <== NOT EXECUTED
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->txTaskId);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
440be: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED 440c2: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED 440c6: 0080 5278 5400 oril #1383617536,%d0 <== NOT EXECUTED 440cc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 440ce: 4e90 jsr %a0@ <== NOT EXECUTED
TERMIOS_RXTASK_STACKSIZE,
RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->rxTaskId);
if (sc != RTEMS_SUCCESSFUL)
440d0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 440d4: 4a80 tstl %d0 <== NOT EXECUTED 440d6: 6700 fe06 beqw 43ede <rtems_termios_open+0x19e> <== NOT EXECUTED 440da: 6092 bras 4406e <rtems_termios_open+0x32e> <== 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;
440dc: 23cd 0005 fb7c movel %a5,5fb7c <rtems_termios_ttyTail> 440e2: 6000 fd4a braw 43e2e <rtems_termios_open+0xee>
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
if (tty == NULL) {
rtems_semaphore_release (rtems_termios_ttyMutex);
440e6: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
return RTEMS_NO_MEMORY;
440ec: 781a moveq #26,%d4 <== NOT EXECUTED
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
if (tty == NULL) {
rtems_semaphore_release (rtems_termios_ttyMutex);
440ee: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
440f4: 588f addql #4,%sp <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
440f6: 2004 movel %d4,%d0 <== NOT EXECUTED 440f8: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED 440fe: 4e5e unlk %fp <== NOT EXECUTED 44100: 4e75 rts <== NOT EXECUTED
* 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);
44102: 2f0d movel %a5,%sp@- <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_NO_MEMORY;
44104: 781a moveq #26,%d4 <== NOT EXECUTED
* 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);
44106: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
4410c: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED 44112: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
44118: 508f addql #8,%sp <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
4411a: 2004 movel %d4,%d0 <== NOT EXECUTED 4411c: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED 44122: 4e5e unlk %fp <== NOT EXECUTED 44124: 4e75 rts <== NOT EXECUTED
* 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));
44126: 2f05 movel %d5,%sp@- <== NOT EXECUTED 44128: 45f9 0004 2cfc lea 42cfc <free>,%a2 <== NOT EXECUTED
free(tty);
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_NO_MEMORY;
4412e: 781a moveq #26,%d4 <== NOT EXECUTED
* 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));
44130: 4e92 jsr %a2@ <== NOT EXECUTED
free(tty);
44132: 2f0d movel %a5,%sp@- <== NOT EXECUTED 44134: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
44136: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED 4413c: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
44142: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
44146: 2004 movel %d4,%d0 <== NOT EXECUTED 44148: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4414e: 4e5e unlk %fp <== NOT EXECUTED 44150: 4e75 rts <== NOT EXECUTED
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
if (tty->cbuf == NULL) {
free((void *)(tty->rawOutBuf.theBuf));
44152: 2f06 movel %d6,%sp@- <== NOT EXECUTED 44154: 45f9 0004 2cfc lea 42cfc <free>,%a2 <== NOT EXECUTED
free((void *)(tty->rawInBuf.theBuf));
free(tty);
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_NO_MEMORY;
4415a: 781a moveq #26,%d4 <== NOT EXECUTED
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
if (tty->cbuf == NULL) {
free((void *)(tty->rawOutBuf.theBuf));
4415c: 4e92 jsr %a2@ <== NOT EXECUTED
free((void *)(tty->rawInBuf.theBuf));
4415e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 44160: 4e92 jsr %a2@ <== NOT EXECUTED
free(tty);
44162: 2f0d movel %a5,%sp@- <== NOT EXECUTED 44164: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
44166: 2f39 0005 fb78 movel 5fb78 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED 4416c: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
44172: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
44176: 2004 movel %d4,%d0 <== NOT EXECUTED 44178: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4417e: 4e5e unlk %fp <== NOT EXECUTED
00044736 <rtems_termios_puts>:
* Send characters to device-specific code
*/
void
rtems_termios_puts (
const void *_buf, int len, struct rtems_termios_tty *tty)
{
44736: 4e56 ffdc linkw %fp,#-36 4473a: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ 4473e: 286e 0008 moveal %fp@(8),%a4 44742: 242e 000c movel %fp@(12),%d2 44746: 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) {
4474a: 4aaa 00b4 tstl %a2@(180) 4474e: 6700 00c6 beqw 44816 <rtems_termios_puts+0xe0>
(*tty->device.write)(tty->minor, (void *)buf, len);
return;
}
newHead = tty->rawOutBuf.Head;
44752: 2c2a 0080 movel %a2@(128),%d6
while (len) {
44756: 4a82 tstl %d2 44758: 6700 008e beqw 447e8 <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);
4475c: 2a3c 0000 0700 movel #1792,%d5 44762: 47f9 0004 6478 lea 46478 <rtems_semaphore_obtain>,%a3
* len -= ncopy
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
44768: 222a 0088 movel %a2@(136),%d1 4476c: 5286 addql #1,%d6
rtems_interrupt_disable (level);
4476e: 2005 movel %d5,%d0
* len -= ncopy
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
44770: 4c41 6007 remul %d1,%d7,%d6 44774: 2c07 movel %d7,%d6
rtems_interrupt_disable (level);
44776: 40c3 movew %sr,%d3 44778: 8083 orl %d3,%d0 4477a: 46c0 movew %d0,%sr
while (newHead == tty->rawOutBuf.Tail) {
4477c: 282a 0084 movel %a2@(132),%d4 44780: be84 cmpl %d4,%d7
44782: 662c bnes 447b0 <rtems_termios_puts+0x7a> <== ALWAYS TAKEN
tty->rawOutBufState = rob_wait;
44784: 7002 moveq #2,%d0 <== NOT EXECUTED 44786: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable (level);
4478a: 46c3 movew %d3,%sr <== NOT EXECUTED
sc = rtems_semaphore_obtain(
4478c: 42a7 clrl %sp@- <== NOT EXECUTED 4478e: 42a7 clrl %sp@- <== NOT EXECUTED 44790: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED 44794: 4e93 jsr %a3@ <== NOT EXECUTED
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
44796: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4479a: 4a80 tstl %d0 <== NOT EXECUTED 4479c: 6600 0094 bnew 44832 <rtems_termios_puts+0xfc> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
447a0: 2005 movel %d5,%d0 <== NOT EXECUTED 447a2: 40c3 movew %sr,%d3 <== NOT EXECUTED 447a4: 8083 orl %d3,%d0 <== NOT EXECUTED 447a6: 46c0 movew %d0,%sr <== NOT EXECUTED
* 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) {
447a8: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED 447ac: b880 cmpl %d0,%d4 <== NOT EXECUTED 447ae: 67d4 beqs 44784 <rtems_termios_puts+0x4e> <== NOT EXECUTED
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++;
447b0: 202a 0080 movel %a2@(128),%d0 447b4: 206a 007c moveal %a2@(124),%a0 447b8: 119c 0800 moveb %a4@+,%a0@(00000000,%d0:l)
tty->rawOutBuf.Head = newHead;
447bc: 2547 0080 movel %d7,%a2@(128)
if (tty->rawOutBufState == rob_idle) {
447c0: 4aaa 0094 tstl %a2@(148)
447c4: 661c bnes 447e2 <rtems_termios_puts+0xac> <== NEVER TAKEN
/* check, whether XOFF has been received */
if (!(tty->flow_ctrl & FL_ORCVXOF)) {
447c6: 202a 00b8 movel %a2@(184),%d0 447ca: 0800 0004 btst #4,%d0
447ce: 6722 beqs 447f2 <rtems_termios_puts+0xbc> <== ALWAYS TAKEN
(*tty->device.write)(tty->minor,
(char *)&tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
} else {
/* remember that output has been stopped due to flow ctrl*/
tty->flow_ctrl |= FL_OSTOP;
447d0: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 447d4: 7220 moveq #32,%d1 <== NOT EXECUTED 447d6: 8081 orl %d1,%d0 <== NOT EXECUTED 447d8: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy;
447dc: 7001 moveq #1,%d0 <== NOT EXECUTED 447de: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
}
rtems_interrupt_enable (level);
447e2: 46c3 movew %d3,%sr
len--;
447e4: 5382 subql #1,%d2 <== NOT EXECUTED
if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {
(*tty->device.write)(tty->minor, (void *)buf, len);
return;
}
newHead = tty->rawOutBuf.Head;
while (len) {
447e6: 6680 bnes 44768 <rtems_termios_puts+0x32> <== NOT EXECUTED
tty->rawOutBufState = rob_busy;
}
rtems_interrupt_enable (level);
len--;
}
}
447e8: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 447ee: 4e5e unlk %fp <== NOT EXECUTED 447f0: 4e75 rts <== NOT EXECUTED
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)(tty->minor,
447f2: 4878 0001 pea 1 <ADD>
(char *)&tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
447f6: 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)(tty->minor,
447fa: d0aa 007c addl %a2@(124),%d0 447fe: 2f00 movel %d0,%sp@- 44800: 2f2a 0010 movel %a2@(16),%sp@- 44804: 206a 00a4 moveal %a2@(164),%a0 44808: 4e90 jsr %a0@ 4480a: 4fef 000c lea %sp@(12),%sp
(char *)&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;
4480e: 7001 moveq #1,%d0 44810: 2540 0094 movel %d0,%a2@(148) 44814: 60cc bras 447e2 <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, (void *)buf, len);
44816: 226a 00a4 moveal %a2@(164),%a1 <== NOT EXECUTED 4481a: 2d6a 0010 0008 movel %a2@(16),%fp@(8) <== NOT EXECUTED 44820: 2d42 0010 movel %d2,%fp@(16) <== NOT EXECUTED 44824: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED
tty->rawOutBufState = rob_busy;
}
rtems_interrupt_enable (level);
len--;
}
}
44828: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4482e: 4e5e unlk %fp <== NOT EXECUTED
unsigned int newHead;
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {
(*tty->device.write)(tty->minor, (void *)buf, len);
44830: 4ed1 jmp %a1@ <== NOT EXECUTED
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);
44832: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44834: 4eb9 0004 6bc0 jsr 46bc0 <rtems_fatal_error_occurred> <== NOT EXECUTED
00044ff6 <rtems_termios_read>:
return RTEMS_SUCCESSFUL;
}
rtems_status_code
rtems_termios_read (void *arg)
{
44ff6: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 44ffa: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 44ffe: 2a6e 0008 moveal %fp@(8),%a5 <== NOT EXECUTED
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);
45002: 2c3c 0004 6478 movel #287864,%d6 <== NOT EXECUTED
rtems_status_code
rtems_termios_read (void *arg)
{
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
45008: 2055 moveal %a5@,%a0 <== NOT EXECUTED 4500a: 2468 0034 moveal %a0@(52),%a2 <== NOT EXECUTED
uint32_t count = args->count;
char *buffer = args->buffer;
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4500e: 2046 moveal %d6,%a0 <== NOT EXECUTED 45010: 42a7 clrl %sp@- <== NOT EXECUTED
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;
45012: 282d 0010 movel %a5@(16),%d4 <== NOT EXECUTED
char *buffer = args->buffer;
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
45016: 42a7 clrl %sp@- <== NOT EXECUTED 45018: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
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;
4501c: 286d 000c moveal %a5@(12),%a4 <== NOT EXECUTED
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
45020: 4e90 jsr %a0@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
45022: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
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);
45026: 2a00 movel %d0,%d5 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
45028: 662e bnes 45058 <rtems_termios_read+0x62> <== NOT EXECUTED
return sc;
if (rtems_termios_linesw[tty->t_line].l_read != NULL) {
4502a: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED 4502e: eb88 lsll #5,%d0 <== NOT EXECUTED 45030: 0680 0005 f344 addil #389956,%d0 <== NOT EXECUTED 45036: 2240 moveal %d0,%a1 <== NOT EXECUTED 45038: 2051 moveal %a1@,%a0 <== NOT EXECUTED 4503a: 4a88 tstl %a0 <== NOT EXECUTED 4503c: 6726 beqs 45064 <rtems_termios_read+0x6e> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);
4503e: 2f0d movel %a5,%sp@- <== NOT EXECUTED 45040: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45042: 4e90 jsr %a0@ <== NOT EXECUTED 45044: 2a00 movel %d0,%d5 <== NOT EXECUTED
tty->tty_rcvwakeup = 0;
45046: 42aa 00e4 clrl %a2@(228) <== NOT EXECUTED
rtems_semaphore_release (tty->isem);
4504a: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED 4504e: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
45054: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
} args->bytes_moved = args->count - count; tty->tty_rcvwakeup = 0; rtems_semaphore_release (tty->isem); return sc; }
45058: 2005 movel %d5,%d0 <== NOT EXECUTED 4505a: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED 45060: 4e5e unlk %fp <== NOT EXECUTED 45062: 4e75 rts <== NOT EXECUTED
tty->tty_rcvwakeup = 0;
rtems_semaphore_release (tty->isem);
return sc;
}
if (tty->cindex == tty->ccount) {
45064: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED 45068: b0aa 0024 cmpl %a2@(36),%d0 <== NOT EXECUTED 4506c: 674e beqs 450bc <rtems_termios_read+0xc6> <== NOT EXECUTED
sc = fillBufferQueue (tty);
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
4506e: 4a84 tstl %d4 <== NOT EXECUTED 45070: 6724 beqs 45096 <rtems_termios_read+0xa0> <== NOT EXECUTED 45072: 202a 0024 movel %a2@(36),%d0 <== NOT EXECUTED 45076: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED 4507a: 6c1a bges 45096 <rtems_termios_read+0xa0> <== NOT EXECUTED
*buffer++ = tty->cbuf[tty->cindex++];
4507c: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
count--;
45080: 5384 subql #1,%d4 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
*buffer++ = tty->cbuf[tty->cindex++];
45082: 18f0 0800 moveb %a0@(00000000,%d0:l),%a4@+ <== NOT EXECUTED 45086: 5280 addql #1,%d0 <== NOT EXECUTED 45088: 2540 0024 movel %d0,%a2@(36) <== NOT EXECUTED
sc = fillBufferQueue (tty);
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
4508c: 4a84 tstl %d4 <== NOT EXECUTED 4508e: 6706 beqs 45096 <rtems_termios_read+0xa0> <== NOT EXECUTED 45090: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED 45094: 6de6 blts 4507c <rtems_termios_read+0x86> <== NOT EXECUTED
*buffer++ = tty->cbuf[tty->cindex++];
count--;
}
args->bytes_moved = args->count - count;
45096: 202d 0010 movel %a5@(16),%d0 <== NOT EXECUTED 4509a: 9084 subl %d4,%d0 <== NOT EXECUTED 4509c: 2b40 0018 movel %d0,%a5@(24) <== NOT EXECUTED
tty->tty_rcvwakeup = 0;
450a0: 42aa 00e4 clrl %a2@(228) <== NOT EXECUTED
rtems_semaphore_release (tty->isem);
450a4: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED 450a8: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
450ae: 588f addql #4,%sp <== NOT EXECUTED
}
450b0: 2005 movel %d5,%d0 <== NOT EXECUTED 450b2: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED 450b8: 4e5e unlk %fp <== NOT EXECUTED 450ba: 4e75 rts <== NOT EXECUTED
}
if (tty->cindex == tty->ccount) {
tty->cindex = tty->ccount = 0;
tty->read_start_column = tty->column;
if (tty->device.pollRead != NULL &&
450bc: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
return sc;
}
if (tty->cindex == tty->ccount) {
tty->cindex = tty->ccount = 0;
tty->read_start_column = tty->column;
450c0: 256a 0028 002c movel %a2@(40),%a2@(44) <== NOT EXECUTED
rtems_semaphore_release (tty->isem);
return sc;
}
if (tty->cindex == tty->ccount) {
tty->cindex = tty->ccount = 0;
450c6: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED 450ca: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED
tty->read_start_column = tty->column;
if (tty->device.pollRead != NULL &&
450ce: 4a88 tstl %a0 <== NOT EXECUTED 450d0: 6708 beqs 450da <rtems_termios_read+0xe4> <== NOT EXECUTED 450d2: 4aaa 00b4 tstl %a2@(180) <== NOT EXECUTED 450d6: 6700 0162 beqw 4523a <rtems_termios_read+0x244> <== NOT EXECUTED
if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))
== (FL_MDXON | FL_ISNTXOF))
&& ((tty->rawOutBufState == rob_idle)
|| (tty->flow_ctrl & FL_OSTOP))) {
/* XON should be sent now... */
(*tty->device.write)(
450da: 41ea 0049 lea %a2@(73),%a0 <== NOT EXECUTED
static rtems_status_code
fillBufferQueue (struct rtems_termios_tty *tty)
{
rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;
rtems_status_code sc;
int wait = (int)1;
450de: 7401 moveq #1,%d2 <== NOT EXECUTED 450e0: 47fa fdca lea %pc@(44eac <siproc>),%a3 <== NOT EXECUTED
* Fill the input buffer from the raw input queue
*/
static rtems_status_code
fillBufferQueue (struct rtems_termios_tty *tty)
{
rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;
450e4: 262a 0074 movel %a2@(116),%d3 <== NOT EXECUTED
if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))
== (FL_MDXON | FL_ISNTXOF))
&& ((tty->rawOutBufState == rob_idle)
|| (tty->flow_ctrl & FL_OSTOP))) {
/* XON should be sent now... */
(*tty->device.write)(
450e8: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
450ec: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED 450f0: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED 450f4: b081 cmpl %d1,%d0 <== NOT EXECUTED 450f6: 6700 00cc beqw 451c4 <rtems_termios_read+0x1ce> <== NOT EXECUTED
(tty->ccount < (CBUFSIZE-1))) {
450fa: 2039 0005 e53c movel 5e53c <rtems_termios_cbufsize>,%d0 <== NOT EXECUTED 45100: 5380 subql #1,%d0 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
45102: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED 45106: 6f00 00bc blew 451c4 <rtems_termios_read+0x1ce> <== NOT EXECUTED
(tty->ccount < (CBUFSIZE-1))) {
unsigned char c;
unsigned int newHead;
newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;
4510a: 262a 005c movel %a2@(92),%d3 <== NOT EXECUTED 4510e: 5283 addql #1,%d3 <== NOT EXECUTED 45110: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED
c = tty->rawInBuf.theBuf[newHead];
45114: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED
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;
45118: 4c40 3001 remul %d0,%d1,%d3 <== NOT EXECUTED
c = tty->rawInBuf.theBuf[newHead];
4511c: 1630 1800 moveb %a0@(00000000,%d1:l),%d3 <== NOT EXECUTED
tty->rawInBuf.Head = newHead;
45120: 2541 005c movel %d1,%a2@(92) <== NOT EXECUTED
if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)
45124: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED 45128: 206a 0064 moveal %a2@(100),%a0 <== NOT EXECUTED 4512c: d088 addl %a0,%d0 <== NOT EXECUTED 4512e: 9081 subl %d1,%d0 <== NOT EXECUTED
% tty->rawInBuf.Size)
45130: 222a 0064 movel %a2@(100),%d1 <== NOT EXECUTED 45134: 4c41 0007 remul %d1,%d7,%d0 <== NOT EXECUTED
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)
45138: beaa 00bc cmpl %a2@(188),%d7 <== NOT EXECUTED 4513c: 6446 bccs 45184 <rtems_termios_read+0x18e> <== NOT EXECUTED
% tty->rawInBuf.Size)
< tty->lowwater) {
tty->flow_ctrl &= ~FL_IREQXOF;
4513e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45142: 72fe moveq #-2,%d1 <== NOT EXECUTED 45144: c081 andl %d1,%d0 <== NOT EXECUTED 45146: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* if tx stopped and XON should be sent... */
if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))
4514a: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 4514e: 0280 0000 0202 andil #514,%d0 <== NOT EXECUTED 45154: 0c80 0000 0202 cmpil #514,%d0 <== NOT EXECUTED 4515a: 6700 008a beqw 451e6 <rtems_termios_read+0x1f0> <== NOT EXECUTED
&& ((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) {
4515e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45162: 0800 0008 btst #8,%d0 <== NOT EXECUTED 45166: 671c beqs 45184 <rtems_termios_read+0x18e> <== NOT EXECUTED
tty->flow_ctrl &= ~FL_IRTSOFF;
45168: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED 4516c: 7efb moveq #-5,%d7 <== NOT EXECUTED 4516e: c287 andl %d7,%d1 <== NOT EXECUTED
/* activate RTS line */
if (tty->device.startRemoteTx != NULL) {
45170: 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;
45174: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
/* activate RTS line */
if (tty->device.startRemoteTx != NULL) {
45178: 4a88 tstl %a0 <== NOT EXECUTED 4517a: 6708 beqs 45184 <rtems_termios_read+0x18e> <== NOT EXECUTED
tty->device.startRemoteTx(tty->minor);
4517c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 45180: 4e90 jsr %a0@ <== NOT EXECUTED 45182: 588f addql #4,%sp <== NOT EXECUTED
}
}
}
/* continue processing new character */
if (tty->termios.c_lflag & ICANON) {
45184: 7002 moveq #2,%d0 <== NOT EXECUTED 45186: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED 4518a: 6700 008c beqw 45218 <rtems_termios_read+0x222> <== NOT EXECUTED
if (siproc (c, tty))
4518e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45190: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED 45196: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45198: 4e93 jsr %a3@ <== NOT EXECUTED 4519a: 508f addql #8,%sp <== NOT EXECUTED
wait = 0;
4519c: 4a80 tstl %d0 <== NOT EXECUTED 4519e: 57c0 seq %d0 <== NOT EXECUTED 451a0: 49c0 extbl %d0 <== NOT EXECUTED 451a2: c480 andl %d0,%d2 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
451a4: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED
} else {
siproc (c, tty);
if (tty->ccount >= tty->termios.c_cc[VMIN])
wait = 0;
}
timeout = tty->rawInBufSemaphoreTimeout;
451a8: 262a 0070 movel %a2@(112),%d3 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
451ac: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED 451b0: b081 cmpl %d1,%d0 <== NOT EXECUTED 451b2: 6710 beqs 451c4 <rtems_termios_read+0x1ce> <== NOT EXECUTED
(tty->ccount < (CBUFSIZE-1))) {
451b4: 2039 0005 e53c movel 5e53c <rtems_termios_cbufsize>,%d0 <== NOT EXECUTED 451ba: 5380 subql #1,%d0 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
451bc: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED 451c0: 6e00 ff48 bgtw 4510a <rtems_termios_read+0x114> <== NOT EXECUTED
}
/*
* Wait for characters
*/
if ( wait ) {
451c4: 4a82 tstl %d2 <== NOT EXECUTED 451c6: 6700 fea6 beqw 4506e <rtems_termios_read+0x78> <== NOT EXECUTED
sc = rtems_semaphore_obtain(
451ca: 2f03 movel %d3,%sp@- <== NOT EXECUTED 451cc: 2f2a 006c movel %a2@(108),%sp@- <== NOT EXECUTED 451d0: 2046 moveal %d6,%a0 <== NOT EXECUTED 451d2: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED 451d6: 4e90 jsr %a0@ <== NOT EXECUTED
tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout);
if (sc != RTEMS_SUCCESSFUL)
451d8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 451dc: 4a80 tstl %d0 <== NOT EXECUTED 451de: 6700 ff0c beqw 450ec <rtems_termios_read+0xf6> <== NOT EXECUTED 451e2: 6000 fe8a braw 4506e <rtems_termios_read+0x78> <== NOT EXECUTED
< 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)
451e6: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED 451ea: 670c beqs 451f8 <rtems_termios_read+0x202> <== NOT EXECUTED
|| (tty->flow_ctrl & FL_OSTOP))) {
451ec: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 451f0: 0800 0005 btst #5,%d0 <== NOT EXECUTED 451f4: 6700 ff68 beqw 4515e <rtems_termios_read+0x168> <== NOT EXECUTED
/* XON should be sent now... */
(*tty->device.write)(
451f8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 451fc: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 45200: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 45204: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED 45208: 4e90 jsr %a0@ <== NOT EXECUTED 4520a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
}
/* continue processing new character */
if (tty->termios.c_lflag & ICANON) {
4520e: 7002 moveq #2,%d0 <== NOT EXECUTED 45210: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED 45214: 6600 ff78 bnew 4518e <rtems_termios_read+0x198> <== NOT EXECUTED
if (siproc (c, tty))
wait = 0;
} else {
siproc (c, tty);
45218: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4521a: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED 45220: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45222: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->ccount >= tty->termios.c_cc[VMIN])
45224: 508f addql #8,%sp <== NOT EXECUTED 45226: 4280 clrl %d0 <== NOT EXECUTED 45228: 102a 0047 moveb %a2@(71),%d0 <== NOT EXECUTED
wait = 0;
4522c: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED 45230: 5ec0 sgt %d0 <== NOT EXECUTED 45232: 49c0 extbl %d0 <== NOT EXECUTED 45234: c480 andl %d0,%d2 <== NOT EXECUTED 45236: 6000 ff6c braw 451a4 <rtems_termios_read+0x1ae> <== NOT EXECUTED
static rtems_status_code
fillBufferPoll (struct rtems_termios_tty *tty)
{
int n;
if (tty->termios.c_lflag & ICANON) {
4523a: 7002 moveq #2,%d0 <== NOT EXECUTED 4523c: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED 45240: 6740 beqs 45282 <rtems_termios_read+0x28c> <== NOT EXECUTED 45242: 47fa fc68 lea %pc@(44eac <siproc>),%a3 <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
45246: 243c 0004 69e0 movel #289248,%d2 <== NOT EXECUTED
{
int n;
if (tty->termios.c_lflag & ICANON) {
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
4524c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 45250: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
45252: 588f addql #4,%sp <== NOT EXECUTED 45254: 4a80 tstl %d0 <== NOT EXECUTED 45256: 6d1a blts 45272 <rtems_termios_read+0x27c> <== NOT EXECUTED
rtems_task_wake_after (1);
} else {
if (siproc (n, tty))
45258: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4525a: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 45260: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45262: 4e93 jsr %a3@ <== NOT EXECUTED 45264: 508f addql #8,%sp <== NOT EXECUTED 45266: 4a80 tstl %d0 <== NOT EXECUTED 45268: 6600 fe04 bnew 4506e <rtems_termios_read+0x78> <== NOT EXECUTED
static rtems_status_code
fillBufferPoll (struct rtems_termios_tty *tty)
{
int n;
if (tty->termios.c_lflag & ICANON) {
4526c: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED 45270: 60da bras 4524c <rtems_termios_read+0x256> <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
45272: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 45276: 2042 moveal %d2,%a0 <== NOT EXECUTED 45278: 4e90 jsr %a0@ <== NOT EXECUTED
static rtems_status_code
fillBufferPoll (struct rtems_termios_tty *tty)
{
int n;
if (tty->termios.c_lflag & ICANON) {
4527a: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
4527e: 588f addql #4,%sp <== NOT EXECUTED 45280: 60ca bras 4524c <rtems_termios_read+0x256> <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
} else {
siproc (n, tty);
45282: 47fa fc28 lea %pc@(44eac <siproc>),%a3 <== NOT EXECUTED
}
}
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
45286: 263c 0004 5d54 movel #286036,%d3 <== NOT EXECUTED
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
4528c: 243c 0004 69e0 movel #289248,%d2 <== NOT EXECUTED
}
}
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
45292: 2243 moveal %d3,%a1 <== NOT EXECUTED 45294: 4e91 jsr %a1@ <== NOT EXECUTED 45296: 2c00 movel %d0,%d6 <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
45298: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4529c: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED 452a0: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
452a2: 588f addql #4,%sp <== NOT EXECUTED 452a4: 4a80 tstl %d0 <== NOT EXECUTED 452a6: 6d38 blts 452e0 <rtems_termios_read+0x2ea> <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
} else {
siproc (n, tty);
452a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 452aa: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 452b0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 452b2: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->ccount >= tty->termios.c_cc[VMIN])
452b4: 508f addql #8,%sp <== NOT EXECUTED 452b6: 4281 clrl %d1 <== NOT EXECUTED 452b8: 102a 0047 moveb %a2@(71),%d0 <== NOT EXECUTED 452bc: 1200 moveb %d0,%d1 <== NOT EXECUTED 452be: b2aa 0020 cmpl %a2@(32),%d1 <== NOT EXECUTED 452c2: 6f00 fdaa blew 4506e <rtems_termios_read+0x78> <== NOT EXECUTED
break;
if (tty->termios.c_cc[VMIN] && tty->termios.c_cc[VTIME])
452c6: 4a00 tstb %d0 <== NOT EXECUTED 452c8: 67ce beqs 45298 <rtems_termios_read+0x2a2> <== NOT EXECUTED 452ca: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED 452ce: 66c2 bnes 45292 <rtems_termios_read+0x29c> <== NOT EXECUTED
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
452d0: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 452d4: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED 452d8: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
452da: 588f addql #4,%sp <== NOT EXECUTED 452dc: 4a80 tstl %d0 <== NOT EXECUTED 452de: 6cc8 bges 452a8 <rtems_termios_read+0x2b2> <== NOT EXECUTED
if (tty->termios.c_cc[VMIN]) {
452e0: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED 452e4: 6732 beqs 45318 <rtems_termios_read+0x322> <== NOT EXECUTED
if (tty->termios.c_cc[VTIME] && tty->ccount) {
452e6: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED 452ea: 6706 beqs 452f2 <rtems_termios_read+0x2fc> <== NOT EXECUTED 452ec: 4aaa 0020 tstl %a2@(32) <== NOT EXECUTED 452f0: 660c bnes 452fe <rtems_termios_read+0x308> <== NOT EXECUTED
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
452f2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 452f6: 2042 moveal %d2,%a0 <== NOT EXECUTED 452f8: 4e90 jsr %a0@ <== NOT EXECUTED 452fa: 588f addql #4,%sp <== NOT EXECUTED 452fc: 609a bras 45298 <rtems_termios_read+0x2a2> <== NOT EXECUTED
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();
452fe: 2043 moveal %d3,%a0 <== NOT EXECUTED 45300: 4e90 jsr %a0@ <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
45302: 9086 subl %d6,%d0 <== NOT EXECUTED 45304: b0aa 0054 cmpl %a2@(84),%d0 <== NOT EXECUTED 45308: 6200 fd64 bhiw 4506e <rtems_termios_read+0x78> <== NOT EXECUTED
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
4530c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 45310: 2042 moveal %d2,%a0 <== NOT EXECUTED 45312: 4e90 jsr %a0@ <== NOT EXECUTED 45314: 588f addql #4,%sp <== NOT EXECUTED 45316: 6080 bras 45298 <rtems_termios_read+0x2a2> <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
break;
}
}
} else {
if (!tty->termios.c_cc[VTIME])
45318: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED 4531c: 6700 fd50 beqw 4506e <rtems_termios_read+0x78> <== NOT EXECUTED
break;
now = rtems_clock_get_ticks_since_boot();
45320: 2243 moveal %d3,%a1 <== NOT EXECUTED 45322: 4e91 jsr %a1@ <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
45324: 9086 subl %d6,%d0 <== NOT EXECUTED 45326: b0aa 0054 cmpl %a2@(84),%d0 <== NOT EXECUTED 4532a: 6200 fd42 bhiw 4506e <rtems_termios_read+0x78> <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
4532e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 45332: 2042 moveal %d2,%a0 <== NOT EXECUTED 45334: 4e90 jsr %a0@ <== NOT EXECUTED 45336: 588f addql #4,%sp <== NOT EXECUTED 45338: 6000 ff5e braw 45298 <rtems_termios_read+0x2a2> <== NOT EXECUTED
000456a6 <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
*/
int
rtems_termios_refill_transmitter (struct rtems_termios_tty *tty)
{
456a6: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 456aa: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 456ae: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int nToSend;
rtems_interrupt_level level;
int len;
/* check for XOF/XON to send */
if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))
456b2: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 456b6: 0280 0000 0403 andil #1027,%d0 <== NOT EXECUTED 456bc: 0c80 0000 0401 cmpil #1025,%d0 <== NOT EXECUTED 456c2: 6700 0140 beqw 45804 <rtems_termios_refill_transmitter+0x15e><== NOT EXECUTED
tty->flow_ctrl |= FL_ISNTXOF;
rtems_interrupt_enable(level);
nToSend = 1;
} else if ((tty->flow_ctrl & (FL_IREQXOF | FL_ISNTXOF)) == FL_ISNTXOF) {
456c6: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 456ca: 7603 moveq #3,%d3 <== NOT EXECUTED 456cc: 7202 moveq #2,%d1 <== NOT EXECUTED 456ce: c083 andl %d3,%d0 <== NOT EXECUTED 456d0: b280 cmpl %d0,%d1 <== NOT EXECUTED 456d2: 6700 0172 beqw 45846 <rtems_termios_refill_transmitter+0x1a0><== NOT EXECUTED
tty->flow_ctrl &= ~FL_ISNTXOF;
rtems_interrupt_enable(level);
nToSend = 1;
} else {
if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {
456d6: 222a 0080 movel %a2@(128),%d1 <== NOT EXECUTED 456da: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED 456de: b081 cmpl %d1,%d0 <== NOT EXECUTED 456e0: 6700 009a beqw 4577c <rtems_termios_refill_transmitter+0xd6><== NOT EXECUTED
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
return 0;
}
rtems_interrupt_disable(level);
456e4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 456ea: 40c2 movew %sr,%d2 <== NOT EXECUTED 456ec: 8082 orl %d2,%d0 <== NOT EXECUTED 456ee: 46c0 movew %d0,%sr <== NOT EXECUTED
len = tty->t_dqlen;
456f0: 222a 0090 movel %a2@(144),%d1 <== NOT EXECUTED
tty->t_dqlen = 0;
456f4: 42aa 0090 clrl %a2@(144) <== NOT EXECUTED
rtems_interrupt_enable(level);
456f8: 46c2 movew %d2,%sr <== NOT EXECUTED
newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;
456fa: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED 456fe: d280 addl %d0,%d1 <== NOT EXECUTED 45700: 202a 0088 movel %a2@(136),%d0 <== NOT EXECUTED 45704: 4c40 1002 remul %d0,%d2,%d1 <== NOT EXECUTED
tty->rawOutBuf.Tail = newTail;
if (tty->rawOutBufState == rob_wait) {
45708: 7002 moveq #2,%d0 <== NOT EXECUTED
len = tty->t_dqlen;
tty->t_dqlen = 0;
rtems_interrupt_enable(level);
newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;
tty->rawOutBuf.Tail = newTail;
4570a: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
if (tty->rawOutBufState == rob_wait) {
4570e: b0aa 0094 cmpl %a2@(148),%d0 <== NOT EXECUTED 45712: 6700 00d8 beqw 457ec <rtems_termios_refill_transmitter+0x146><== NOT EXECUTED
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
if (newTail == tty->rawOutBuf.Head) {
45716: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED 4571a: b480 cmpl %d0,%d2 <== NOT EXECUTED 4571c: 6776 beqs 45794 <rtems_termios_refill_transmitter+0xee><== NOT EXECUTED
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))
4571e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45722: 0280 0000 0210 andil #528,%d0 <== NOT EXECUTED 45728: 0c80 0000 0210 cmpil #528,%d0 <== NOT EXECUTED 4572e: 6700 015a beqw 4588a <rtems_termios_refill_transmitter+0x1e4><== NOT EXECUTED
nToSend = 0;
} else {
/*
* Buffer not empty, start tranmitter
*/
if (newTail > tty->rawOutBuf.Head)
45732: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED 45736: b082 cmpl %d2,%d0 <== NOT EXECUTED 45738: 647c bccs 457b6 <rtems_termios_refill_transmitter+0x110><== NOT EXECUTED
nToSend = tty->rawOutBuf.Size - newTail;
4573a: 262a 0088 movel %a2@(136),%d3 <== NOT EXECUTED 4573e: 9682 subl %d2,%d3 <== NOT EXECUTED
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)) {
45740: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45744: 0280 0000 0600 andil #1536,%d0 <== NOT EXECUTED 4574a: 667c bnes 457c8 <rtems_termios_refill_transmitter+0x122><== NOT EXECUTED 4574c: 2003 movel %d3,%d0 <== NOT EXECUTED
nToSend = 1;
}
tty->rawOutBufState = rob_busy; /*apm*/
4574e: 7201 moveq #1,%d1 <== NOT EXECUTED
(*tty->device.write)(
45750: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45752: 202a 007c movel %a2@(124),%d0 <== NOT EXECUTED 45756: d082 addl %d2,%d0 <== NOT EXECUTED 45758: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4575a: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4575e: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
/* 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*/
45762: 2541 0094 movel %d1,%a2@(148) <== NOT EXECUTED
(*tty->device.write)(
45766: 4e90 jsr %a0@ <== NOT EXECUTED 45768: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
4576c: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
} return nToSend; }
45770: 2003 movel %d3,%d0 <== NOT EXECUTED 45772: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 45778: 4e5e unlk %fp <== NOT EXECUTED 4577a: 4e75 rts <== NOT EXECUTED
} else {
if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {
/*
* buffer was empty
*/
if (tty->rawOutBufState == rob_wait) {
4577c: 7602 moveq #2,%d3 <== NOT EXECUTED 4577e: b6aa 0094 cmpl %a2@(148),%d3 <== NOT EXECUTED 45782: 6700 0130 beqw 458b4 <rtems_termios_refill_transmitter+0x20e><== NOT EXECUTED
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
return 0;
45786: 4283 clrl %d3 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
45788: 2003 movel %d3,%d0 <== NOT EXECUTED 4578a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 45790: 4e5e unlk %fp <== NOT EXECUTED 45792: 4e75 rts <== NOT EXECUTED
nToSend = 0;
/*
* check to see if snd wakeup callback was set
*/
if ( tty->tty_snd.sw_pfn != NULL) {
45794: 206a 00d4 moveal %a2@(212),%a0 <== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
45798: 42aa 0094 clrl %a2@(148) <== NOT EXECUTED
nToSend = 0;
/*
* check to see if snd wakeup callback was set
*/
if ( tty->tty_snd.sw_pfn != NULL) {
4579c: 4a88 tstl %a0 <== NOT EXECUTED 4579e: 6700 012e beqw 458ce <rtems_termios_refill_transmitter+0x228><== NOT EXECUTED
(*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);
457a2: 2f2a 00d8 movel %a2@(216),%sp@- <== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
nToSend = 0;
457a6: 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);
457a8: 486a 0030 pea %a2@(48) <== NOT EXECUTED 457ac: 4e90 jsr %a0@ <== NOT EXECUTED 457ae: 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*/
457b0: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED 457b4: 60ba bras 45770 <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;
457b6: 262a 0080 movel %a2@(128),%d3 <== NOT EXECUTED 457ba: 9682 subl %d2,%d3 <== NOT EXECUTED
/* 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)) {
457bc: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 457c0: 0280 0000 0600 andil #1536,%d0 <== NOT EXECUTED 457c6: 6784 beqs 4574c <rtems_termios_refill_transmitter+0xa6><== NOT EXECUTED 457c8: 7001 moveq #1,%d0 <== NOT EXECUTED
nToSend = 1;
}
tty->rawOutBufState = rob_busy; /*apm*/
457ca: 7201 moveq #1,%d1 <== NOT EXECUTED
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;
457cc: 7601 moveq #1,%d3 <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
457ce: 2f00 movel %d0,%sp@- <== NOT EXECUTED 457d0: 202a 007c movel %a2@(124),%d0 <== NOT EXECUTED 457d4: d082 addl %d2,%d0 <== NOT EXECUTED 457d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 457d8: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 457dc: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
/* 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*/
457e0: 2541 0094 movel %d1,%a2@(148) <== NOT EXECUTED
(*tty->device.write)(
457e4: 4e90 jsr %a0@ <== NOT EXECUTED 457e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 457ea: 6080 bras 4576c <rtems_termios_refill_transmitter+0xc6><== NOT EXECUTED
tty->rawOutBuf.Tail = newTail;
if (tty->rawOutBufState == rob_wait) {
/*
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
457ec: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED 457f0: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
}
if (newTail == tty->rawOutBuf.Head) {
457f6: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED
tty->rawOutBuf.Tail = newTail;
if (tty->rawOutBufState == rob_wait) {
/*
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
457fa: 588f addql #4,%sp <== NOT EXECUTED
}
if (newTail == tty->rawOutBuf.Head) {
457fc: b480 cmpl %d0,%d2 <== NOT EXECUTED 457fe: 6600 ff1e bnew 4571e <rtems_termios_refill_transmitter+0x78><== NOT EXECUTED 45802: 6090 bras 45794 <rtems_termios_refill_transmitter+0xee><== NOT EXECUTED
/* 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);
45804: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 45808: 486a 004a pea %a2@(74) <== NOT EXECUTED 4580c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 45810: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED 45814: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_interrupt_disable(level);
45816: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4581c: 40c1 movew %sr,%d1 <== NOT EXECUTED 4581e: 8081 orl %d1,%d0 <== NOT EXECUTED 45820: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->t_dqlen--;
tty->flow_ctrl |= FL_ISNTXOF;
45822: 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--;
45824: 53aa 0090 subql #1,%a2@(144) <== NOT EXECUTED
tty->flow_ctrl |= FL_ISNTXOF;
45828: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 4582c: 8082 orl %d2,%d0 <== NOT EXECUTED 4582e: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
rtems_interrupt_enable(level);
45832: 46c1 movew %d1,%sr <== NOT EXECUTED
nToSend = 1;
45834: 7601 moveq #1,%d3 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
45836: 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);
45838: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
4583c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 45842: 4e5e unlk %fp <== NOT EXECUTED 45844: 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);
45846: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4584a: 486a 0049 pea %a2@(73) <== NOT EXECUTED 4584e: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 45852: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED 45856: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_interrupt_disable(level);
45858: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4585e: 40c1 movew %sr,%d1 <== NOT EXECUTED 45860: 8081 orl %d1,%d0 <== NOT EXECUTED 45862: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->t_dqlen--;
tty->flow_ctrl &= ~FL_ISNTXOF;
45864: 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--;
45866: 53aa 0090 subql #1,%a2@(144) <== NOT EXECUTED
tty->flow_ctrl &= ~FL_ISNTXOF;
4586a: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 4586e: c082 andl %d2,%d0 <== NOT EXECUTED 45870: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
rtems_interrupt_enable(level);
45874: 46c1 movew %d1,%sr <== NOT EXECUTED
nToSend = 1;
45876: 163c 0001 moveb #1,%d3 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
4587a: 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);
4587c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
45880: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 45886: 4e5e unlk %fp <== NOT EXECUTED 45888: 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);
4588a: 303c 0700 movew #1792,%d0 <== NOT EXECUTED 4588e: 40c1 movew %sr,%d1 <== NOT EXECUTED 45890: 8081 orl %d1,%d0 <== NOT EXECUTED 45892: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl |= FL_OSTOP;
45894: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED 45898: 7620 moveq #32,%d3 <== NOT EXECUTED 4589a: 8083 orl %d3,%d0 <== NOT EXECUTED
tty->rawOutBufState = rob_busy; /*apm*/
4589c: 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;
458a0: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
tty->rawOutBufState = rob_busy; /*apm*/
458a4: 2543 0094 movel %d3,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable(level);
458a8: 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*/
458aa: 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;
458ae: 4203 clrb %d3 <== NOT EXECUTED 458b0: 6000 febe braw 45770 <rtems_termios_refill_transmitter+0xca><== NOT EXECUTED
*/
if (tty->rawOutBufState == rob_wait) {
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
458b4: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
}
return 0;
458b8: 4203 clrb %d3 <== NOT EXECUTED
*/
if (tty->rawOutBufState == rob_wait) {
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
458ba: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 458c0: 588f addql #4,%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
458c2: 2003 movel %d3,%d0 <== NOT EXECUTED 458c4: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 458ca: 4e5e unlk %fp <== NOT EXECUTED 458cc: 4e75 rts <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
458ce: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
nToSend = 0;
458d2: 4283 clrl %d3 <== NOT EXECUTED 458d4: 6000 fe9a braw 45770 <rtems_termios_refill_transmitter+0xca><== NOT EXECUTED
0004560a <rtems_termios_rxdaemon>:
/*
* this task actually processes any receive events
*/
static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument)
{
4560a: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4560e: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 45612: 240e movel %fp,%d2 <== NOT EXECUTED 45614: 260e movel %fp,%d3 <== NOT EXECUTED 45616: 5d82 subql #6,%d2 <== NOT EXECUTED 45618: 47f9 0004 5dc0 lea 45dc0 <rtems_event_receive>,%a3 <== NOT EXECUTED 4561e: 49f9 0004 67b8 lea 467b8 <rtems_task_delete>,%a4 <== NOT EXECUTED 45624: 5383 subql #1,%d3 <== NOT EXECUTED 45626: 4bf9 0004 5358 lea 45358 <rtems_termios_enqueue_raw_characters>,%a5<== NOT EXECUTED 4562c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
45630: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45632: 42a7 clrl %sp@- <== NOT EXECUTED 45634: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 45638: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 4563c: 4e93 jsr %a3@ <== NOT EXECUTED
(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) {
4563e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 45642: 7001 moveq #1,%d0 <== NOT EXECUTED 45644: c0ae fffa andl %fp@(-6),%d0 <== NOT EXECUTED 45648: 663e bnes 45688 <rtems_termios_rxdaemon+0x7e> <== NOT EXECUTED
}
/*
* do something
*/
c = tty->device.pollRead(tty->minor);
4564a: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4564e: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED 45652: 4e90 jsr %a0@ <== NOT EXECUTED
if (c != EOF) {
45654: 588f addql #4,%sp <== NOT EXECUTED 45656: 72ff moveq #-1,%d1 <== NOT EXECUTED 45658: b280 cmpl %d0,%d1 <== NOT EXECUTED 4565a: 67d4 beqs 45630 <rtems_termios_rxdaemon+0x26> <== NOT EXECUTED
/*
* pollRead did call enqueue on its own
*/
c_buf = c;
rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);
4565c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
c = tty->device.pollRead(tty->minor);
if (c != EOF) {
/*
* pollRead did call enqueue on its own
*/
c_buf = c;
45660: 1d40 ffff moveb %d0,%fp@(-1) <== NOT EXECUTED
rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);
45664: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45666: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45668: 4e95 jsr %a5@ <== NOT EXECUTED 4566a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
4566e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45670: 42a7 clrl %sp@- <== NOT EXECUTED 45672: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 45676: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 4567a: 4e93 jsr %a3@ <== NOT EXECUTED
(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) {
4567c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 45680: 7001 moveq #1,%d0 <== NOT EXECUTED 45682: c0ae fffa andl %fp@(-6),%d0 <== NOT EXECUTED 45686: 67c2 beqs 4564a <rtems_termios_rxdaemon+0x40> <== NOT EXECUTED
tty->rxTaskId = 0;
45688: 42aa 00c4 clrl %a2@(196) <== NOT EXECUTED
rtems_task_delete(RTEMS_SELF);
4568c: 42a7 clrl %sp@- <== NOT EXECUTED 4568e: 4e94 jsr %a4@ <== NOT EXECUTED 45690: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* do something
*/
c = tty->device.pollRead(tty->minor);
45692: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 45696: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED 4569a: 4e90 jsr %a0@ <== NOT EXECUTED
if (c != EOF) {
4569c: 588f addql #4,%sp <== NOT EXECUTED 4569e: 72ff moveq #-1,%d1 <== NOT EXECUTED 456a0: b280 cmpl %d0,%d1 <== NOT EXECUTED 456a2: 678c beqs 45630 <rtems_termios_rxdaemon+0x26> <== NOT EXECUTED 456a4: 60b6 bras 4565c <rtems_termios_rxdaemon+0x52> <== NOT EXECUTED
0004533c <rtems_termios_rxirq_occured>:
* signal receive interrupt to rx daemon
* NOTE: This routine runs in the context of the
* device receive interrupt handler.
*/
void rtems_termios_rxirq_occured(struct rtems_termios_tty *tty)
{
4533c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* * send event to rx daemon task */ rtems_event_send(tty->rxTaskId,TERMIOS_RX_PROC_EVENT);
45340: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45344: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 45348: 2f28 00c4 movel %a0@(196),%sp@- <== NOT EXECUTED 4534c: 4eb9 0004 5f68 jsr 45f68 <rtems_event_send> <== NOT EXECUTED 45352: 508f addql #8,%sp <== NOT EXECUTED
}
45354: 4e5e unlk %fp <== NOT EXECUTED
00047680 <rtems_termios_set_initial_baud>:
int rtems_termios_set_initial_baud(
struct rtems_termios_tty *ttyp,
int32_t baud
)
{
47680: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47684: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47686: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4768a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int cflags_baud;
cflags_baud = rtems_termios_number_to_baud(baud);
4768c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47690: 4eb9 0004 5960 jsr 45960 <rtems_termios_number_to_baud> <== NOT EXECUTED
if ( cflags_baud == -1 )
47696: 588f addql #4,%sp <== NOT EXECUTED 47698: 72ff moveq #-1,%d1 <== NOT EXECUTED 4769a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4769c: 6720 beqs 476be <rtems_termios_set_initial_baud+0x3e><== NOT EXECUTED
return -1;
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
4769e: 242a 0038 movel %a2@(56),%d2 <== NOT EXECUTED
return 0;
476a2: 4281 clrl %d1 <== NOT EXECUTED
cflags_baud = rtems_termios_number_to_baud(baud);
if ( cflags_baud == -1 )
return -1;
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
476a4: 0282 ffff eff0 andil #-4112,%d2 <== NOT EXECUTED 476aa: 8082 orl %d2,%d0 <== NOT EXECUTED
return 0;
}
476ac: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
cflags_baud = rtems_termios_number_to_baud(baud);
if ( cflags_baud == -1 )
return -1;
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
476b0: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
return 0;
}
476b4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 476b8: 2001 movel %d1,%d0 <== NOT EXECUTED 476ba: 4e5e unlk %fp <== NOT EXECUTED 476bc: 4e75 rts <== NOT EXECUTED 476be: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
{
int cflags_baud;
cflags_baud = rtems_termios_number_to_baud(baud);
if ( cflags_baud == -1 )
return -1;
476c2: 72ff moveq #-1,%d1 <== NOT EXECUTED
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
return 0;
}
476c4: 2001 movel %d1,%d0 <== NOT EXECUTED 476c6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 476ca: 4e5e unlk %fp <== NOT EXECUTED
...
000458d8 <rtems_termios_txdaemon>:
/*
* this task actually processes any transmit events
*/
static rtems_task rtems_termios_txdaemon(rtems_task_argument argument)
{
458d8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 458dc: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 458e0: 240e movel %fp,%d2 <== NOT EXECUTED 458e2: 5982 subql #4,%d2 <== NOT EXECUTED 458e4: 49f9 0004 5dc0 lea 45dc0 <rtems_event_receive>,%a4 <== NOT EXECUTED 458ea: 4bf9 0004 67b8 lea 467b8 <rtems_task_delete>,%a5 <== NOT EXECUTED 458f0: 47f9 0004 56a6 lea 456a6 <rtems_termios_refill_transmitter>,%a3<== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
458f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* this task actually processes any transmit events
*/
static rtems_task rtems_termios_txdaemon(rtems_task_argument argument)
{
458f8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
458fc: 42a7 clrl %sp@- <== NOT EXECUTED 458fe: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 45902: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 45906: 4e94 jsr %a4@ <== NOT EXECUTED
(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) {
45908: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4590c: 7001 moveq #1,%d0 <== NOT EXECUTED 4590e: c0ae fffc andl %fp@(-4),%d0 <== NOT EXECUTED 45912: 663a bnes 4594e <rtems_termios_txdaemon+0x76> <== NOT EXECUTED
}
/*
* call any line discipline start function
*/
if (rtems_termios_linesw[tty->t_line].l_start != NULL) {
45914: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED 45918: eb88 lsll #5,%d0 <== NOT EXECUTED 4591a: 0680 0005 f350 addil #389968,%d0 <== NOT EXECUTED 45920: 2240 moveal %d0,%a1 <== NOT EXECUTED 45922: 2051 moveal %a1@,%a0 <== NOT EXECUTED 45924: 4a88 tstl %a0 <== NOT EXECUTED 45926: 6706 beqs 4592e <rtems_termios_txdaemon+0x56> <== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_start(tty);
45928: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4592a: 4e90 jsr %a0@ <== NOT EXECUTED 4592c: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* try to push further characters to device
*/
rtems_termios_refill_transmitter(tty);
4592e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45930: 4e93 jsr %a3@ <== NOT EXECUTED
}
45932: 588f addql #4,%sp <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
45934: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45936: 42a7 clrl %sp@- <== NOT EXECUTED 45938: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 4593c: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 45940: 4e94 jsr %a4@ <== NOT EXECUTED
(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) {
45942: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 45946: 7001 moveq #1,%d0 <== NOT EXECUTED 45948: c0ae fffc andl %fp@(-4),%d0 <== NOT EXECUTED 4594c: 67c6 beqs 45914 <rtems_termios_txdaemon+0x3c> <== NOT EXECUTED
tty->txTaskId = 0;
4594e: 42aa 00c8 clrl %a2@(200) <== NOT EXECUTED
rtems_task_delete(RTEMS_SELF);
45952: 42a7 clrl %sp@- <== NOT EXECUTED 45954: 4e95 jsr %a5@ <== NOT EXECUTED 45956: 588f addql #4,%sp <== NOT EXECUTED 45958: 60ba bras 45914 <rtems_termios_txdaemon+0x3c> <== NOT EXECUTED
00044f20 <rtems_termios_write>:
rtems_termios_puts (&c, 1, tty);
}
rtems_status_code
rtems_termios_write (void *arg)
{
44f20: 4e56 ffe8 linkw %fp,#-24 44f24: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ 44f28: 266e 0008 moveal %fp@(8),%a3
rtems_libio_rw_args_t *args = arg; struct rtems_termios_tty *tty = args->iop->data1;
44f2c: 2053 moveal %a3@,%a0 44f2e: 2468 0034 moveal %a0@(52),%a2
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
44f32: 42a7 clrl %sp@- 44f34: 42a7 clrl %sp@- 44f36: 2f2a 0018 movel %a2@(24),%sp@- 44f3a: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain>
if (sc != RTEMS_SUCCESSFUL)
44f40: 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);
44f44: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL)
44f46: 662a bnes 44f72 <rtems_termios_write+0x52> <== NEVER TAKEN
return sc;
if (rtems_termios_linesw[tty->t_line].l_write != NULL) {
44f48: 202a 00cc movel %a2@(204),%d0 44f4c: eb88 lsll #5,%d0 44f4e: 0680 0005 f348 addil #389960,%d0 44f54: 2240 moveal %d0,%a1 44f56: 2051 moveal %a1@,%a0 44f58: 4a88 tstl %a0
44f5a: 6722 beqs 44f7e <rtems_termios_write+0x5e> <== ALWAYS TAKEN
sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);
44f5c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44f5e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44f60: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44f62: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
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);
44f66: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44f68: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
44f6e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_termios_puts (args->buffer, args->count, tty);
args->bytes_moved = args->count;
}
rtems_semaphore_release (tty->osem);
return sc;
}
44f72: 2002 movel %d2,%d0 <== NOT EXECUTED 44f74: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 44f7a: 4e5e unlk %fp <== NOT EXECUTED 44f7c: 4e75 rts <== NOT EXECUTED
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) {
44f7e: 7001 moveq #1,%d0 44f80: c0aa 0034 andl %a2@(52),%d0
44f84: 6740 beqs 44fc6 <rtems_termios_write+0xa6> <== NEVER TAKEN
uint32_t count = args->count;
44f86: 262b 0010 movel %a3@(16),%d3
char *buffer = args->buffer;
44f8a: 286b 000c moveal %a3@(12),%a4
while (count--)
44f8e: 675e beqs 44fee <rtems_termios_write+0xce> <== NEVER TAKEN
44f90: 4bfa f8a8 lea %pc@(4483a <oproc>),%a5
oproc (*buffer++, tty);
44f94: 4280 clrl %d0 44f96: 101c moveb %a4@+,%d0 44f98: 5383 subql #1,%d3 44f9a: 2f0a movel %a2,%sp@- 44f9c: 2f00 movel %d0,%sp@- 44f9e: 4e95 jsr %a5@
return sc;
}
if (tty->termios.c_oflag & OPOST) {
uint32_t count = args->count;
char *buffer = args->buffer;
while (count--)
44fa0: 508f addql #8,%sp <== NOT EXECUTED 44fa2: 4a83 tstl %d3 <== NOT EXECUTED 44fa4: 66ee bnes 44f94 <rtems_termios_write+0x74> <== NOT EXECUTED 44fa6: 202b 0010 movel %a3@(16),%d0 <== NOT EXECUTED
oproc (*buffer++, tty);
args->bytes_moved = args->count;
44faa: 2740 0018 movel %d0,%a3@(24) <== NOT EXECUTED
} else {
rtems_termios_puts (args->buffer, args->count, tty);
args->bytes_moved = args->count;
}
rtems_semaphore_release (tty->osem);
44fae: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 44fb2: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
44fb8: 588f addql #4,%sp <== NOT EXECUTED
}
44fba: 2002 movel %d2,%d0 <== NOT EXECUTED 44fbc: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 44fc2: 4e5e unlk %fp <== NOT EXECUTED 44fc4: 4e75 rts <== NOT EXECUTED
char *buffer = args->buffer;
while (count--)
oproc (*buffer++, tty);
args->bytes_moved = args->count;
} else {
rtems_termios_puts (args->buffer, args->count, tty);
44fc6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44fc8: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED 44fcc: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED 44fd0: 4eb9 0004 4736 jsr 44736 <rtems_termios_puts> <== NOT EXECUTED
args->bytes_moved = args->count;
44fd6: 276b 0010 0018 movel %a3@(16),%a3@(24) <== NOT EXECUTED 44fdc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
} rtems_semaphore_release (tty->osem);
44fe0: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 44fe4: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
44fea: 588f addql #4,%sp <== NOT EXECUTED 44fec: 60cc bras 44fba <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--)
44fee: 4280 clrl %d0 <== NOT EXECUTED
oproc (*buffer++, tty);
args->bytes_moved = args->count;
44ff0: 2740 0018 movel %d0,%a3@(24) <== NOT EXECUTED 44ff4: 60b8 bras 44fae <rtems_termios_write+0x8e> <== NOT EXECUTED
0005896c <rtems_timer_cancel>:
*/
rtems_status_code rtems_timer_cancel(
rtems_id id
)
{
5896c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
58970: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58974: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58978: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 5897e: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58984: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58988: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5898c: 6706 beqs 58994 <rtems_timer_cancel+0x28> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5898e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58990: 4e5e unlk %fp <== NOT EXECUTED 58992: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Timer_Is_dormant_class( the_timer->the_class ) )
58994: 7204 moveq #4,%d1 <== NOT EXECUTED 58996: 2040 moveal %d0,%a0 <== NOT EXECUTED 58998: b2a8 0038 cmpl %a0@(56),%d1 <== NOT EXECUTED 5899c: 670c beqs 589aa <rtems_timer_cancel+0x3e> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
5899e: 4868 0010 pea %a0@(16) <== NOT EXECUTED 589a2: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED 589a8: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
589aa: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
589b0: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
589b2: 4e5e unlk %fp <== NOT EXECUTED
...
00046c88 <rtems_timer_create>:
rtems_status_code rtems_timer_create(
rtems_name name,
rtems_id *id
)
{
46c88: 4e56 fff4 linkw %fp,#-12 46c8c: 48d7 040c moveml %d2-%d3/%a2,%sp@ 46c90: 242e 0008 movel %fp@(8),%d2 46c94: 246e 000c moveal %fp@(12),%a2
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
46c98: 6768 beqs 46d02 <rtems_timer_create+0x7a> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
46c9a: 4a8a tstl %a2 46c9c: 6700 0082 beqw 46d20 <rtems_timer_create+0x98> 46ca0: 2039 0006 0000 movel 60000 <_Thread_Dispatch_disable_level>,%d0 46ca6: 5280 addql #1,%d0 46ca8: 23c0 0006 0000 movel %d0,60000 <_Thread_Dispatch_disable_level>
* This function allocates a timer control block from
* the inactive chain of free timer control blocks.
*/
RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Allocate( void )
{
return (Timer_Control *) _Objects_Allocate( &_Timer_Information );
46cae: 4879 0006 0842 pea 60842 <_Timer_Information> 46cb4: 4eb9 0004 7cb0 jsr 47cb0 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
46cba: 588f addql #4,%sp 46cbc: 2040 moveal %d0,%a0 46cbe: 4a80 tstl %d0
46cc0: 674c beqs 46d0e <rtems_timer_create+0x86> <== NEVER TAKEN
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46cc2: 2028 0008 movel %a0@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46cc6: 4281 clrl %d1
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_timer->the_class = TIMER_DORMANT;
46cc8: 7604 moveq #4,%d3
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46cca: 2279 0006 085a moveal 6085a <_Timer_Information+0x18>,%a1
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46cd0: 3200 movew %d0,%d1 46cd2: 2143 0038 movel %d3,%a0@(56)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46cd6: 42a8 0018 clrl %a0@(24)
the_watchdog->routine = routine;
46cda: 42a8 002c clrl %a0@(44)
the_watchdog->id = id;
46cde: 42a8 0030 clrl %a0@(48)
the_watchdog->user_data = user_data;
46ce2: 42a8 0034 clrl %a0@(52)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46ce6: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
46cea: 2142 000c movel %d2,%a0@(12)
&_Timer_Information,
&the_timer->Object,
(Objects_Name) name
);
*id = the_timer->Object.id;
46cee: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
46cf0: 4eb9 0004 89fe jsr 489fe <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL; }
46cf6: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
(Objects_Name) name
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46cfc: 4280 clrl %d0
}
46cfe: 4e5e unlk %fp 46d00: 4e75 rts
)
{
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
46d02: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d04: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46d0a: 4e5e unlk %fp <== NOT EXECUTED 46d0c: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
_Thread_Enable_dispatch();
46d0e: 4eb9 0004 89fe jsr 489fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
46d14: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d16: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46d1c: 4e5e unlk %fp <== NOT EXECUTED 46d1e: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
46d20: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d22: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46d28: 4e5e unlk %fp <== NOT EXECUTED
00058a5c <rtems_timer_delete>:
*/
rtems_status_code rtems_timer_delete(
rtems_id id
)
{
58a5c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 58a60: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
58a62: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58a66: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58a6a: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58a70: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58a76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58a7a: 2440 moveal %d0,%a2 <== NOT EXECUTED 58a7c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58a80: 663a bnes 58abc <rtems_timer_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Timer_Information, &the_timer->Object );
58a82: 2f00 movel %d0,%sp@- <== NOT EXECUTED 58a84: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58a8a: 4eb9 0005 b504 jsr 5b504 <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
58a90: 486a 0010 pea %a2@(16) <== NOT EXECUTED 58a94: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Timer_Free (
Timer_Control *the_timer
)
{
_Objects_Free( &_Timer_Information, &the_timer->Object );
58a9a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58a9c: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58aa2: 4eb9 0005 b7c8 jsr 5b7c8 <_Objects_Free> <== NOT EXECUTED
_Timer_Free( the_timer );
_Thread_Enable_dispatch();
58aa8: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58aae: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Timer_Information, &the_timer->Object );
(void) _Watchdog_Remove( &the_timer->Ticker );
_Timer_Free( the_timer );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
58ab2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 58ab6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ab8: 4e5e unlk %fp <== NOT EXECUTED 58aba: 4e75 rts <== NOT EXECUTED 58abc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58ac0: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58ac2: 4e5e unlk %fp <== NOT EXECUTED
...
00046d2c <rtems_timer_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
46d2c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 46d30: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 46d34: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 46d38: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 46d3c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
46d40: 4a82 tstl %d2 <== NOT EXECUTED 46d42: 6700 0094 beqw 46dd8 <rtems_timer_fire_after+0xac> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( !routine )
46d46: 4a83 tstl %d3 <== NOT EXECUTED 46d48: 6700 00ae beqw 46df8 <rtems_timer_fire_after+0xcc> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
46d4c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46d50: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46d52: 4879 0006 0842 pea 60842 <_Timer_Information> <== NOT EXECUTED 46d58: 4eb9 0004 8170 jsr 48170 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
46d5e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46d62: 2440 moveal %d0,%a2 <== NOT EXECUTED 46d64: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46d68: 6662 bnes 46dcc <rtems_timer_fire_after+0xa0> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
46d6a: 2a00 movel %d0,%d5 <== NOT EXECUTED 46d6c: 0685 0000 0010 addil #16,%d5 <== NOT EXECUTED 46d72: 2f05 movel %d5,%sp@- <== NOT EXECUTED 46d74: 4eb9 0004 9d4c jsr 49d4c <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
46d7a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 46d80: 40c1 movew %sr,%d1 <== NOT EXECUTED 46d82: 8081 orl %d1,%d0 <== NOT EXECUTED 46d84: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) {
46d86: 588f addql #4,%sp <== NOT EXECUTED 46d88: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 46d8c: 6656 bnes 46de4 <rtems_timer_fire_after+0xb8> <== NOT EXECUTED
/*
* OK. Now we now the timer was not rescheduled by an interrupt
* so we can atomically initialize it as in use.
*/
the_timer->the_class = TIMER_INTERVAL;
46d8e: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED 46d92: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46d98: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
46d9c: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
46da0: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_ISR_Enable( level );
46da4: 46c1 movew %d1,%sr <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46da6: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46daa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 46dac: 4879 0006 00c2 pea 600c2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 46db2: 4eb9 0004 9c04 jsr 49c04 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_timer->Ticker, ticks );
_Thread_Enable_dispatch();
46db8: 4eb9 0004 89fe jsr 489fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46dbe: 508f addql #8,%sp <== NOT EXECUTED 46dc0: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46dc2: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46dc8: 4e5e unlk %fp <== NOT EXECUTED 46dca: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46dcc: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46dce: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46dd4: 4e5e unlk %fp <== NOT EXECUTED 46dd6: 4e75 rts <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
46dd8: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46dda: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46de0: 4e5e unlk %fp <== NOT EXECUTED 46de2: 4e75 rts <== NOT EXECUTED
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
46de4: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
46de6: 4eb9 0004 89fe jsr 489fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46dec: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46dee: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46df4: 4e5e unlk %fp <== NOT EXECUTED 46df6: 4e75 rts <== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
46df8: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46dfa: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46e00: 4e5e unlk %fp <== NOT EXECUTED
00058ba0 <rtems_timer_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58ba0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 58ba4: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 58ba8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 58bac: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
if ( !_TOD_Is_set )
58bb0: 4a39 0007 eb80 tstb 7eb80 <_TOD_Is_set> <== NOT EXECUTED 58bb6: 660c bnes 58bc4 <rtems_timer_fire_when+0x24> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
58bb8: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58bba: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58bc0: 4e5e unlk %fp <== NOT EXECUTED 58bc2: 4e75 rts <== NOT EXECUTED
rtems_interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !_TOD_Validate( wall_time ) )
58bc4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58bc6: 4eb9 0005 5bf0 jsr 55bf0 <_TOD_Validate> <== NOT EXECUTED 58bcc: 588f addql #4,%sp <== NOT EXECUTED 58bce: 4a00 tstb %d0 <== NOT EXECUTED 58bd0: 671a beqs 58bec <rtems_timer_fire_when+0x4c> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
58bd2: 4a83 tstl %d3 <== NOT EXECUTED 58bd4: 6700 00a8 beqw 58c7e <rtems_timer_fire_when+0xde> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
58bd8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58bda: 4eb9 0005 5ae8 jsr 55ae8 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58be0: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
58be2: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58be4: b0b9 0007 ebfa cmpl 7ebfa <_TOD_Now>,%d0 <== NOT EXECUTED 58bea: 620c bhis 58bf8 <rtems_timer_fire_when+0x58> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
58bec: 7014 moveq #20,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58bee: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58bf4: 4e5e unlk %fp <== NOT EXECUTED 58bf6: 4e75 rts <== NOT EXECUTED 58bf8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58bfc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58c00: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58c06: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
seconds = _TOD_To_seconds( wall_time );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58c0c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58c10: 2440 moveal %d0,%a2 <== NOT EXECUTED 58c12: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58c16: 665a bnes 58c72 <rtems_timer_fire_when+0xd2> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58c18: 2800 movel %d0,%d4 <== NOT EXECUTED 58c1a: 0684 0000 0010 addil #16,%d4 <== NOT EXECUTED 58c20: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58c22: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
58c28: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY;
58c2e: 7002 moveq #2,%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
58c30: 94b9 0007 ebfa subl 7ebfa <_TOD_Now>,%d2 <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
the_timer->the_class = TIMER_TIME_OF_DAY;
58c36: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
58c3a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
58c3e: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED 58c42: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58c46: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58c4a: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
58c4e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58c50: 4879 0007 ec26 pea 7ec26 <_Watchdog_Seconds_chain> <== NOT EXECUTED 58c56: 4eb9 0005 d78c jsr 5d78c <_Watchdog_Insert> <== NOT EXECUTED
&the_timer->Ticker,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
58c5c: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58c62: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58c66: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58c68: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c6e: 4e5e unlk %fp <== NOT EXECUTED 58c70: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58c72: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58c74: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c7a: 4e5e unlk %fp <== NOT EXECUTED 58c7c: 4e75 rts <== NOT EXECUTED
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58c7e: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58c80: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c86: 4e5e unlk %fp <== NOT EXECUTED
...
00058c8c <rtems_timer_get_information>:
rtems_status_code rtems_timer_get_information(
rtems_id id,
rtems_timer_information *the_info
)
{
58c8c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 58c90: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58c92: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
58c96: 4a8a tstl %a2 <== NOT EXECUTED 58c98: 6752 beqs 58cec <rtems_timer_get_information+0x60><== NOT EXECUTED 58c9a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58c9e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58ca2: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58ca8: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58cae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58cb2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58cb6: 662a bnes 58ce2 <rtems_timer_get_information+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
the_info->the_class = the_timer->the_class;
58cb8: 2040 moveal %d0,%a0 <== NOT EXECUTED 58cba: 24a8 0038 movel %a0@(56),%a2@ <== NOT EXECUTED
the_info->initial = the_timer->Ticker.initial;
58cbe: 41e8 001c lea %a0@(28),%a0 <== NOT EXECUTED 58cc2: 2550 0004 movel %a0@,%a2@(4) <== NOT EXECUTED
the_info->start_time = the_timer->Ticker.start_time;
58cc6: 5088 addql #8,%a0 <== NOT EXECUTED 58cc8: 2550 0008 movel %a0@,%a2@(8) <== NOT EXECUTED
the_info->stop_time = the_timer->Ticker.stop_time;
58ccc: 5888 addql #4,%a0 <== NOT EXECUTED 58cce: 2550 000c movel %a0@,%a2@(12) <== NOT EXECUTED
_Thread_Enable_dispatch();
58cd2: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58cd8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
the_info->the_class = the_timer->the_class;
the_info->initial = the_timer->Ticker.initial;
the_info->start_time = the_timer->Ticker.start_time;
the_info->stop_time = the_timer->Ticker.stop_time;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
58cdc: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58cde: 4e5e unlk %fp <== NOT EXECUTED 58ce0: 4e75 rts <== NOT EXECUTED 58ce2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58ce6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58ce8: 4e5e unlk %fp <== NOT EXECUTED 58cea: 4e75 rts <== NOT EXECUTED 58cec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
58cf0: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58cf2: 4e5e unlk %fp <== NOT EXECUTED
...
00058cf8 <rtems_timer_ident>:
rtems_status_code rtems_timer_ident(
rtems_name name,
rtems_id *id
)
{
58cf8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
58cfc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 58d00: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 58d06: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58d0a: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58d10: 4eb9 0005 bb20 jsr 5bb20 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
58d16: 41f9 0007 7f68 lea 77f68 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
58d1c: 4e5e unlk %fp <== NOT EXECUTED 58d1e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00059420 <rtems_timer_initiate_server>:
rtems_status_code rtems_timer_initiate_server(
uint32_t priority,
uint32_t stack_size,
rtems_attribute attribute_set
)
{
59420: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 59424: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 59428: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5942a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5942c: 4a80 tstl %d0 <== NOT EXECUTED 5942e: 6748 beqs 59478 <rtems_timer_initiate_server+0x58><== NOT EXECUTED
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
59430: 4281 clrl %d1 <== NOT EXECUTED 59432: 1239 0007 8f12 moveb 78f12 <rtems_maximum_priority>,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
59438: b280 cmpl %d0,%d1 <== NOT EXECUTED 5943a: 644a bccs 59486 <rtems_timer_initiate_server+0x66><== NOT EXECUTED
* structured so we check it is invalid before looking for
* a specific invalid value as the default.
*/
_priority = priority;
if ( !_RTEMS_tasks_Priority_is_valid( priority ) ) {
if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY )
5943c: 72ff moveq #-1,%d1 <== NOT EXECUTED 5943e: b280 cmpl %d0,%d1 <== NOT EXECUTED 59440: 6636 bnes 59478 <rtems_timer_initiate_server+0x58><== NOT EXECUTED 59442: 2239 0007 eb70 movel 7eb70 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 59448: 5281 addql #1,%d1 <== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
_priority = 0;
5944a: 4283 clrl %d3 <== NOT EXECUTED 5944c: 23c1 0007 eb70 movel %d1,7eb70 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
initialized = true;
59452: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
59454: 1439 0007 a04a moveb 7a04a <initialized.3589>,%d2 <== NOT EXECUTED
initialized = true;
5945a: 13c0 0007 a04a moveb %d0,7a04a <initialized.3589> <== NOT EXECUTED
_Thread_Enable_dispatch();
59460: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
59466: 4a02 tstb %d2 <== NOT EXECUTED 59468: 6744 beqs 594ae <rtems_timer_initiate_server+0x8e><== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
5946a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
tmpInitialized = initialized;
initialized = true;
_Thread_Enable_dispatch();
if ( tmpInitialized )
return RTEMS_INCORRECT_STATE;
5946e: 700e moveq #14,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59470: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 59474: 4e5e unlk %fp <== NOT EXECUTED 59476: 4e75 rts <== NOT EXECUTED 59478: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
* a specific invalid value as the default.
*/
_priority = priority;
if ( !_RTEMS_tasks_Priority_is_valid( priority ) ) {
if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY )
return RTEMS_INVALID_PRIORITY;
5947c: 7013 moveq #19,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
5947e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 59482: 4e5e unlk %fp <== NOT EXECUTED 59484: 4e75 rts <== NOT EXECUTED 59486: 2239 0007 eb70 movel 7eb70 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 5948c: 5281 addql #1,%d1 <== NOT EXECUTED 5948e: 2600 movel %d0,%d3 <== NOT EXECUTED 59490: 23c1 0007 eb70 movel %d1,7eb70 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
initialized = true;
59496: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
59498: 1439 0007 a04a moveb 7a04a <initialized.3589>,%d2 <== NOT EXECUTED
initialized = true;
5949e: 13c0 0007 a04a moveb %d0,7a04a <initialized.3589> <== NOT EXECUTED
_Thread_Enable_dispatch();
594a4: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
594aa: 4a02 tstb %d2 <== NOT EXECUTED 594ac: 66bc bnes 5946a <rtems_timer_initiate_server+0x4a><== NOT EXECUTED
* other library rules. For example, if using a TSR written in Ada the * Server should run at the same priority as the priority Ada task. * Otherwise, the priority ceiling for the mutex used to protect the * GNAT run-time is violated. */ status = rtems_task_create(
594ae: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 594b2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 594b6: 08c1 000f bset #15,%d1 <== NOT EXECUTED 594ba: 2f01 movel %d1,%sp@- <== NOT EXECUTED 594bc: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 594c0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 594c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 594c6: 2f3c 5449 4d45 movel #1414090053,%sp@- <== NOT EXECUTED 594cc: 4eb9 0005 8048 jsr 58048 <rtems_task_create> <== NOT EXECUTED
/* user may want floating point but we need */
/* system task specified for 0 priority */
attribute_set | RTEMS_SYSTEM_TASK,
&id /* get the id back */
);
if (status) {
594d2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 594d6: 4a80 tstl %d0 <== NOT EXECUTED 594d8: 6714 beqs 594ee <rtems_timer_initiate_server+0xce><== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594da: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
/* system task specified for 0 priority */
attribute_set | RTEMS_SYSTEM_TASK,
&id /* get the id back */
);
if (status) {
initialized = false;
594de: 4201 clrb %d1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594e0: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 594e4: 4e5e unlk %fp <== NOT EXECUTED
/* system task specified for 0 priority */
attribute_set | RTEMS_SYSTEM_TASK,
&id /* get the id back */
);
if (status) {
initialized = false;
594e6: 13c1 0007 a04a moveb %d1,7a04a <initialized.3589> <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594ec: 4e75 rts <== NOT EXECUTED
* We work with the TCB pointer, not the ID, so we need to convert
* to a TCB pointer from here out.
*/
ts->thread = (Thread_Control *)_Objects_Get_local_object(
&_RTEMS_tasks_Information,
_Objects_Get_index(id)
594ee: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
594f2: 4282 clrl %d2 <== NOT EXECUTED
/*
* We work with the TCB pointer, not the ID, so we need to convert
* to a TCB pointer from here out.
*/
ts->thread = (Thread_Control *)_Objects_Get_local_object(
594f4: 2079 0007 eb02 moveal 7eb02 <_RTEMS_tasks_Information+0x18>,%a0<== NOT EXECUTED 594fa: 3400 movew %d0,%d2 <== NOT EXECUTED
* Initialize the pointer to the timer schedule method so applications that
* do not use the Timer Server do not have to pull it in.
*/
ts->schedule_operation = _Timer_server_Schedule_operation_method;
ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot;
594fc: 2239 0007 ec9c movel 7ec9c <_Watchdog_Ticks_since_boot>,%d1<== NOT EXECUTED
/*
* We work with the TCB pointer, not the ID, so we need to convert
* to a TCB pointer from here out.
*/
ts->thread = (Thread_Control *)_Objects_Get_local_object(
59502: 41f0 2c00 lea %a0@(00000000,%d2:l:4),%a0 <== NOT EXECUTED 59506: 23d0 0007 9fcc movel %a0@,79fcc <_Timer_server_Default> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
5950c: 41f9 0007 a000 lea 7a000 <_Timer_server_Default+0x34>,%a0 <== NOT EXECUTED
_Timer_server = ts;
/*
* Start the timer server
*/
status = rtems_task_start(
59512: 4879 0007 9fcc pea 79fcc <_Timer_server_Default> <== NOT EXECUTED 59518: 487a fb6e pea %pc@(59088 <_Timer_server_Body>) <== NOT EXECUTED 5951c: 23c8 0007 9ffc movel %a0,79ffc <_Timer_server_Default+0x30><== NOT EXECUTED
the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain);
59522: 41f9 0007 9ffc lea 79ffc <_Timer_server_Default+0x30>,%a0 <== NOT EXECUTED 59528: 23c8 0007 a004 movel %a0,7a004 <_Timer_server_Default+0x38><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
5952e: 41f9 0007 a038 lea 7a038 <_Timer_server_Default+0x6c>,%a0 <== NOT EXECUTED
* Initialize the pointer to the timer schedule method so applications that
* do not use the Timer Server do not have to pull it in.
*/
ts->schedule_operation = _Timer_server_Schedule_operation_method;
ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot;
59534: 23c1 0007 a008 movel %d1,7a008 <_Timer_server_Default+0x3c><== NOT EXECUTED
the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain);
5953a: 223c 0007 a034 movel #499764,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
59540: 23c8 0007 a034 movel %a0,7a034 <_Timer_server_Default+0x68><== NOT EXECUTED
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
59546: 41f9 0007 ebfa lea 7ebfa <_TOD_Now>,%a0 <== NOT EXECUTED
the_chain->permanent_null = NULL; the_chain->last = _Chain_Head(the_chain);
5954c: 23c1 0007 a03c movel %d1,7a03c <_Timer_server_Default+0x70><== NOT EXECUTED 59552: 23d0 0007 a040 movel %a0@,7a040 <_Timer_server_Default+0x74><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
59558: 223c 0005 c0d8 movel #377048,%d1 <== NOT EXECUTED 5955e: 41f9 0005 c0d8 lea 5c0d8 <_Thread_Delay_ended>,%a0 <== NOT EXECUTED 59564: 23c1 0007 9ff0 movel %d1,79ff0 <_Timer_server_Default+0x24><== NOT EXECUTED
ts->insert_chain = NULL;
ts->active = false;
5956a: 4201 clrb %d1 <== NOT EXECUTED
ts->schedule_operation = _Timer_server_Schedule_operation_method;
ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot;
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
ts->insert_chain = NULL;
5956c: 42b9 0007 a044 clrl 7a044 <_Timer_server_Default+0x78> <== NOT EXECUTED
ts->active = false;
59572: 13c1 0007 a048 moveb %d1,7a048 <_Timer_server_Default+0x7c><== NOT EXECUTED 59578: 23c8 0007 a028 movel %a0,7a028 <_Timer_server_Default+0x5c><== NOT EXECUTED
/*
* The default timer server is now available.
*/
_Timer_server = ts;
5957e: 41f9 0007 9fcc lea 79fcc <_Timer_server_Default>,%a0 <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
59584: 2f00 movel %d0,%sp@- <== NOT EXECUTED
/*
* Initialize the pointer to the timer schedule method so applications that
* do not use the Timer Server do not have to pull it in.
*/
ts->schedule_operation = _Timer_server_Schedule_operation_method;
59586: 223c 0005 92c4 movel #365252,%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail(the_chain);
the_chain->permanent_null = NULL;
5958c: 42b9 0007 a000 clrl 7a000 <_Timer_server_Default+0x34> <== NOT EXECUTED 59592: 42b9 0007 a038 clrl 7a038 <_Timer_server_Default+0x6c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
59598: 42b9 0007 9fdc clrl 79fdc <_Timer_server_Default+0x10> <== NOT EXECUTED 5959e: 23c1 0007 9fd0 movel %d1,79fd0 <_Timer_server_Default+0x4> <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id;
595a4: 23c0 0007 9ff4 movel %d0,79ff4 <_Timer_server_Default+0x28><== NOT EXECUTED
ts->active = false;
/*
* The default timer server is now available.
*/
_Timer_server = ts;
595aa: 23c8 0007 f42e movel %a0,7f42e <_Timer_server> <== NOT EXECUTED
the_watchdog->user_data = user_data;
595b0: 42b9 0007 9ff8 clrl 79ff8 <_Timer_server_Default+0x2c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
595b6: 42b9 0007 a014 clrl 7a014 <_Timer_server_Default+0x48> <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id;
595bc: 23c0 0007 a02c movel %d0,7a02c <_Timer_server_Default+0x60><== NOT EXECUTED
the_watchdog->user_data = user_data;
595c2: 42b9 0007 a030 clrl 7a030 <_Timer_server_Default+0x64> <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
595c8: 4eb9 0005 8754 jsr 58754 <rtems_task_start> <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
595ce: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if (status) {
initialized = false;
}
#endif
return status;
595d2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
595d6: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 595da: 4e5e unlk %fp <== NOT EXECUTED
...
00058d24 <rtems_timer_reset>:
*/
rtems_status_code rtems_timer_reset(
rtems_id id
)
{
58d24: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 58d28: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 58d2c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58d30: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58d34: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58d3a: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58d40: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58d44: 2440 moveal %d0,%a2 <== NOT EXECUTED 58d46: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58d4a: 670e beqs 58d5a <rtems_timer_reset+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58d4c: 7404 moveq #4,%d2 <== NOT EXECUTED
}
58d4e: 2002 movel %d2,%d0 <== NOT EXECUTED 58d50: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 58d56: 4e5e unlk %fp <== NOT EXECUTED 58d58: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
58d5a: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 58d5e: 671a beqs 58d7a <rtems_timer_reset+0x56> <== NOT EXECUTED
_Watchdog_Remove( &the_timer->Ticker );
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
} else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) {
58d60: 7201 moveq #1,%d1 <== NOT EXECUTED 58d62: b280 cmpl %d0,%d1 <== NOT EXECUTED 58d64: 673c beqs 58da2 <rtems_timer_reset+0x7e> <== NOT EXECUTED
/*
* 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;
58d66: 740b moveq #11,%d2 <== NOT EXECUTED
}
_Thread_Enable_dispatch();
58d68: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58d6e: 2002 movel %d2,%d0 <== NOT EXECUTED 58d70: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 58d76: 4e5e unlk %fp <== NOT EXECUTED 58d78: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
_Watchdog_Remove( &the_timer->Ticker );
58d7a: 45ea 0010 lea %a2@(16),%a2 <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
58d7e: 4282 clrl %d2 <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
_Watchdog_Remove( &the_timer->Ticker );
58d80: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58d82: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
58d88: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58d8a: 4879 0007 ec32 pea 7ec32 <_Watchdog_Ticks_chain> <== NOT EXECUTED 58d90: 4eb9 0005 d78c jsr 5d78c <_Watchdog_Insert> <== NOT EXECUTED 58d96: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* 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();
58d9a: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED 58da0: 60cc bras 58d6e <rtems_timer_reset+0x4a> <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58da2: 486a 0010 pea %a2@(16) <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
58da6: 4282 clrl %d2 <== NOT EXECUTED
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;
58da8: 2679 0007 f42e moveal 7f42e <_Timer_server>,%a3 <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58dae: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58db4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58db6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58db8: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED 58dbc: 4e90 jsr %a0@ <== NOT EXECUTED 58dbe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* 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();
58dc2: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED 58dc8: 60a4 bras 58d6e <rtems_timer_reset+0x4a> <== NOT EXECUTED
...
00058dcc <rtems_timer_server_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58dcc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 58dd0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 58dd4: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 58dd8: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 58ddc: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
Timer_Control *the_timer; Objects_Locations location; ISR_Level level; Timer_server_Control *timer_server = _Timer_server;
58de0: 2479 0007 f42e moveal 7f42e <_Timer_server>,%a2 <== NOT EXECUTED
if ( !timer_server )
58de6: 4a8a tstl %a2 <== NOT EXECUTED 58de8: 6700 009c beqw 58e86 <rtems_timer_server_fire_after+0xba><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !routine )
58dec: 4a82 tstl %d2 <== NOT EXECUTED 58dee: 6700 00a2 beqw 58e92 <rtems_timer_server_fire_after+0xc6><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( ticks == 0 )
58df2: 4a83 tstl %d3 <== NOT EXECUTED 58df4: 660c bnes 58e02 <rtems_timer_server_fire_after+0x36><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
58df6: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58df8: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58dfe: 4e5e unlk %fp <== NOT EXECUTED 58e00: 4e75 rts <== NOT EXECUTED 58e02: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58e06: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58e08: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58e0e: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58e14: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58e18: 2640 moveal %d0,%a3 <== NOT EXECUTED 58e1a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58e1e: 665a bnes 58e7a <rtems_timer_server_fire_after+0xae><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58e20: 486b 0010 pea %a3@(16) <== NOT EXECUTED 58e24: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
58e2a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 58e30: 40c1 movew %sr,%d1 <== NOT EXECUTED 58e32: 8081 orl %d1,%d0 <== NOT EXECUTED 58e34: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) {
58e36: 588f addql #4,%sp <== NOT EXECUTED 58e38: 4aab 0018 tstl %a3@(24) <== NOT EXECUTED 58e3c: 6660 bnes 58e9e <rtems_timer_server_fire_after+0xd2><== NOT EXECUTED
/*
* OK. Now we now the timer was not rescheduled by an interrupt
* so we can atomically initialize it as in use.
*/
the_timer->the_class = TIMER_INTERVAL_ON_TASK;
58e3e: 7001 moveq #1,%d0 <== NOT EXECUTED
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
58e40: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED 58e46: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58e4a: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58e4e: 2742 002c movel %d2,%a3@(44) <== NOT EXECUTED
the_watchdog->id = id;
58e52: 2744 0030 movel %d4,%a3@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = ticks;
58e56: 2743 001c movel %d3,%a3@(28) <== NOT EXECUTED
_ISR_Enable( level );
58e5a: 46c1 movew %d1,%sr <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58e5c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58e5e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58e60: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 58e64: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
58e66: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58e6c: 508f addql #8,%sp <== NOT EXECUTED 58e6e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e70: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e76: 4e5e unlk %fp <== NOT EXECUTED 58e78: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58e7a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58e7c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e82: 4e5e unlk %fp <== NOT EXECUTED 58e84: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
ISR_Level level;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
58e86: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e88: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e8e: 4e5e unlk %fp <== NOT EXECUTED 58e90: 4e75 rts <== NOT EXECUTED
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58e92: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e94: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e9a: 4e5e unlk %fp <== NOT EXECUTED 58e9c: 4e75 rts <== NOT EXECUTED
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
58e9e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
58ea0: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58ea6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ea8: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58eae: 4e5e unlk %fp <== NOT EXECUTED
...
00058eb4 <rtems_timer_server_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58eb4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 58eb8: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 58ebc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 58ec0: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer; Objects_Locations location; rtems_interval seconds; Timer_server_Control *timer_server = _Timer_server;
58ec4: 2479 0007 f42e moveal 7f42e <_Timer_server>,%a2 <== NOT EXECUTED
if ( !timer_server )
58eca: 4a8a tstl %a2 <== NOT EXECUTED 58ecc: 6700 00c8 beqw 58f96 <rtems_timer_server_fire_when+0xe2><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
58ed0: 4a39 0007 eb80 tstb 7eb80 <_TOD_Is_set> <== NOT EXECUTED 58ed6: 6700 00a6 beqw 58f7e <rtems_timer_server_fire_when+0xca><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !routine )
58eda: 4a83 tstl %d3 <== NOT EXECUTED 58edc: 6700 00ac beqw 58f8a <rtems_timer_server_fire_when+0xd6><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
58ee0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58ee2: 4eb9 0005 5bf0 jsr 55bf0 <_TOD_Validate> <== NOT EXECUTED 58ee8: 588f addql #4,%sp <== NOT EXECUTED 58eea: 4a00 tstb %d0 <== NOT EXECUTED 58eec: 660c bnes 58efa <rtems_timer_server_fire_when+0x46><== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
58eee: 7014 moveq #20,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ef0: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58ef6: 4e5e unlk %fp <== NOT EXECUTED 58ef8: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
58efa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58efc: 4eb9 0005 5ae8 jsr 55ae8 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58f02: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
58f04: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58f06: b0b9 0007 ebfa cmpl 7ebfa <_TOD_Now>,%d0 <== NOT EXECUTED 58f0c: 63e0 blss 58eee <rtems_timer_server_fire_when+0x3a><== NOT EXECUTED 58f0e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58f12: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58f16: 4879 0007 f3f4 pea 7f3f4 <_Timer_Information> <== NOT EXECUTED 58f1c: 4eb9 0005 b970 jsr 5b970 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58f22: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58f26: 2640 moveal %d0,%a3 <== NOT EXECUTED 58f28: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58f2c: 6674 bnes 58fa2 <rtems_timer_server_fire_when+0xee><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58f2e: 486b 0010 pea %a3@(16) <== NOT EXECUTED 58f32: 4eb9 0005 d8d4 jsr 5d8d4 <_Watchdog_Remove> <== NOT EXECUTED
the_watchdog->user_data = user_data;
58f38: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;
58f3e: 7003 moveq #3,%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
58f40: 94b9 0007 ebfa subl 7ebfa <_TOD_Now>,%d2 <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;
58f46: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
58f4a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
58f4e: 2742 001c movel %d2,%a3@(28) <== NOT EXECUTED 58f52: 2740 0030 movel %d0,%a3@(48) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58f56: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58f5a: 2743 002c movel %d3,%a3@(44) <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58f5e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58f60: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58f62: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 58f66: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
58f68: 4eb9 0005 c27e jsr 5c27e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58f6e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58f72: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f74: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f7a: 4e5e unlk %fp <== NOT EXECUTED 58f7c: 4e75 rts <== NOT EXECUTED
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
58f7e: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f80: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f86: 4e5e unlk %fp <== NOT EXECUTED 58f88: 4e75 rts <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58f8a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f8c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f92: 4e5e unlk %fp <== NOT EXECUTED 58f94: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
58f96: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f98: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f9e: 4e5e unlk %fp <== NOT EXECUTED 58fa0: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58fa2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58fa4: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58faa: 4e5e unlk %fp <== NOT EXECUTED
...
00042954 <rtems_verror>:
static int rtems_verror(
rtems_error_code_t error_flag,
const char *printf_format,
va_list arglist
)
{
42954: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 42958: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4295c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int local_errno = 0;
int chars_written = 0;
rtems_status_code status;
if (error_flag & RTEMS_ERROR_PANIC) {
42960: 0802 001d btst #29,%d2 <== NOT EXECUTED 42964: 6730 beqs 42996 <rtems_verror+0x42> <== NOT EXECUTED
if (rtems_panic_in_progress++)
42966: 2239 0005 fb30 movel 5fb30 <rtems_panic_in_progress>,%d1 <== NOT EXECUTED 4296c: 2001 movel %d1,%d0 <== NOT EXECUTED 4296e: 5280 addql #1,%d0 <== NOT EXECUTED 42970: 23c0 0005 fb30 movel %d0,5fb30 <rtems_panic_in_progress> <== NOT EXECUTED 42976: 4a81 tstl %d1 <== NOT EXECUTED 42978: 6714 beqs 4298e <rtems_verror+0x3a> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4297a: 2039 0005 fc8c movel 5fc8c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 42980: 5280 addql #1,%d0 <== NOT EXECUTED 42982: 23c0 0005 fc8c movel %d0,5fc8c <_Thread_Dispatch_disable_level><== NOT EXECUTED
RTEMS_COMPILER_MEMORY_BARRIER();
42988: 2039 0005 fb30 movel 5fb30 <rtems_panic_in_progress>,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch(); /* disable task switches */
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
4298e: 7202 moveq #2,%d1 <== NOT EXECUTED 42990: b280 cmpl %d0,%d1 <== NOT EXECUTED 42992: 6d00 00b6 bltw 42a4a <rtems_verror+0xf6> <== NOT EXECUTED
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
42996: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED 4299c: 45f9 0004 ec76 lea 4ec76 <fflush>,%a2 <== NOT EXECUTED
status = error_flag & ~RTEMS_ERROR_MASK;
429a2: 2802 movel %d2,%d4 <== NOT EXECUTED
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
429a4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
status = error_flag & ~RTEMS_ERROR_MASK;
429a8: 0284 8fff ffff andil #-1879048193,%d4 <== NOT EXECUTED
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
429ae: 4e92 jsr %a2@ <== NOT EXECUTED
status = error_flag & ~RTEMS_ERROR_MASK;
if (error_flag & RTEMS_ERROR_ERRNO) /* include errno? */
429b0: 588f addql #4,%sp <== NOT EXECUTED 429b2: 0802 001e btst #30,%d2 <== NOT EXECUTED 429b6: 6600 00ca bnew 42a82 <rtems_verror+0x12e> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
429ba: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
rtems_error_code_t error_flag,
const char *printf_format,
va_list arglist
)
{
int local_errno = 0;
429be: 4283 clrl %d3 <== NOT EXECUTED 429c0: 47f9 0004 f09e lea 4f09e <fprintf>,%a3 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
429c6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 429ca: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED 429d0: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 429d4: 4eb9 0005 5498 jsr 55498 <vfprintf> <== NOT EXECUTED
if (status)
429da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
429de: 2400 movel %d0,%d2 <== NOT EXECUTED
if (status)
429e0: 4a84 tstl %d4 <== NOT EXECUTED 429e2: 6674 bnes 42a58 <rtems_verror+0x104> <== NOT EXECUTED
chars_written +=
fprintf(stderr, " (status: %s)", rtems_status_text(status));
if (local_errno) {
429e4: 4a83 tstl %d3 <== NOT EXECUTED 429e6: 6732 beqs 42a1a <rtems_verror+0xc6> <== NOT EXECUTED
if ((local_errno > 0) && *strerror(local_errno))
429e8: 4a83 tstl %d3 <== NOT EXECUTED 429ea: 6f14 bles 42a00 <rtems_verror+0xac> <== NOT EXECUTED 429ec: 2f03 movel %d3,%sp@- <== NOT EXECUTED 429ee: 49f9 0004 f934 lea 4f934 <strerror>,%a4 <== NOT EXECUTED 429f4: 4e94 jsr %a4@ <== NOT EXECUTED 429f6: 588f addql #4,%sp <== NOT EXECUTED 429f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 429fa: 4a10 tstb %a0@ <== NOT EXECUTED 429fc: 6600 00ba bnew 42ab8 <rtems_verror+0x164> <== NOT EXECUTED
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
42a00: 2f03 movel %d3,%sp@- <== NOT EXECUTED 42a02: 4879 0005 cf22 pea 5cf22 <IMFS_ops+0x6a> <== NOT EXECUTED 42a08: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED 42a0e: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42a12: 4e93 jsr %a3@ <== NOT EXECUTED 42a14: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 42a18: d480 addl %d0,%d2 <== NOT EXECUTED
}
chars_written += fprintf(stderr, "\n");
42a1a: 4879 0005 d3b2 pea 5d3b2 <rtems_status_assoc+0x19e> <== NOT EXECUTED 42a20: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED 42a26: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42a2a: 4e93 jsr %a3@ <== NOT EXECUTED
(void) fflush(stderr);
42a2c: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
}
chars_written += fprintf(stderr, "\n");
42a32: d480 addl %d0,%d2 <== NOT EXECUTED
(void) fflush(stderr);
42a34: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42a38: 4e92 jsr %a2@ <== NOT EXECUTED
return chars_written;
42a3a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
42a3e: 2002 movel %d2,%d0 <== NOT EXECUTED 42a40: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 42a46: 4e5e unlk %fp <== NOT EXECUTED 42a48: 4e75 rts <== NOT EXECUTED
if (rtems_panic_in_progress++)
_Thread_Disable_dispatch(); /* disable task switches */
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
return 0;
42a4a: 4282 clrl %d2 <== NOT EXECUTED
chars_written += fprintf(stderr, "\n");
(void) fflush(stderr);
return chars_written;
}
42a4c: 2002 movel %d2,%d0 <== NOT EXECUTED 42a4e: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 42a54: 4e5e unlk %fp <== NOT EXECUTED 42a56: 4e75 rts <== NOT EXECUTED
chars_written += vfprintf(stderr, printf_format, arglist);
if (status)
chars_written +=
fprintf(stderr, " (status: %s)", rtems_status_text(status));
42a58: 2f04 movel %d4,%sp@- <== NOT EXECUTED 42a5a: 4eb9 0004 293c jsr 4293c <rtems_status_text> <== NOT EXECUTED 42a60: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED 42a66: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42a68: 4879 0005 cf07 pea 5cf07 <IMFS_ops+0x4f> <== NOT EXECUTED 42a6e: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42a72: 4e93 jsr %a3@ <== NOT EXECUTED
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
if (status)
chars_written +=
42a74: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 42a78: d480 addl %d0,%d2 <== NOT EXECUTED
fprintf(stderr, " (status: %s)", rtems_status_text(status));
if (local_errno) {
42a7a: 4a83 tstl %d3 <== NOT EXECUTED 42a7c: 679c beqs 42a1a <rtems_verror+0xc6> <== NOT EXECUTED 42a7e: 6000 ff68 braw 429e8 <rtems_verror+0x94> <== NOT EXECUTED
(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;
42a82: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 42a88: 47f9 0004 f09e lea 4f09e <fprintf>,%a3 <== NOT EXECUTED 42a8e: 2040 moveal %d0,%a0 <== NOT EXECUTED 42a90: 2610 movel %a0@,%d3 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
42a92: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 42a96: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED 42a9c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 42aa0: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42aa4: 4eb9 0005 5498 jsr 55498 <vfprintf> <== NOT EXECUTED
if (status)
42aaa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
42aae: 2400 movel %d0,%d2 <== NOT EXECUTED
if (status)
42ab0: 4a84 tstl %d4 <== NOT EXECUTED 42ab2: 6700 ff30 beqw 429e4 <rtems_verror+0x90> <== NOT EXECUTED 42ab6: 60a0 bras 42a58 <rtems_verror+0x104> <== NOT EXECUTED
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));
42ab8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 42aba: 4e94 jsr %a4@ <== NOT EXECUTED 42abc: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED 42ac2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42ac4: 4879 0005 cf15 pea 5cf15 <IMFS_ops+0x5d> <== NOT EXECUTED 42aca: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42ace: 4e93 jsr %a3@ <== NOT EXECUTED 42ad0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 42ad4: d480 addl %d0,%d2 <== NOT EXECUTED
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
}
chars_written += fprintf(stderr, "\n");
42ad6: 4879 0005 d3b2 pea 5d3b2 <rtems_status_assoc+0x19e> <== NOT EXECUTED 42adc: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED 42ae2: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42ae6: 4e93 jsr %a3@ <== NOT EXECUTED
(void) fflush(stderr);
42ae8: 2079 0005 e610 moveal 5e610 <_impure_ptr>,%a0 <== NOT EXECUTED
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
}
chars_written += fprintf(stderr, "\n");
42aee: d480 addl %d0,%d2 <== NOT EXECUTED
(void) fflush(stderr);
42af0: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 42af4: 4e92 jsr %a2@ <== NOT EXECUTED
return chars_written;
42af6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 42afa: 6000 ff42 braw 42a3e <rtems_verror+0xea> <== NOT EXECUTED
000470e8 <rtems_workspace_allocate>:
*/
bool rtems_workspace_allocate(
uintptr_t bytes,
void **pointer
)
{
470e8: 4e56 0000 linkw %fp,#0 470ec: 202e 0008 movel %fp@(8),%d0 470f0: 2f0a movel %a2,%sp@- 470f2: 246e 000c moveal %fp@(12),%a2
void *ptr;
/*
* check the arguments
*/
if ( !pointer )
470f6: 4a8a tstl %a2
470f8: 6704 beqs 470fe <rtems_workspace_allocate+0x16> <== NEVER TAKEN
return false;
if ( !bytes )
470fa: 4a80 tstl %d0
470fc: 660a bnes 47108 <rtems_workspace_allocate+0x20> <== ALWAYS TAKEN
if (!ptr)
return false;
*pointer = ptr;
return true;
}
470fe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47102: 4e5e unlk %fp <== NOT EXECUTED
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
47104: 4200 clrb %d0 <== NOT EXECUTED
*pointer = ptr;
return true;
}
47106: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate(
Heap_Control *heap,
uintptr_t size
)
{
return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
47108: 42a7 clrl %sp@- 4710a: 42a7 clrl %sp@- 4710c: 2f00 movel %d0,%sp@- 4710e: 4879 0006 073a pea 6073a <_Workspace_Area> 47114: 4eb9 0004 8840 jsr 48840 <_Protected_heap_Allocate_aligned_with_boundary>
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
4711a: 4fef 0010 lea %sp@(16),%sp 4711e: 4a80 tstl %d0
47120: 67dc beqs 470fe <rtems_workspace_allocate+0x16> <== NEVER TAKEN
return false;
*pointer = ptr;
47122: 2480 movel %d0,%a2@
return true; }
47124: 246e fffc moveal %fp@(-4),%a2 47128: 4e5e unlk %fp
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
*pointer = ptr;
return true;
4712a: 7001 moveq #1,%d0 <== NOT EXECUTED
}
0004712e <rtems_workspace_free>:
* _Workspace_Allocate
*/
bool rtems_workspace_free(
void *pointer
)
{
4712e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Protected_heap_Free( &_Workspace_Area, pointer );
47132: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47136: 4879 0006 073a pea 6073a <_Workspace_Area> <== NOT EXECUTED 4713c: 4eb9 0004 8880 jsr 48880 <_Protected_heap_Free> <== NOT EXECUTED
}
47142: 4e5e unlk %fp <== NOT EXECUTED
...
000470c4 <rtems_workspace_get_information>:
#include <string.h> /* for memset */
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
470c4: 4e56 0000 linkw %fp,#0 470c8: 202e 0008 movel %fp@(8),%d0
if ( !the_info )
470cc: 6714 beqs 470e2 <rtems_workspace_get_information+0x1e><== NEVER TAKEN
return false;
return _Protected_heap_Get_information( &_Workspace_Area, the_info );
470ce: 2f00 movel %d0,%sp@- 470d0: 4879 0006 073a pea 6073a <_Workspace_Area> 470d6: 4eb9 0004 88b8 jsr 488b8 <_Protected_heap_Get_information> 470dc: 508f addql #8,%sp
}
470de: 4e5e unlk %fp 470e0: 4e75 rts
470e2: 4e5e unlk %fp <== NOT EXECUTED
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
if ( !the_info )
return false;
470e4: 4200 clrb %d0 <== NOT EXECUTED
return _Protected_heap_Get_information( &_Workspace_Area, the_info );
}
00043434 <scanInt>:
/*
* Extract an integer value from the database
*/
static int
scanInt(FILE *fp, int *val)
{
43434: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 43438: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 4343c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int c; unsigned int i = 0; unsigned int limit = INT_MAX; int sign = 0;
43440: 4284 clrl %d4 <== NOT EXECUTED
static int
scanInt(FILE *fp, int *val)
{
int c;
unsigned int i = 0;
unsigned int limit = INT_MAX;
43442: 263c 7fff ffff movel #2147483647,%d3 <== NOT EXECUTED
*/
static int
scanInt(FILE *fp, int *val)
{
int c;
unsigned int i = 0;
43448: 4282 clrl %d2 <== NOT EXECUTED
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
4344a: 47f9 0005 0e54 lea 50e54 <__srget_r>,%a3 <== NOT EXECUTED 43450: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 43454: 5380 subql #1,%d0 <== NOT EXECUTED 43456: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4345a: 6d62 blts 434be <scanInt+0x8a> <== NOT EXECUTED 4345c: 2052 moveal %a2@,%a0 <== NOT EXECUTED 4345e: 4280 clrl %d0 <== NOT EXECUTED 43460: 1010 moveb %a0@,%d0 <== NOT EXECUTED 43462: 5288 addql #1,%a0 <== NOT EXECUTED
if (c == ':')
43464: 723a moveq #58,%d1 <== NOT EXECUTED
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
43466: 2488 movel %a0,%a2@ <== NOT EXECUTED
if (c == ':')
43468: b280 cmpl %d0,%d1 <== NOT EXECUTED 4346a: 6764 beqs 434d0 <scanInt+0x9c> <== NOT EXECUTED
break;
if (sign == 0) {
4346c: 4a84 tstl %d4 <== NOT EXECUTED 4346e: 660a bnes 4347a <scanInt+0x46> <== NOT EXECUTED
if (c == '-') {
43470: 7c2d moveq #45,%d6 <== NOT EXECUTED 43472: bc80 cmpl %d0,%d6 <== NOT EXECUTED 43474: 6700 0084 beqw 434fa <scanInt+0xc6> <== NOT EXECUTED
sign = -1;
limit++;
continue;
}
sign = 1;
43478: 7801 moveq #1,%d4 <== NOT EXECUTED
}
if (!isdigit(c))
4347a: 2079 0006 00bc moveal 600bc <__ctype_ptr__>,%a0 <== NOT EXECUTED 43480: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED 43484: 49c1 extbl %d1 <== NOT EXECUTED 43486: 44c1 movew %d1,%ccr <== NOT EXECUTED 43488: 6664 bnes 434ee <scanInt+0xba> <== NOT EXECUTED
return 0;
d = c - '0';
if ((i > (limit / 10))
4348a: 2203 movel %d3,%d1 <== NOT EXECUTED 4348c: 7c0a moveq #10,%d6 <== NOT EXECUTED 4348e: 4c46 1005 remul %d6,%d5,%d1 <== NOT EXECUTED 43492: 4c46 1001 remul %d6,%d1,%d1 <== NOT EXECUTED 43496: b282 cmpl %d2,%d1 <== NOT EXECUTED 43498: 6554 bcss 434ee <scanInt+0xba> <== NOT EXECUTED
}
sign = 1;
}
if (!isdigit(c))
return 0;
d = c - '0';
4349a: 0680 ffff ffd0 addil #-48,%d0 <== NOT EXECUTED
if ((i > (limit / 10))
|| ((i == (limit / 10)) && (d > (limit % 10))))
434a0: b282 cmpl %d2,%d1 <== NOT EXECUTED 434a2: 6746 beqs 434ea <scanInt+0xb6> <== NOT EXECUTED
return 0;
i = i * 10 + d;
434a4: 2202 movel %d2,%d1 <== NOT EXECUTED 434a6: e789 lsll #3,%d1 <== NOT EXECUTED 434a8: 2241 moveal %d1,%a1 <== NOT EXECUTED 434aa: 41f1 2a00 lea %a1@(00000000,%d2:l:2),%a0 <== NOT EXECUTED 434ae: 2400 movel %d0,%d2 <== NOT EXECUTED
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
434b0: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 434b4: 5380 subql #1,%d0 <== NOT EXECUTED
return 0;
d = c - '0';
if ((i > (limit / 10))
|| ((i == (limit / 10)) && (d > (limit % 10))))
return 0;
i = i * 10 + d;
434b6: d488 addl %a0,%d2 <== NOT EXECUTED
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
434b8: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 434bc: 6c9e bges 4345c <scanInt+0x28> <== NOT EXECUTED 434be: 2f0a movel %a2,%sp@- <== NOT EXECUTED 434c0: 2f39 0006 00c0 movel 600c0 <_impure_ptr>,%sp@- <== NOT EXECUTED 434c6: 4e93 jsr %a3@ <== NOT EXECUTED 434c8: 508f addql #8,%sp <== NOT EXECUTED
if (c == ':')
434ca: 723a moveq #58,%d1 <== NOT EXECUTED 434cc: b280 cmpl %d0,%d1 <== NOT EXECUTED 434ce: 669c bnes 4346c <scanInt+0x38> <== NOT EXECUTED
if ((i > (limit / 10))
|| ((i == (limit / 10)) && (d > (limit % 10))))
return 0;
i = i * 10 + d;
}
if (sign == 0)
434d0: 4a84 tstl %d4 <== NOT EXECUTED 434d2: 671a beqs 434ee <scanInt+0xba> <== NOT EXECUTED
return 0;
*val = i * sign;
434d4: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
return 1;
434d8: 7001 moveq #1,%d0 <== NOT EXECUTED
return 0;
i = i * 10 + d;
}
if (sign == 0)
return 0;
*val = i * sign;
434da: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 434de: 2084 movel %d4,%a0@ <== NOT EXECUTED
return 1; }
434e0: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 434e6: 4e5e unlk %fp <== NOT EXECUTED 434e8: 4e75 rts <== NOT EXECUTED
}
if (!isdigit(c))
return 0;
d = c - '0';
if ((i > (limit / 10))
|| ((i == (limit / 10)) && (d > (limit % 10))))
434ea: ba80 cmpl %d0,%d5 <== NOT EXECUTED 434ec: 64b6 bccs 434a4 <scanInt+0x70> <== NOT EXECUTED
return 0;
i = i * 10 + d;
}
if (sign == 0)
return 0;
434ee: 4280 clrl %d0 <== NOT EXECUTED
*val = i * sign; return 1; }
434f0: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 434f6: 4e5e unlk %fp <== NOT EXECUTED 434f8: 4e75 rts <== NOT EXECUTED
if (c == ':')
break;
if (sign == 0) {
if (c == '-') {
sign = -1;
limit++;
434fa: 5283 addql #1,%d3 <== NOT EXECUTED
c = getc(fp);
if (c == ':')
break;
if (sign == 0) {
if (c == '-') {
sign = -1;
434fc: 78ff moveq #-1,%d4 <== NOT EXECUTED
limit++;
continue;
434fe: 6000 ff50 braw 43450 <scanInt+0x1c> <== NOT EXECUTED
00043502 <scanString>:
/*
* Extract a string value from the database
*/
static int
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{
43502: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
int c;
*name = *bufp;
43506: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
/*
* Extract a string value from the database
*/
static int
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{
4350a: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4350e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int c;
*name = *bufp;
for (;;) {
c = getc(fp);
43512: 4bf9 0005 0e54 lea 50e54 <__srget_r>,%a5 <== NOT EXECUTED
/*
* Extract a string value from the database
*/
static int
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{
43518: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 4351c: 286e 0014 moveal %fp@(20),%a4 <== NOT EXECUTED 43520: 242e 0018 movel %fp@(24),%d2 <== NOT EXECUTED
int c;
*name = *bufp;
43524: 2093 movel %a3@,%a0@ <== NOT EXECUTED
for (;;) {
c = getc(fp);
43526: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4352a: 5380 subql #1,%d0 <== NOT EXECUTED 4352c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 43530: 6d36 blts 43568 <scanString+0x66> <== NOT EXECUTED 43532: 2052 moveal %a2@,%a0 <== NOT EXECUTED 43534: 4280 clrl %d0 <== NOT EXECUTED 43536: 1010 moveb %a0@,%d0 <== NOT EXECUTED 43538: 5288 addql #1,%a0 <== NOT EXECUTED
if (c == ':') {
4353a: 723a moveq #58,%d1 <== NOT EXECUTED
{
int c;
*name = *bufp;
for (;;) {
c = getc(fp);
4353c: 2488 movel %a0,%a2@ <== NOT EXECUTED
if (c == ':') {
4353e: b280 cmpl %d0,%d1 <== NOT EXECUTED 43540: 6738 beqs 4357a <scanString+0x78> <== NOT EXECUTED
if (nlFlag)
return 0;
break;
}
if (c == '\n') {
43542: 720a moveq #10,%d1 <== NOT EXECUTED 43544: b280 cmpl %d0,%d1 <== NOT EXECUTED 43546: 674a beqs 43592 <scanString+0x90> <== NOT EXECUTED
if (!nlFlag)
return 0;
break;
}
if (c == EOF)
43548: 72ff moveq #-1,%d1 <== NOT EXECUTED 4354a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4354c: 6748 beqs 43596 <scanString+0x94> <== NOT EXECUTED
return 0;
if (*nleft < 2)
4354e: 7201 moveq #1,%d1 <== NOT EXECUTED 43550: b294 cmpl %a4@,%d1 <== NOT EXECUTED 43552: 6442 bccs 43596 <scanString+0x94> <== NOT EXECUTED
return 0;
**bufp = c;
43554: 2053 moveal %a3@,%a0 <== NOT EXECUTED 43556: 1080 moveb %d0,%a0@ <== NOT EXECUTED
++(*bufp);
43558: 5293 addql #1,%a3@ <== NOT EXECUTED
--(*nleft);
4355a: 5394 subql #1,%a4@ <== NOT EXECUTED
{
int c;
*name = *bufp;
for (;;) {
c = getc(fp);
4355c: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 43560: 5380 subql #1,%d0 <== NOT EXECUTED 43562: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 43566: 6cca bges 43532 <scanString+0x30> <== NOT EXECUTED 43568: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4356a: 2f39 0006 00c0 movel 600c0 <_impure_ptr>,%sp@- <== NOT EXECUTED 43570: 4e95 jsr %a5@ <== NOT EXECUTED 43572: 508f addql #8,%sp <== NOT EXECUTED
if (c == ':') {
43574: 723a moveq #58,%d1 <== NOT EXECUTED 43576: b280 cmpl %d0,%d1 <== NOT EXECUTED 43578: 66c8 bnes 43542 <scanString+0x40> <== NOT EXECUTED
if (nlFlag)
4357a: 4a82 tstl %d2 <== NOT EXECUTED 4357c: 6618 bnes 43596 <scanString+0x94> <== NOT EXECUTED
return 0;
**bufp = c;
++(*bufp);
--(*nleft);
}
**bufp = '\0';
4357e: 2053 moveal %a3@,%a0 <== NOT EXECUTED
++(*bufp); --(*nleft); return 1;
43580: 7001 moveq #1,%d0 <== NOT EXECUTED
return 0;
**bufp = c;
++(*bufp);
--(*nleft);
}
**bufp = '\0';
43582: 4210 clrb %a0@ <== NOT EXECUTED
++(*bufp);
43584: 5293 addql #1,%a3@ <== NOT EXECUTED
--(*nleft);
43586: 5394 subql #1,%a4@ <== NOT EXECUTED
return 1; }
43588: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4358e: 4e5e unlk %fp <== NOT EXECUTED 43590: 4e75 rts <== NOT EXECUTED
if (nlFlag)
return 0;
break;
}
if (c == '\n') {
if (!nlFlag)
43592: 4a82 tstl %d2 <== NOT EXECUTED 43594: 66e8 bnes 4357e <scanString+0x7c> <== NOT EXECUTED
break;
}
if (c == EOF)
return 0;
if (*nleft < 2)
return 0;
43596: 4280 clrl %d0 <== NOT EXECUTED
} **bufp = '\0'; ++(*bufp); --(*nleft); return 1; }
43598: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4359e: 4e5e unlk %fp <== NOT EXECUTED
000435a2 <scangr>:
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
435a2: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 435a6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
435aa: 42a7 clrl %sp@- <== NOT EXECUTED 435ac: 280e movel %fp,%d4 <== NOT EXECUTED 435ae: 0684 0000 0014 addil #20,%d4 <== NOT EXECUTED 435b4: 260e movel %fp,%d3 <== NOT EXECUTED 435b6: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED 435bc: 47fa ff44 lea %pc@(43502 <scanString>),%a3 <== NOT EXECUTED 435c0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
435c2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
435c6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
435c8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
435cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 435ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED 435d0: 4e93 jsr %a3@ <== NOT EXECUTED 435d2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 435d6: 4a80 tstl %d0 <== NOT EXECUTED 435d8: 660c bnes 435e6 <scangr+0x44> <== NOT EXECUTED
/*
* Hack to produce (hopefully) a suitably-aligned array of pointers
*/
if (bufsize < (((memcount+1)*sizeof(char *)) + 15))
return 0;
435da: 4280 clrl %d0 <== NOT EXECUTED
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
return 1;
}
435dc: 4cee 0c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a3 <== NOT EXECUTED 435e2: 4e5e unlk %fp <== NOT EXECUTED 435e4: 4e75 rts <== NOT EXECUTED
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
|| !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)
435e6: 42a7 clrl %sp@- <== NOT EXECUTED 435e8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 435ea: 2f03 movel %d3,%sp@- <== NOT EXECUTED 435ec: 486a 0004 pea %a2@(4) <== NOT EXECUTED 435f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 435f2: 4e93 jsr %a3@ <== NOT EXECUTED 435f4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 435f8: 4a80 tstl %d0 <== NOT EXECUTED 435fa: 67de beqs 435da <scangr+0x38> <== NOT EXECUTED
|| !scanInt(fp, &grgid)
435fc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 43600: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43602: 4eba fe30 jsr %pc@(43434 <scanInt>) <== NOT EXECUTED 43606: 508f addql #8,%sp <== NOT EXECUTED 43608: 4a80 tstl %d0 <== NOT EXECUTED 4360a: 67ce beqs 435da <scangr+0x38> <== NOT EXECUTED
|| !scanString(fp, &grmem, &buffer, &bufsize, 1))
4360c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 43610: 2f04 movel %d4,%sp@- <== NOT EXECUTED 43612: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43614: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 43618: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4361a: 4e93 jsr %a3@ <== NOT EXECUTED 4361c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43620: 4a80 tstl %d0 <== NOT EXECUTED 43622: 67b6 beqs 435da <scangr+0x38> <== NOT EXECUTED
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
43624: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
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;
43628: 356e fffe 0008 movew %fp@(-2),%a2@(8) <== NOT EXECUTED
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
4362e: 1013 moveb %a3@,%d0 <== NOT EXECUTED 43630: 677a beqs 436ac <scangr+0x10a> <== NOT EXECUTED
}
/*
* Extract a single group record from the database
*/
static int scangr(
43632: 41eb 0001 lea %a3@(1),%a0 <== NOT EXECUTED
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
43636: 7201 moveq #1,%d1 <== NOT EXECUTED
if(*cp == ',')
43638: 49c0 extbl %d0 <== NOT EXECUTED 4363a: 742c moveq #44,%d2 <== NOT EXECUTED 4363c: b480 cmpl %d0,%d2 <== NOT EXECUTED 4363e: 6756 beqs 43696 <scangr+0xf4> <== NOT EXECUTED
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
43640: 1018 moveb %a0@+,%d0 <== NOT EXECUTED 43642: 66f4 bnes 43638 <scangr+0x96> <== NOT EXECUTED 43644: e589 lsll #2,%d1 <== NOT EXECUTED 43646: 0681 0000 0013 addil #19,%d1 <== NOT EXECUTED
}
/*
* Hack to produce (hopefully) a suitably-aligned array of pointers
*/
if (bufsize < (((memcount+1)*sizeof(char *)) + 15))
4364c: b2ae 0014 cmpl %fp@(20),%d1 <== NOT EXECUTED 43650: 6288 bhis 435da <scangr+0x38> <== NOT EXECUTED
return 0;
grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);
43652: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 43656: 43e9 000f lea %a1@(15),%a1 <== NOT EXECUTED 4365a: 2009 movel %a1,%d0 <== NOT EXECUTED 4365c: 72f0 moveq #-16,%d1 <== NOT EXECUTED 4365e: c081 andl %d1,%d0 <== NOT EXECUTED 43660: 2540 000a movel %d0,%a2@(10) <== NOT EXECUTED 43664: 2240 moveal %d0,%a1 <== NOT EXECUTED
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
43666: 228b movel %a3,%a1@ <== NOT EXECUTED
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
43668: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 4366c: 1010 moveb %a0@,%d0 <== NOT EXECUTED 4366e: 6740 beqs 436b0 <scangr+0x10e> <== NOT EXECUTED
}
/*
* Extract a single group record from the database
*/
static int scangr(
43670: 5288 addql #1,%a0 <== NOT EXECUTED
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
43672: 7201 moveq #1,%d1 <== NOT EXECUTED
if(*cp == ',') {
43674: 49c0 extbl %d0 <== NOT EXECUTED 43676: 742c moveq #44,%d2 <== NOT EXECUTED 43678: b480 cmpl %d0,%d2 <== NOT EXECUTED 4367a: 671e beqs 4369a <scangr+0xf8> <== NOT EXECUTED
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
4367c: 1018 moveb %a0@+,%d0 <== NOT EXECUTED 4367e: 66f4 bnes 43674 <scangr+0xd2> <== NOT EXECUTED 43680: 226a 000a moveal %a2@(10),%a1 <== NOT EXECUTED
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
return 1;
43684: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
43686: e589 lsll #2,%d1 <== NOT EXECUTED
if(*cp == ',') {
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
43688: 42b1 1800 clrl %a1@(00000000,%d1:l) <== NOT EXECUTED
return 1; }
4368c: 4cee 0c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a3 <== NOT EXECUTED 43692: 4e5e unlk %fp <== NOT EXECUTED 43694: 4e75 rts <== NOT EXECUTED
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
if(*cp == ',')
memcount++;
43696: 5281 addql #1,%d1 <== NOT EXECUTED 43698: 60a6 bras 43640 <scangr+0x9e> <== NOT EXECUTED
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
if(*cp == ',') {
*cp = '\0';
4369a: 4200 clrb %d0 <== NOT EXECUTED 4369c: 1140 ffff moveb %d0,%a0@(-1) <== NOT EXECUTED
grp->gr_mem[memcount++] = cp + 1;
436a0: 226a 000a moveal %a2@(10),%a1 <== NOT EXECUTED 436a4: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED 436a8: 5281 addql #1,%d1 <== NOT EXECUTED 436aa: 60d0 bras 4367c <scangr+0xda> <== NOT EXECUTED
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
436ac: 7217 moveq #23,%d1 <== NOT EXECUTED 436ae: 609c bras 4364c <scangr+0xaa> <== NOT EXECUTED
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
436b0: 7204 moveq #4,%d1 <== NOT EXECUTED
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
return 1;
436b2: 7001 moveq #1,%d0 <== NOT EXECUTED
if(*cp == ',') {
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
436b4: 42b1 1800 clrl %a1@(00000000,%d1:l) <== NOT EXECUTED 436b8: 60d2 bras 4368c <scangr+0xea> <== NOT EXECUTED
000436ba <scanpw>:
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
436ba: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 436be: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
436c2: 42a7 clrl %sp@- <== NOT EXECUTED 436c4: 280e movel %fp,%d4 <== NOT EXECUTED 436c6: 0684 0000 0014 addil #20,%d4 <== NOT EXECUTED 436cc: 260e movel %fp,%d3 <== NOT EXECUTED 436ce: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED 436d4: 47fa fe2c lea %pc@(43502 <scanString>),%a3 <== NOT EXECUTED 436d8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
436da: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
436de: 2f03 movel %d3,%sp@- <== NOT EXECUTED
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
436e0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
436e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 436e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 436e8: 4e93 jsr %a3@ <== NOT EXECUTED 436ea: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 436ee: 4a80 tstl %d0 <== NOT EXECUTED 436f0: 660c bnes 436fe <scanpw+0x44> <== NOT EXECUTED
|| !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;
436f2: 4280 clrl %d0 <== NOT EXECUTED
pwd->pw_uid = pwuid; pwd->pw_gid = pwgid; return 1; }
436f4: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED 436fa: 4e5e unlk %fp <== NOT EXECUTED 436fc: 4e75 rts <== NOT EXECUTED
)
{
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_passwd, &buffer, &bufsize, 0)
436fe: 42a7 clrl %sp@- <== NOT EXECUTED 43700: 2f04 movel %d4,%sp@- <== NOT EXECUTED 43702: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43704: 486a 0004 pea %a2@(4) <== NOT EXECUTED 43708: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4370a: 4e93 jsr %a3@ <== NOT EXECUTED 4370c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43710: 4a80 tstl %d0 <== NOT EXECUTED 43712: 67de beqs 436f2 <scanpw+0x38> <== NOT EXECUTED
|| !scanInt(fp, &pwuid)
43714: 486e fffc pea %fp@(-4) <== NOT EXECUTED 43718: 49fa fd1a lea %pc@(43434 <scanInt>),%a4 <== NOT EXECUTED 4371c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4371e: 4e94 jsr %a4@ <== NOT EXECUTED 43720: 508f addql #8,%sp <== NOT EXECUTED 43722: 4a80 tstl %d0 <== NOT EXECUTED 43724: 67cc beqs 436f2 <scanpw+0x38> <== NOT EXECUTED
|| !scanInt(fp, &pwgid)
43726: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4372a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4372c: 4e94 jsr %a4@ <== NOT EXECUTED 4372e: 508f addql #8,%sp <== NOT EXECUTED 43730: 4a80 tstl %d0 <== NOT EXECUTED 43732: 67be beqs 436f2 <scanpw+0x38> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)
43734: 42a7 clrl %sp@- <== NOT EXECUTED 43736: 2f04 movel %d4,%sp@- <== NOT EXECUTED 43738: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4373a: 486a 000c pea %a2@(12) <== NOT EXECUTED 4373e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43740: 4e93 jsr %a3@ <== NOT EXECUTED 43742: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43746: 4a80 tstl %d0 <== NOT EXECUTED 43748: 67a8 beqs 436f2 <scanpw+0x38> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)
4374a: 42a7 clrl %sp@- <== NOT EXECUTED 4374c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4374e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43750: 486a 0010 pea %a2@(16) <== NOT EXECUTED 43754: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43756: 4e93 jsr %a3@ <== NOT EXECUTED 43758: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4375c: 4a80 tstl %d0 <== NOT EXECUTED 4375e: 6792 beqs 436f2 <scanpw+0x38> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)
43760: 42a7 clrl %sp@- <== NOT EXECUTED 43762: 2f04 movel %d4,%sp@- <== NOT EXECUTED 43764: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43766: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4376a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4376c: 4e93 jsr %a3@ <== NOT EXECUTED 4376e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43772: 4a80 tstl %d0 <== NOT EXECUTED 43774: 6700 ff7c beqw 436f2 <scanpw+0x38> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))
43778: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4377c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4377e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43780: 486a 0018 pea %a2@(24) <== NOT EXECUTED 43784: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43786: 4e93 jsr %a3@ <== NOT EXECUTED 43788: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4378c: 4a80 tstl %d0 <== NOT EXECUTED 4378e: 6700 ff62 beqw 436f2 <scanpw+0x38> <== NOT EXECUTED
return 0;
pwd->pw_uid = pwuid;
pwd->pw_gid = pwgid;
return 1;
43792: 7001 moveq #1,%d0 <== NOT EXECUTED
|| !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;
43794: 356e fffe 0008 movew %fp@(-2),%a2@(8) <== NOT EXECUTED
pwd->pw_gid = pwgid;
4379a: 356e fffa 000a movew %fp@(-6),%a2@(10) <== NOT EXECUTED
return 1; }
437a0: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED 437a6: 4e5e unlk %fp <== NOT EXECUTED
00046fb0 <sched_get_priority_max>:
int sched_get_priority_max(
int policy
)
{
switch ( policy ) {
46fb0: 7004 moveq #4,%d0 <== NOT EXECUTED
#include <rtems/posix/priority.h>
int sched_get_priority_max(
int policy
)
{
46fb2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fb6: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
switch ( policy ) {
46fba: b081 cmpl %d1,%d0 <== NOT EXECUTED 46fbc: 6412 bccs 46fd0 <sched_get_priority_max+0x20> <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
46fbe: 4eb9 0004 f90c jsr 4f90c <__errno> <== NOT EXECUTED 46fc4: 7216 moveq #22,%d1 <== NOT EXECUTED 46fc6: 2040 moveal %d0,%a0 <== NOT EXECUTED 46fc8: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
}
46fca: 4e5e unlk %fp <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
46fcc: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
}
46fce: 4e75 rts <== NOT EXECUTED
int sched_get_priority_max(
int policy
)
{
switch ( policy ) {
46fd0: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 46fd4: e3a8 lsll %d1,%d0 <== NOT EXECUTED 46fd6: 7217 moveq #23,%d1 <== NOT EXECUTED 46fd8: c081 andl %d1,%d0 <== NOT EXECUTED 46fda: 67e2 beqs 46fbe <sched_get_priority_max+0xe> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
46fdc: 4280 clrl %d0 <== NOT EXECUTED 46fde: 1039 0005 f866 moveb 5f866 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
}
46fe4: 4e5e unlk %fp <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
46fe6: 5380 subql #1,%d0 <== NOT EXECUTED
}
...
00046fec <sched_get_priority_min>:
int sched_get_priority_min(
int policy
)
{
switch ( policy ) {
46fec: 7004 moveq #4,%d0 <== NOT EXECUTED
#include <rtems/posix/priority.h>
int sched_get_priority_min(
int policy
)
{
46fee: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46ff2: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
switch ( policy ) {
46ff6: b081 cmpl %d1,%d0 <== NOT EXECUTED 46ff8: 6412 bccs 4700c <sched_get_priority_min+0x20> <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
46ffa: 4eb9 0004 f90c jsr 4f90c <__errno> <== NOT EXECUTED 47000: 7216 moveq #22,%d1 <== NOT EXECUTED 47002: 2040 moveal %d0,%a0 <== NOT EXECUTED 47004: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return POSIX_SCHEDULER_MINIMUM_PRIORITY;
}
47006: 4e5e unlk %fp <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
47008: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return POSIX_SCHEDULER_MINIMUM_PRIORITY;
}
4700a: 4e75 rts <== NOT EXECUTED
int sched_get_priority_min(
int policy
)
{
switch ( policy ) {
4700c: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 47010: e3a8 lsll %d1,%d0 <== NOT EXECUTED 47012: 7217 moveq #23,%d1 <== NOT EXECUTED 47014: c081 andl %d1,%d0 <== NOT EXECUTED 47016: 67e2 beqs 46ffa <sched_get_priority_min+0xe> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return POSIX_SCHEDULER_MINIMUM_PRIORITY;
47018: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4701a: 4e5e unlk %fp <== NOT EXECUTED
...
000462ec <sched_getparam>:
int sched_getparam(
pid_t pid __attribute__((unused)),
struct sched_param *param __attribute__((unused))
)
{
462ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
462f0: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 462f6: 7258 moveq #88,%d1 <== NOT EXECUTED 462f8: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
462fa: 70ff moveq #-1,%d0 <== NOT EXECUTED 462fc: 4e5e unlk %fp <== NOT EXECUTED
int sched_getparam(
pid_t pid __attribute__((unused)),
struct sched_param *param __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
462fe: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00046304 <sched_getscheduler>:
#include <rtems/posix/time.h>
int sched_getscheduler(
pid_t pid __attribute__((unused))
)
{
46304: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46308: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 4630e: 7258 moveq #88,%d1 <== NOT EXECUTED 46310: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46312: 70ff moveq #-1,%d0 <== NOT EXECUTED 46314: 4e5e unlk %fp <== NOT EXECUTED
int sched_getscheduler(
pid_t pid __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
46316: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00047020 <sched_rr_get_interval>:
int sched_rr_get_interval(
pid_t pid,
struct timespec *interval
)
{
47020: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47024: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47026: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4702a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4702c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
/*
* Only supported for the "calling process" (i.e. this node).
*/
if ( pid && pid != getpid() )
47030: 4a83 tstl %d3 <== NOT EXECUTED 47032: 6622 bnes 47056 <sched_rr_get_interval+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
if ( !interval )
47034: 4a82 tstl %d2 <== NOT EXECUTED 47036: 6742 beqs 4707a <sched_rr_get_interval+0x5a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
47038: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4703a: 2f39 0006 10a4 movel 610a4 <_Thread_Ticks_per_timeslice>,%sp@-<== NOT EXECUTED 47040: 4eb9 0004 a988 jsr 4a988 <_Timespec_From_ticks> <== NOT EXECUTED
return 0; }
47046: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( !interval )
rtems_set_errno_and_return_minus_one( EINVAL );
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
return 0;
4704a: 508f addql #8,%sp <== NOT EXECUTED 4704c: 4280 clrl %d0 <== NOT EXECUTED
}
4704e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 47052: 4e5e unlk %fp <== NOT EXECUTED 47054: 4e75 rts <== NOT EXECUTED
{
/*
* Only supported for the "calling process" (i.e. this node).
*/
if ( pid && pid != getpid() )
47056: 4eb9 0004 36ac jsr 436ac <getpid> <== NOT EXECUTED 4705c: b680 cmpl %d0,%d3 <== NOT EXECUTED 4705e: 67d4 beqs 47034 <sched_rr_get_interval+0x14> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
47060: 4eb9 0004 f90c jsr 4f90c <__errno> <== NOT EXECUTED 47066: 7403 moveq #3,%d2 <== NOT EXECUTED 47068: 2040 moveal %d0,%a0 <== NOT EXECUTED 4706a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4706c: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( !interval )
rtems_set_errno_and_return_minus_one( EINVAL );
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
return 0;
}
4706e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47072: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 47076: 4e5e unlk %fp <== NOT EXECUTED 47078: 4e75 rts <== NOT EXECUTED
if ( pid && pid != getpid() )
rtems_set_errno_and_return_minus_one( ESRCH );
if ( !interval )
rtems_set_errno_and_return_minus_one( EINVAL );
4707a: 4eb9 0004 f90c jsr 4f90c <__errno> <== NOT EXECUTED
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
return 0;
}
47080: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( pid && pid != getpid() )
rtems_set_errno_and_return_minus_one( ESRCH );
if ( !interval )
rtems_set_errno_and_return_minus_one( EINVAL );
47084: 2040 moveal %d0,%a0 <== NOT EXECUTED 47086: 7216 moveq #22,%d1 <== NOT EXECUTED 47088: 70ff moveq #-1,%d0 <== NOT EXECUTED
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
return 0;
}
4708a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4708e: 4e5e unlk %fp <== NOT EXECUTED
if ( pid && pid != getpid() )
rtems_set_errno_and_return_minus_one( ESRCH );
if ( !interval )
rtems_set_errno_and_return_minus_one( EINVAL );
47090: 2081 movel %d1,%a0@ <== NOT EXECUTED
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
return 0;
}
0004631c <sched_setparam>:
int sched_setparam(
pid_t pid __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
4631c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46320: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 46326: 7258 moveq #88,%d1 <== NOT EXECUTED 46328: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
4632a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4632c: 4e5e unlk %fp <== NOT EXECUTED
int sched_setparam(
pid_t pid __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4632e: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00046334 <sched_setscheduler>:
int sched_setscheduler(
pid_t pid __attribute__((unused)),
int policy __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
46334: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46338: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 4633e: 7258 moveq #88,%d1 <== NOT EXECUTED 46340: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46342: 70ff moveq #-1,%d0 <== NOT EXECUTED 46344: 4e5e unlk %fp <== NOT EXECUTED
pid_t pid __attribute__((unused)),
int policy __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
46346: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00047094 <sched_yield>:
#include <rtems/seterr.h>
#include <rtems/posix/priority.h>
#include <rtems/posix/time.h>
int sched_yield( void )
{
47094: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47098: 2039 0006 10ec movel 610ec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4709e: 5280 addql #1,%d0 <== NOT EXECUTED 470a0: 23c0 0006 10ec movel %d0,610ec <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Yield_processor();
470a6: 4eb9 0004 a8b8 jsr 4a8b8 <_Thread_Yield_processor> <== NOT EXECUTED
_Thread_Enable_dispatch();
470ac: 4eb9 0004 9a8a jsr 49a8a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
470b2: 4280 clrl %d0 <== NOT EXECUTED 470b4: 4e5e unlk %fp <== NOT EXECUTED
00049178 <sem_close>:
*/
int sem_close(
sem_t *sem
)
{
49178: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4917c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
sem_t *id,
Objects_Locations *location
)
{
return (POSIX_Semaphore_Control *)
_Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location );
49180: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49184: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 49186: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 4918c: 4eb9 0004 b590 jsr 4b590 <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
49192: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49196: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4919a: 6712 beqs 491ae <sem_close+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4919c: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 491a2: 7216 moveq #22,%d1 <== NOT EXECUTED 491a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 491a6: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
491a8: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
491aa: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
491ac: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
the_semaphore->open_count -= 1;
491ae: 2040 moveal %d0,%a0 <== NOT EXECUTED 491b0: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED
_POSIX_Semaphore_Delete( the_semaphore );
491b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 491b6: 4eb9 0004 fcc8 jsr 4fcc8 <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
491bc: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
491c2: 588f addql #4,%sp <== NOT EXECUTED 491c4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
491c6: 4e5e unlk %fp <== NOT EXECUTED
...
000491cc <sem_destroy>:
*/
int sem_destroy(
sem_t *sem
)
{
491cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 491d0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 491d4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 491d8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 491da: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 491e0: 4eb9 0004 b590 jsr 4b590 <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
491e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 491ea: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 491ee: 6712 beqs 49202 <sem_destroy+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
491f0: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 491f6: 7216 moveq #22,%d1 <== NOT EXECUTED 491f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 491fa: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
491fc: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
491fe: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
49200: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Undefined operation on a named semaphore.
*/
if ( the_semaphore->named == true ) {
49202: 2040 moveal %d0,%a0 <== NOT EXECUTED 49204: 4a28 0014 tstb %a0@(20) <== NOT EXECUTED 49208: 6616 bnes 49220 <sem_destroy+0x54> <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EINVAL );
}
_POSIX_Semaphore_Delete( the_semaphore );
4920a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4920c: 4eb9 0004 fcc8 jsr 4fcc8 <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
49212: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
49218: 588f addql #4,%sp <== NOT EXECUTED 4921a: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4921c: 4e5e unlk %fp <== NOT EXECUTED 4921e: 4e75 rts <== NOT EXECUTED
/*
* Undefined operation on a named semaphore.
*/
if ( the_semaphore->named == true ) {
_Thread_Enable_dispatch();
49220: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
49226: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 4922c: 7216 moveq #22,%d1 <== NOT EXECUTED 4922e: 2040 moveal %d0,%a0 <== NOT EXECUTED 49230: 70ff moveq #-1,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
49232: 4e5e unlk %fp <== NOT EXECUTED
* Undefined operation on a named semaphore.
*/
if ( the_semaphore->named == true ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EINVAL );
49234: 2081 movel %d1,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
00049238 <sem_getvalue>:
int sem_getvalue(
sem_t *sem,
int *sval
)
{
49238: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4923c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49240: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49244: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 49246: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 4924c: 4eb9 0004 b590 jsr 4b590 <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
49252: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49256: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4925a: 6712 beqs 4926e <sem_getvalue+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4925c: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 49262: 7216 moveq #22,%d1 <== NOT EXECUTED 49264: 2040 moveal %d0,%a0 <== NOT EXECUTED 49266: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
49268: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4926a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4926c: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
*sval = _CORE_semaphore_Get_count( &the_semaphore->Semaphore );
4926e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 49272: 2240 moveal %d0,%a1 <== NOT EXECUTED 49274: 20a9 0062 movel %a1@(98),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49278: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4927e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
49280: 4e5e unlk %fp <== NOT EXECUTED
00049284 <sem_init>:
int sem_init(
sem_t *sem,
int pshared,
unsigned int value
)
{
49284: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49288: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4928a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int status;
POSIX_Semaphore_Control *the_semaphore;
if ( !sem )
4928e: 4a8a tstl %a2 <== NOT EXECUTED 49290: 672e beqs 492c0 <sem_init+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
status = _POSIX_Semaphore_Create_support(
49292: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49296: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4929a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4929e: 42a7 clrl %sp@- <== NOT EXECUTED 492a0: 4eb9 0004 fb68 jsr 4fb68 <_POSIX_Semaphore_Create_support> <== NOT EXECUTED
pshared,
value,
&the_semaphore
);
if ( status != -1 )
492a6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 492aa: 72ff moveq #-1,%d1 <== NOT EXECUTED 492ac: b280 cmpl %d0,%d1 <== NOT EXECUTED 492ae: 6708 beqs 492b8 <sem_init+0x34> <== NOT EXECUTED
*sem = the_semaphore->Object.id;
492b0: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 492b4: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return status;
}
492b8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 492bc: 4e5e unlk %fp <== NOT EXECUTED 492be: 4e75 rts <== NOT EXECUTED
{
int status;
POSIX_Semaphore_Control *the_semaphore;
if ( !sem )
rtems_set_errno_and_return_minus_one( EINVAL );
492c0: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED
if ( status != -1 )
*sem = the_semaphore->Object.id;
return status;
}
492c6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
int status;
POSIX_Semaphore_Control *the_semaphore;
if ( !sem )
rtems_set_errno_and_return_minus_one( EINVAL );
492ca: 2040 moveal %d0,%a0 <== NOT EXECUTED 492cc: 7216 moveq #22,%d1 <== NOT EXECUTED 492ce: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( status != -1 )
*sem = the_semaphore->Object.id;
return status;
}
492d0: 4e5e unlk %fp <== NOT EXECUTED
{
int status;
POSIX_Semaphore_Control *the_semaphore;
if ( !sem )
rtems_set_errno_and_return_minus_one( EINVAL );
492d2: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( status != -1 )
*sem = the_semaphore->Object.id;
return status;
}
...
000492d8 <sem_open>:
int oflag,
...
/* mode_t mode, */
/* unsigned int value */
)
{
492d8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
492dc: 2039 0006 4f98 movel 64f98 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 492e2: 5280 addql #1,%d0 <== NOT EXECUTED 492e4: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 492e8: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 492ec: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 492f0: 23c0 0006 4f98 movel %d0,64f98 <_Thread_Dispatch_disable_level><== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
_Thread_Disable_dispatch();
if ( oflag & O_CREAT ) {
492f6: 2803 movel %d3,%d4 <== NOT EXECUTED 492f8: 0284 0000 0200 andil #512,%d4 <== NOT EXECUTED 492fe: 6600 0086 bnew 49386 <sem_open+0xae> <== NOT EXECUTED
/* unsigned int value */
)
{
va_list arg;
mode_t mode;
unsigned int value = 0;
49302: 95ca subal %a2,%a2 <== NOT EXECUTED
mode = (mode_t) va_arg( arg, unsigned int );
value = va_arg( arg, unsigned int );
va_end(arg);
}
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
49304: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49308: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4930a: 4eb9 0004 fd20 jsr 4fd20 <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED
* and we can just return a pointer to the id. Otherwise we may
* need to check to see if this is a "semaphore does not exist"
* or some other miscellaneous error on the name.
*/
if ( status ) {
49310: 508f addql #8,%sp <== NOT EXECUTED
mode = (mode_t) va_arg( arg, unsigned int );
value = va_arg( arg, unsigned int );
va_end(arg);
}
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
49312: 2400 movel %d0,%d2 <== NOT EXECUTED
* and we can just return a pointer to the id. Otherwise we may
* need to check to see if this is a "semaphore does not exist"
* or some other miscellaneous error on the name.
*/
if ( status ) {
49314: 6726 beqs 4933c <sem_open+0x64> <== NOT EXECUTED
/*
* Unless provided a valid name that did not already exist
* and we are willing to create then it is an error.
*/
if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {
49316: 7002 moveq #2,%d0 <== NOT EXECUTED 49318: b082 cmpl %d2,%d0 <== NOT EXECUTED 4931a: 6604 bnes 49320 <sem_open+0x48> <== NOT EXECUTED 4931c: 4a84 tstl %d4 <== NOT EXECUTED 4931e: 666e bnes 4938e <sem_open+0xb6> <== NOT EXECUTED
_Thread_Enable_dispatch();
49320: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( status, sem_t * );
49326: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 4932c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4932e: 70ff moveq #-1,%d0 <== NOT EXECUTED 49330: 2082 movel %d2,%a0@ <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
49332: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED 49338: 4e5e unlk %fp <== NOT EXECUTED 4933a: 4e75 rts <== NOT EXECUTED
/*
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
4933c: 0283 0000 0a00 andil #2560,%d3 <== NOT EXECUTED 49342: 0c83 0000 0a00 cmpil #2560,%d3 <== NOT EXECUTED 49348: 6772 beqs 493bc <sem_open+0xe4> <== NOT EXECUTED 4934a: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
}
the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
the_semaphore->open_count += 1;
_Thread_Enable_dispatch();
4934e: 45f9 0004 bea6 lea 4bea6 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 49354: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49358: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 4935e: 4eb9 0004 b590 jsr 4b590 <_Objects_Get> <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
}
the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
the_semaphore->open_count += 1;
49364: 2040 moveal %d0,%a0 <== NOT EXECUTED 49366: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
}
the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
4936a: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
the_semaphore->open_count += 1;
_Thread_Enable_dispatch();
4936e: 4e92 jsr %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49370: 4e92 jsr %a2@ <== NOT EXECUTED
goto return_id;
49372: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return_id:
#if defined(RTEMS_USE_16_BIT_OBJECT)
the_semaphore->Semaphore_id = the_semaphore->Object.id;
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
49376: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4937a: 5080 addql #8,%d0 <== NOT EXECUTED
#endif return id; }
4937c: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED 49382: 4e5e unlk %fp <== NOT EXECUTED 49384: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
if ( oflag & O_CREAT ) {
va_start(arg, oflag);
mode = (mode_t) va_arg( arg, unsigned int );
value = va_arg( arg, unsigned int );
49386: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED 4938a: 6000 ff78 braw 49304 <sem_open+0x2c> <== NOT EXECUTED
/*
* At this point, the semaphore does not exist and everything has been
* checked. We should go ahead and create a semaphore.
*/
status =_POSIX_Semaphore_Create_support(
4938e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49392: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49394: 42a7 clrl %sp@- <== NOT EXECUTED 49396: 2f05 movel %d5,%sp@- <== NOT EXECUTED 49398: 4eb9 0004 fb68 jsr 4fb68 <_POSIX_Semaphore_Create_support> <== NOT EXECUTED 4939e: 2400 movel %d0,%d2 <== NOT EXECUTED
/*
* errno was set by Create_support, so don't set it again.
*/
_Thread_Enable_dispatch();
493a0: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( status == -1 )
493a6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 493aa: 70ff moveq #-1,%d0 <== NOT EXECUTED 493ac: b082 cmpl %d2,%d0 <== NOT EXECUTED 493ae: 66c6 bnes 49376 <sem_open+0x9e> <== NOT EXECUTED
return SEM_FAILED;
493b0: 70ff moveq #-1,%d0 <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
493b2: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED 493b8: 4e5e unlk %fp <== NOT EXECUTED 493ba: 4e75 rts <== NOT EXECUTED
/*
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
_Thread_Enable_dispatch();
493bc: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
493c2: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 493c8: 7211 moveq #17,%d1 <== NOT EXECUTED 493ca: 2040 moveal %d0,%a0 <== NOT EXECUTED 493cc: 70ff moveq #-1,%d0 <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
493ce: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
493d4: 2081 movel %d1,%a0@ <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
493d6: 4e5e unlk %fp <== NOT EXECUTED
...
000493dc <sem_post>:
*/
int sem_post(
sem_t *sem
)
{
493dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 493e0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 493e4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 493e8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 493ea: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 493f0: 4eb9 0004 b590 jsr 4b590 <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
493f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 493fa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 493fe: 6712 beqs 49412 <sem_post+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
49400: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED 49406: 7216 moveq #22,%d1 <== NOT EXECUTED 49408: 2040 moveal %d0,%a0 <== NOT EXECUTED 4940a: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4940c: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4940e: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
49410: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_CORE_semaphore_Surrender(
49412: 2040 moveal %d0,%a0 <== NOT EXECUTED 49414: 42a7 clrl %sp@- <== NOT EXECUTED 49416: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4941a: 4868 001a pea %a0@(26) <== NOT EXECUTED 4941e: 4eb9 0004 aac4 jsr 4aac4 <_CORE_semaphore_Surrender> <== NOT EXECUTED
NULL /* XXX need to define a routine to handle this case */
#else
NULL
#endif
);
_Thread_Enable_dispatch();
49424: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4942a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4942e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
49430: 4e5e unlk %fp <== NOT EXECUTED
00049434 <sem_timedwait>:
int sem_timedwait(
sem_t *sem,
const struct timespec *abstime
)
{
49434: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49438: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
4943a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4943e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
int sem_timedwait(
sem_t *sem,
const struct timespec *abstime
)
{
49442: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
* * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
49446: 4eb9 0004 ef80 jsr 4ef80 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
4944c: 508f addql #8,%sp <== NOT EXECUTED 4944e: 7203 moveq #3,%d1 <== NOT EXECUTED 49450: b280 cmpl %d0,%d1 <== NOT EXECUTED 49452: 671a beqs 4946e <sem_timedwait+0x3a> <== NOT EXECUTED
do_wait = false;
lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks );
49454: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49458: 42a7 clrl %sp@- <== NOT EXECUTED 4945a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4945c: 4eb9 0004 fd94 jsr 4fd94 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
rtems_set_errno_and_return_minus_one( ETIMEDOUT );
}
return lock_status;
}
49462: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks );
49466: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
rtems_set_errno_and_return_minus_one( ETIMEDOUT );
}
return lock_status;
}
4946a: 4e5e unlk %fp <== NOT EXECUTED 4946c: 4e75 rts <== NOT EXECUTED
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks );
4946e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49472: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 49476: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49478: 4eb9 0004 fd94 jsr 4fd94 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
rtems_set_errno_and_return_minus_one( ETIMEDOUT );
}
return lock_status;
}
4947e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks );
49482: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
rtems_set_errno_and_return_minus_one( ETIMEDOUT );
}
return lock_status;
}
49486: 4e5e unlk %fp <== NOT EXECUTED
...
0004948c <sem_trywait>:
*/
int sem_trywait(
sem_t *sem
)
{
4948c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Semaphore_Wait_support(sem, false, THREAD_QUEUE_WAIT_FOREVER);
49490: 42a7 clrl %sp@- <== NOT EXECUTED 49492: 42a7 clrl %sp@- <== NOT EXECUTED 49494: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49498: 4eb9 0004 fd94 jsr 4fd94 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
}
4949e: 4e5e unlk %fp <== NOT EXECUTED
...
000494a4 <sem_unlink>:
*/
int sem_unlink(
const char *name
)
{
494a4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 494a8: 2039 0006 4f98 movel 64f98 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 494ae: 5280 addql #1,%d0 <== NOT EXECUTED 494b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 494b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 494b4: 23c0 0006 4f98 movel %d0,64f98 <_Thread_Dispatch_disable_level><== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
sem_t the_semaphore_id;
_Thread_Disable_dispatch();
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
494ba: 486e fffc pea %fp@(-4) <== NOT EXECUTED 494be: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 494c2: 4eb9 0004 fd20 jsr 4fd20 <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED
if ( status != 0 ) {
494c8: 508f addql #8,%sp <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
sem_t the_semaphore_id;
_Thread_Disable_dispatch();
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
494ca: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( status != 0 ) {
494cc: 6644 bnes 49512 <sem_unlink+0x6e> <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
494ce: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( status );
}
the_semaphore = (POSIX_Semaphore_Control *) _Objects_Get_local_object(
494d0: 2079 0006 51ec moveal 651ec <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED 494d6: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED 494da: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED
&_POSIX_Semaphore_Information,
_Objects_Get_index( the_semaphore_id )
);
the_semaphore->linked = false;
494de: 4200 clrb %d0 <== NOT EXECUTED 494e0: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Namespace_remove (
POSIX_Semaphore_Control *the_semaphore
)
{
_Objects_Namespace_remove(
494e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 494e6: 4879 0006 51d4 pea 651d4 <_POSIX_Semaphore_Information> <== NOT EXECUTED 494ec: 4eb9 0004 b710 jsr 4b710 <_Objects_Namespace_remove> <== NOT EXECUTED
_POSIX_Semaphore_Namespace_remove( the_semaphore ); _POSIX_Semaphore_Delete( the_semaphore );
494f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 494f4: 4eb9 0004 fcc8 jsr 4fcc8 <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
494fa: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
49500: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
the_semaphore->linked = false;
_POSIX_Semaphore_Namespace_remove( the_semaphore );
_POSIX_Semaphore_Delete( the_semaphore );
_Thread_Enable_dispatch();
return 0;
49504: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49508: 4280 clrl %d0 <== NOT EXECUTED
}
4950a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4950e: 4e5e unlk %fp <== NOT EXECUTED 49510: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
if ( status != 0 ) {
_Thread_Enable_dispatch();
49512: 4eb9 0004 bea6 jsr 4bea6 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( status );
49518: 4eb9 0005 2b0c jsr 52b0c <__errno> <== NOT EXECUTED
_POSIX_Semaphore_Namespace_remove( the_semaphore );
_POSIX_Semaphore_Delete( the_semaphore );
_Thread_Enable_dispatch();
return 0;
}
4951e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Thread_Disable_dispatch();
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
if ( status != 0 ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( status );
49522: 2040 moveal %d0,%a0 <== NOT EXECUTED 49524: 70ff moveq #-1,%d0 <== NOT EXECUTED 49526: 2082 movel %d2,%a0@ <== NOT EXECUTED
_POSIX_Semaphore_Namespace_remove( the_semaphore );
_POSIX_Semaphore_Delete( the_semaphore );
_Thread_Enable_dispatch();
return 0;
}
49528: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4952c: 4e5e unlk %fp <== NOT EXECUTED
00049530 <sem_wait>:
*/
int sem_wait(
sem_t *sem
)
{
49530: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Semaphore_Wait_support( sem, true, THREAD_QUEUE_WAIT_FOREVER );
49534: 42a7 clrl %sp@- <== NOT EXECUTED 49536: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4953a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4953e: 4eb9 0004 fd94 jsr 4fd94 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
}
49544: 4e5e unlk %fp <== NOT EXECUTED
00045e50 <seteuid>:
int seteuid( uid_t euid )
{
_POSIX_types_Euid = euid;
return 0;
}
45e50: 4280 clrl %d0 <== NOT EXECUTED
#include <unistd.h>
#include <rtems/userenv.h>
int seteuid( uid_t euid )
{
45e52: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Euid = euid;
45e56: 2079 0006 0eec moveal 60eec <rtems_current_user_env>,%a0 <== NOT EXECUTED 45e5c: 316e 000a 0036 movew %fp@(10),%a0@(54) <== NOT EXECUTED
return 0; }
45e62: 4e5e unlk %fp <== NOT EXECUTED
...
00044b3c <setgid>:
gid_t gid
)
{
_POSIX_types_Gid = gid;
return 0;
}
44b3c: 4280 clrl %d0 <== NOT EXECUTED
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setgid(
gid_t gid
)
{
44b3e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Gid = gid;
44b42: 2079 0005 fffc moveal 5fffc <rtems_current_user_env>,%a0 <== NOT EXECUTED 44b48: 316e 000a 0034 movew %fp@(10),%a0@(52) <== NOT EXECUTED
return 0; }
44b4e: 4e5e unlk %fp <== NOT EXECUTED
...
00043ca0 <setgrent>:
void setgrent(void)
{
43ca0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
init_etc_passwd_group();
43ca4: 4eb9 0004 37aa jsr 437aa <init_etc_passwd_group> <== NOT EXECUTED
if (group_fp != NULL)
43caa: 2039 0006 0df0 movel 60df0 <group_fp>,%d0 <== NOT EXECUTED 43cb0: 670a beqs 43cbc <setgrent+0x1c> <== NOT EXECUTED
fclose(group_fp);
43cb2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43cb4: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED 43cba: 588f addql #4,%sp <== NOT EXECUTED
group_fp = fopen("/etc/group", "r");
43cbc: 4879 0005 f69f pea 5f69f <_global_impure_ptr+0xbf> <== NOT EXECUTED 43cc2: 4879 0005 ee30 pea 5ee30 <rtems_status_assoc+0x21a> <== NOT EXECUTED 43cc8: 4eb9 0005 0048 jsr 50048 <fopen> <== NOT EXECUTED 43cce: 508f addql #8,%sp <== NOT EXECUTED
}
43cd0: 4e5e unlk %fp <== NOT EXECUTED
{
init_etc_passwd_group();
if (group_fp != NULL)
fclose(group_fp);
group_fp = fopen("/etc/group", "r");
43cd2: 23c0 0006 0df0 movel %d0,60df0 <group_fp> <== NOT EXECUTED
}
000461e4 <setitimer>:
int setitimer(
int which,
const struct itimerval *value,
struct itimerval *ovalue
)
{
461e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( !value )
461e8: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 461ec: 6732 beqs 46220 <setitimer+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
if ( !ovalue )
461ee: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 461f2: 672c beqs 46220 <setitimer+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
switch ( which ) {
461f4: 7002 moveq #2,%d0 <== NOT EXECUTED 461f6: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 461fa: 6412 bccs 4620e <setitimer+0x2a> <== NOT EXECUTED
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
461fc: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
}
46202: 4e5e unlk %fp <== NOT EXECUTED
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46204: 2040 moveal %d0,%a0 <== NOT EXECUTED 46206: 7016 moveq #22,%d0 <== NOT EXECUTED 46208: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4620a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4620c: 4e75 rts <== NOT EXECUTED
switch ( which ) {
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
4620e: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED 46214: 7258 moveq #88,%d1 <== NOT EXECUTED 46216: 2040 moveal %d0,%a0 <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46218: 70ff moveq #-1,%d0 <== NOT EXECUTED 4621a: 4e5e unlk %fp <== NOT EXECUTED
switch ( which ) {
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
4621c: 2081 movel %d1,%a0@ <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4621e: 4e75 rts <== NOT EXECUTED
{
if ( !value )
rtems_set_errno_and_return_minus_one( EFAULT );
if ( !ovalue )
rtems_set_errno_and_return_minus_one( EFAULT );
46220: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46226: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !value )
rtems_set_errno_and_return_minus_one( EFAULT );
if ( !ovalue )
rtems_set_errno_and_return_minus_one( EFAULT );
46228: 2040 moveal %d0,%a0 <== NOT EXECUTED 4622a: 700e moveq #14,%d0 <== NOT EXECUTED 4622c: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4622e: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00044b54 <setpgid>:
int setpgid(
pid_t pid __attribute__((unused)),
pid_t pgid __attribute__((unused))
)
{
44b54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
44b58: 4eb9 0004 f7fc jsr 4f7fc <__errno> <== NOT EXECUTED 44b5e: 7258 moveq #88,%d1 <== NOT EXECUTED 44b60: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
44b62: 70ff moveq #-1,%d0 <== NOT EXECUTED 44b64: 4e5e unlk %fp <== NOT EXECUTED
int setpgid(
pid_t pid __attribute__((unused)),
pid_t pgid __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
44b66: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00043b54 <setpwent>:
void setpwent(void)
{
43b54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
init_etc_passwd_group();
43b58: 4eb9 0004 37aa jsr 437aa <init_etc_passwd_group> <== NOT EXECUTED
if (passwd_fp != NULL)
43b5e: 2039 0006 0eca movel 60eca <passwd_fp>,%d0 <== NOT EXECUTED 43b64: 670a beqs 43b70 <setpwent+0x1c> <== NOT EXECUTED
fclose(passwd_fp);
43b66: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43b68: 4eb9 0004 f94a jsr 4f94a <fclose> <== NOT EXECUTED 43b6e: 588f addql #4,%sp <== NOT EXECUTED
passwd_fp = fopen("/etc/passwd", "r");
43b70: 4879 0005 f69f pea 5f69f <_global_impure_ptr+0xbf> <== NOT EXECUTED 43b76: 4879 0005 edbb pea 5edbb <rtems_status_assoc+0x1a5> <== NOT EXECUTED 43b7c: 4eb9 0005 0048 jsr 50048 <fopen> <== NOT EXECUTED 43b82: 508f addql #8,%sp <== NOT EXECUTED
}
43b84: 4e5e unlk %fp <== NOT EXECUTED
{
init_etc_passwd_group();
if (passwd_fp != NULL)
fclose(passwd_fp);
passwd_fp = fopen("/etc/passwd", "r");
43b86: 23c0 0006 0eca movel %d0,60eca <passwd_fp> <== NOT EXECUTED
}
00044b6c <setsid>:
*
* 4.3.2 Create Session and Set Process Group ID, P1003.1b-1993, p. 88
*/
pid_t setsid( void )
{
44b6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
44b70: 4eb9 0004 f7fc jsr 4f7fc <__errno> <== NOT EXECUTED 44b76: 7201 moveq #1,%d1 <== NOT EXECUTED 44b78: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
44b7a: 70ff moveq #-1,%d0 <== NOT EXECUTED 44b7c: 4e5e unlk %fp <== NOT EXECUTED
* 4.3.2 Create Session and Set Process Group ID, P1003.1b-1993, p. 88
*/
pid_t setsid( void )
{
rtems_set_errno_and_return_minus_one( EPERM );
44b7e: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00044b84 <setuid>:
uid_t uid
)
{
_POSIX_types_Uid = uid;
return 0;
}
44b84: 4280 clrl %d0 <== NOT EXECUTED
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setuid(
uid_t uid
)
{
44b86: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Uid = uid;
44b8a: 2079 0005 fffc moveal 5fffc <rtems_current_user_env>,%a0 <== NOT EXECUTED 44b90: 316e 000a 0032 movew %fp@(10),%a0@(50) <== NOT EXECUTED
return 0; }
44b96: 4e5e unlk %fp <== NOT EXECUTED
...
00046da8 <sigaction>:
int sigaction(
int sig,
const struct sigaction *act,
struct sigaction *oact
)
{
46da8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46dac: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 46db0: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 46db4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 46db8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
if ( oact )
46dbc: 4a89 tstl %a1 <== NOT EXECUTED 46dbe: 6718 beqs 46dd8 <sigaction+0x30> <== NOT EXECUTED
*oact = _POSIX_signals_Vectors[ sig ];
46dc0: 2202 movel %d2,%d1 <== NOT EXECUTED 46dc2: 2002 movel %d2,%d0 <== NOT EXECUTED 46dc4: e989 lsll #4,%d1 <== NOT EXECUTED 46dc6: e588 lsll #2,%d0 <== NOT EXECUTED 46dc8: 2041 moveal %d1,%a0 <== NOT EXECUTED 46dca: 91c0 subal %d0,%a0 <== NOT EXECUTED 46dcc: d1fc 0006 216a addal #401770,%a0 <== NOT EXECUTED 46dd2: 22d8 movel %a0@+,%a1@+ <== NOT EXECUTED 46dd4: 22d8 movel %a0@+,%a1@+ <== NOT EXECUTED 46dd6: 2290 movel %a0@,%a1@ <== NOT EXECUTED
if ( !sig )
46dd8: 4a82 tstl %d2 <== NOT EXECUTED 46dda: 6700 0088 beqw 46e64 <sigaction+0xbc> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
46dde: 2002 movel %d2,%d0 <== NOT EXECUTED 46de0: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
46de2: 721f moveq #31,%d1 <== NOT EXECUTED 46de4: b280 cmpl %d0,%d1 <== NOT EXECUTED 46de6: 657c bcss 46e64 <sigaction+0xbc> <== NOT EXECUTED
*
* NOTE: Solaris documentation claims to "silently enforce" this which
* contradicts the POSIX specification.
*/
if ( sig == SIGKILL )
46de8: 7009 moveq #9,%d0 <== NOT EXECUTED 46dea: b082 cmpl %d2,%d0 <== NOT EXECUTED 46dec: 6776 beqs 46e64 <sigaction+0xbc> <== NOT EXECUTED
/*
* Evaluate the new action structure and set the global signal vector
* appropriately.
*/
if ( act ) {
46dee: 4a8a tstl %a2 <== NOT EXECUTED 46df0: 6766 beqs 46e58 <sigaction+0xb0> <== NOT EXECUTED
/*
* Unless the user is installing the default signal actions, then
* we can just copy the provided sigaction structure into the vectors.
*/
_ISR_Disable( level );
46df2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 46df8: 40c3 movew %sr,%d3 <== NOT EXECUTED 46dfa: 8083 orl %d3,%d0 <== NOT EXECUTED 46dfc: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( act->sa_handler == SIG_DFL ) {
46dfe: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 46e02: 6730 beqs 46e34 <sigaction+0x8c> <== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
} else {
_POSIX_signals_Clear_process_signals( sig );
46e04: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46e06: 4eb9 0004 cbe4 jsr 4cbe4 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = *act;
46e0c: 588f addql #4,%sp <== NOT EXECUTED 46e0e: 2002 movel %d2,%d0 <== NOT EXECUTED 46e10: 224a moveal %a2,%a1 <== NOT EXECUTED 46e12: e98a lsll #4,%d2 <== NOT EXECUTED 46e14: e588 lsll #2,%d0 <== NOT EXECUTED 46e16: 2042 moveal %d2,%a0 <== NOT EXECUTED 46e18: 91c0 subal %d0,%a0 <== NOT EXECUTED 46e1a: d1fc 0006 216a addal #401770,%a0 <== NOT EXECUTED 46e20: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e22: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e24: 2091 movel %a1@,%a0@ <== NOT EXECUTED
}
_ISR_Enable( level );
46e26: 46c3 movew %d3,%sr <== NOT EXECUTED
* now (signals not posted when SIG_IGN).
* + If we are now ignoring a signal that was previously pending,
* we clear the pending signal indicator.
*/
return 0;
46e28: 4280 clrl %d0 <== NOT EXECUTED
}
46e2a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46e30: 4e5e unlk %fp <== NOT EXECUTED 46e32: 4e75 rts <== NOT EXECUTED
* we can just copy the provided sigaction structure into the vectors.
*/
_ISR_Disable( level );
if ( act->sa_handler == SIG_DFL ) {
_POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
46e34: 2002 movel %d2,%d0 <== NOT EXECUTED 46e36: e98a lsll #4,%d2 <== NOT EXECUTED 46e38: e588 lsll #2,%d0 <== NOT EXECUTED 46e3a: 9480 subl %d0,%d2 <== NOT EXECUTED 46e3c: 2242 moveal %d2,%a1 <== NOT EXECUTED 46e3e: 2042 moveal %d2,%a0 <== NOT EXECUTED 46e40: d3fc 0005 f6fa addal #390906,%a1 <== NOT EXECUTED 46e46: d1fc 0006 216a addal #401770,%a0 <== NOT EXECUTED 46e4c: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e4e: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e50: 2091 movel %a1@,%a0@ <== NOT EXECUTED
} else {
_POSIX_signals_Clear_process_signals( sig );
_POSIX_signals_Vectors[ sig ] = *act;
}
_ISR_Enable( level );
46e52: 46c3 movew %d3,%sr <== NOT EXECUTED
* now (signals not posted when SIG_IGN).
* + If we are now ignoring a signal that was previously pending,
* we clear the pending signal indicator.
*/
return 0;
46e54: 4280 clrl %d0 <== NOT EXECUTED 46e56: 60d2 bras 46e2a <sigaction+0x82> <== NOT EXECUTED 46e58: 4280 clrl %d0 <== NOT EXECUTED
}
46e5a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46e60: 4e5e unlk %fp <== NOT EXECUTED 46e62: 4e75 rts <== NOT EXECUTED
* NOTE: Solaris documentation claims to "silently enforce" this which
* contradicts the POSIX specification.
*/
if ( sig == SIGKILL )
rtems_set_errno_and_return_minus_one( EINVAL );
46e64: 4eb9 0004 fb80 jsr 4fb80 <__errno> <== NOT EXECUTED 46e6a: 7216 moveq #22,%d1 <== NOT EXECUTED 46e6c: 2040 moveal %d0,%a0 <== NOT EXECUTED 46e6e: 70ff moveq #-1,%d0 <== NOT EXECUTED
* + If we are now ignoring a signal that was previously pending,
* we clear the pending signal indicator.
*/
return 0;
}
46e70: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
* NOTE: Solaris documentation claims to "silently enforce" this which
* contradicts the POSIX specification.
*/
if ( sig == SIGKILL )
rtems_set_errno_and_return_minus_one( EINVAL );
46e76: 2081 movel %d1,%a0@ <== NOT EXECUTED
* + If we are now ignoring a signal that was previously pending,
* we clear the pending signal indicator.
*/
return 0;
}
46e78: 4e5e unlk %fp <== NOT EXECUTED
00046e7c <sigaddset>:
int sigaddset(
sigset_t *set,
int signo
)
{
46e7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46e80: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46e84: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 46e88: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !set )
46e8a: 4a88 tstl %a0 <== NOT EXECUTED 46e8c: 671e beqs 46eac <sigaddset+0x30> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
46e8e: 4a80 tstl %d0 <== NOT EXECUTED 46e90: 671a beqs 46eac <sigaddset+0x30> <== NOT EXECUTED 46e92: 2400 movel %d0,%d2 <== NOT EXECUTED 46e94: 5382 subql #1,%d2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(signo) )
46e96: 701f moveq #31,%d0 <== NOT EXECUTED 46e98: b082 cmpl %d2,%d0 <== NOT EXECUTED 46e9a: 6510 bcss 46eac <sigaddset+0x30> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
46e9c: 7201 moveq #1,%d1 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
*set |= signo_to_mask(signo);
return 0;
46e9e: 4280 clrl %d0 <== NOT EXECUTED 46ea0: e5a9 lsll %d2,%d1 <== NOT EXECUTED
}
46ea2: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46ea6: 4e5e unlk %fp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
*set |= signo_to_mask(signo);
46ea8: 8390 orl %d1,%a0@ <== NOT EXECUTED
return 0; }
46eaa: 4e75 rts <== NOT EXECUTED
if ( !signo )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
46eac: 4eb9 0004 fb80 jsr 4fb80 <__errno> <== NOT EXECUTED
*set |= signo_to_mask(signo);
return 0;
}
46eb2: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
if ( !signo )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
46eb6: 2040 moveal %d0,%a0 <== NOT EXECUTED 46eb8: 7216 moveq #22,%d1 <== NOT EXECUTED 46eba: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set |= signo_to_mask(signo);
return 0;
}
46ebc: 4e5e unlk %fp <== NOT EXECUTED
if ( !signo )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
46ebe: 2081 movel %d1,%a0@ <== NOT EXECUTED
*set |= signo_to_mask(signo);
return 0;
}
...
00049374 <sigdelset>:
int sigdelset(
sigset_t *set,
int signo
)
{
49374: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49378: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4937c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 49380: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !set )
49382: 4a88 tstl %a0 <== NOT EXECUTED 49384: 672a beqs 493b0 <sigdelset+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
49386: 4a80 tstl %d0 <== NOT EXECUTED 49388: 671c beqs 493a6 <sigdelset+0x32> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
4938a: 2400 movel %d0,%d2 <== NOT EXECUTED 4938c: 5382 subql #1,%d2 <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
4938e: 701f moveq #31,%d0 <== NOT EXECUTED 49390: b082 cmpl %d2,%d0 <== NOT EXECUTED 49392: 651c bcss 493b0 <sigdelset+0x3c> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
49394: 7201 moveq #1,%d1 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
*set &= ~signo_to_mask(signo);
return 0;
49396: 4280 clrl %d0 <== NOT EXECUTED 49398: e5a9 lsll %d2,%d1 <== NOT EXECUTED
}
4939a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
*set &= ~signo_to_mask(signo);
4939e: 4681 notl %d1 <== NOT EXECUTED
return 0; }
493a0: 4e5e unlk %fp <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
*set &= ~signo_to_mask(signo);
493a2: c390 andl %d1,%a0@ <== NOT EXECUTED
return 0; }
493a4: 4e75 rts <== NOT EXECUTED 493a6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
493aa: 4280 clrl %d0 <== NOT EXECUTED
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
*set &= ~signo_to_mask(signo);
return 0;
}
493ac: 4e5e unlk %fp <== NOT EXECUTED 493ae: 4e75 rts <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
493b0: 4eb9 0005 218c jsr 5218c <__errno> <== NOT EXECUTED
*set &= ~signo_to_mask(signo);
return 0;
}
493b6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
493ba: 2040 moveal %d0,%a0 <== NOT EXECUTED 493bc: 7216 moveq #22,%d1 <== NOT EXECUTED 493be: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set &= ~signo_to_mask(signo);
return 0;
}
493c0: 4e5e unlk %fp <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
493c2: 2081 movel %d1,%a0@ <== NOT EXECUTED
*set &= ~signo_to_mask(signo);
return 0;
}
...
0004bf94 <sigemptyset>:
#include <rtems/seterr.h>
int sigemptyset(
sigset_t *set
)
{
4bf94: 4e56 0000 linkw %fp,#0 4bf98: 206e 0008 moveal %fp@(8),%a0
if ( !set )
4bf9c: 4a88 tstl %a0
4bf9e: 6708 beqs 4bfa8 <sigemptyset+0x14> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
*set = 0;
return 0;
4bfa0: 4280 clrl %d0
}
4bfa2: 4e5e unlk %fp
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
*set = 0;
4bfa4: 4290 clrl %a0@
return 0; }
4bfa6: 4e75 rts
int sigemptyset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
4bfa8: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4bfae: 7216 moveq #22,%d1 <== NOT EXECUTED 4bfb0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bfb2: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set = 0;
return 0;
}
4bfb4: 4e5e unlk %fp <== NOT EXECUTED
int sigemptyset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
4bfb6: 2081 movel %d1,%a0@ <== NOT EXECUTED
*set = 0;
return 0;
}
...
000493f0 <sigfillset>:
#include <rtems/seterr.h>
int sigfillset(
sigset_t *set
)
{
493f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 493f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !set )
493f8: 4a88 tstl %a0 <== NOT EXECUTED 493fa: 670a beqs 49406 <sigfillset+0x16> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
*set = SIGNAL_ALL_MASK;
493fc: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0; }
493fe: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
*set = SIGNAL_ALL_MASK;
49400: 2080 movel %d0,%a0@ <== NOT EXECUTED
return 0;
49402: 4280 clrl %d0 <== NOT EXECUTED
}
49404: 4e75 rts <== NOT EXECUTED
int sigfillset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
49406: 4eb9 0005 218c jsr 5218c <__errno> <== NOT EXECUTED 4940c: 7216 moveq #22,%d1 <== NOT EXECUTED 4940e: 2040 moveal %d0,%a0 <== NOT EXECUTED 49410: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set = SIGNAL_ALL_MASK;
return 0;
}
49412: 4e5e unlk %fp <== NOT EXECUTED
int sigfillset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
49414: 2081 movel %d1,%a0@ <== NOT EXECUTED
*set = SIGNAL_ALL_MASK;
return 0;
}
00049418 <sigismember>:
int sigismember(
const sigset_t *set,
int signo
)
{
49418: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4941c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49420: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !set )
49424: 4a88 tstl %a0 <== NOT EXECUTED 49426: 6724 beqs 4944c <sigismember+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
49428: 4a80 tstl %d0 <== NOT EXECUTED 4942a: 671a beqs 49446 <sigismember+0x2e> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
4942c: 2200 movel %d0,%d1 <== NOT EXECUTED 4942e: 5381 subql #1,%d1 <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
49430: 701f moveq #31,%d0 <== NOT EXECUTED 49432: b081 cmpl %d1,%d0 <== NOT EXECUTED 49434: 6516 bcss 4944c <sigismember+0x34> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
49436: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
49438: 4e5e unlk %fp <== NOT EXECUTED 4943a: e3a8 lsll %d1,%d0 <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( *set & signo_to_mask(signo) )
4943c: c090 andl %a0@,%d0 <== NOT EXECUTED
const sigset_t *set,
int signo
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
4943e: 56c0 sne %d0 <== NOT EXECUTED 49440: 49c0 extbl %d0 <== NOT EXECUTED 49442: 4480 negl %d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
49444: 4e75 rts <== NOT EXECUTED
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
49446: 4280 clrl %d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
49448: 4e5e unlk %fp <== NOT EXECUTED 4944a: 4e75 rts <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
4944c: 4eb9 0005 218c jsr 5218c <__errno> <== NOT EXECUTED 49452: 7216 moveq #22,%d1 <== NOT EXECUTED 49454: 2040 moveal %d0,%a0 <== NOT EXECUTED 49456: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
49458: 4e5e unlk %fp <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
4945a: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
...
00046d2c <signal>:
sighandler_t signal(
int signum,
sighandler_t handler
)
{
46d2c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
struct sigaction s;
struct sigaction old;
s.sa_handler = handler ;
46d30: 2d6e 000c fffc movel %fp@(12),%fp@(-4) <== NOT EXECUTED
sigemptyset(&s.sa_mask);
46d36: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 46d3a: 4eb9 0004 6d04 jsr 46d04 <sigemptyset> <== NOT EXECUTED
s.sa_flags = SA_RESTART;
#else
s.sa_flags = 0;
#endif
sigaction( signum, &s, &old );
46d40: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 46d44: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 46d48: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
s.sa_flags = SA_RESTART | SA_INTERRUPT | SA_NOMASK; s.sa_restorer= NULL ; #elif defined(signal_like_SVR4) s.sa_flags = SA_RESTART; #else s.sa_flags = 0;
46d4c: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED
#endif
sigaction( signum, &s, &old );
46d50: 4eb9 0004 6be8 jsr 46be8 <sigaction> <== NOT EXECUTED
return (sighandler_t) old.sa_handler; }
46d56: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 46d5a: 4e5e unlk %fp <== NOT EXECUTED
...
00046eec <sigpending>:
#include <rtems/seterr.h>
int sigpending(
sigset_t *set
)
{
46eec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46ef0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_API_Control *api;
if ( !set )
46ef4: 4a88 tstl %a0 <== NOT EXECUTED 46ef6: 671c beqs 46f14 <sigpending+0x28> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
*set = api->signals_pending | _POSIX_signals_Pending;
46ef8: 2279 0006 215c moveal 6215c <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
return 0;
46efe: 4280 clrl %d0 <== NOT EXECUTED
}
46f00: 4e5e unlk %fp <== NOT EXECUTED
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
*set = api->signals_pending | _POSIX_signals_Pending;
46f02: 2269 010e moveal %a1@(270),%a1 <== NOT EXECUTED 46f06: 2239 0006 235e movel 6235e <_POSIX_signals_Pending>,%d1 <== NOT EXECUTED 46f0c: 82a9 00d4 orl %a1@(212),%d1 <== NOT EXECUTED 46f10: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
46f12: 4e75 rts <== NOT EXECUTED
)
{
POSIX_API_Control *api;
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
46f14: 4eb9 0004 fb80 jsr 4fb80 <__errno> <== NOT EXECUTED 46f1a: 7216 moveq #22,%d1 <== NOT EXECUTED 46f1c: 2040 moveal %d0,%a0 <== NOT EXECUTED 46f1e: 70ff moveq #-1,%d0 <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
*set = api->signals_pending | _POSIX_signals_Pending;
return 0;
}
46f20: 4e5e unlk %fp <== NOT EXECUTED
)
{
POSIX_API_Control *api;
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
46f22: 2081 movel %d1,%a0@ <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
*set = api->signals_pending | _POSIX_signals_Pending;
return 0;
}
...
00046f28 <sigprocmask>:
int sigprocmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
46f28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_POSIX_API) return pthread_sigmask( how, set, oset ); #else return -1; #endif }
46f2c: 4e5e unlk %fp <== NOT EXECUTED
/*
* P1003.1c/Draft 10, p. 38 maps sigprocmask to pthread_sigmask.
*/
#if defined(RTEMS_POSIX_API)
return pthread_sigmask( how, set, oset );
46f2e: 4ef9 0004 d378 jmp 4d378 <pthread_sigmask> <== NOT EXECUTED
000494a8 <sigqueue>:
int sigqueue(
pid_t pid,
int signo,
const union sigval value
)
{
494a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, signo, &value );
494ac: 486e 0010 pea %fp@(16) <== NOT EXECUTED 494b0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 494b4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 494b8: 4eb9 0004 f374 jsr 4f374 <killinfo> <== NOT EXECUTED
}
494be: 4e5e unlk %fp <== NOT EXECUTED
...
000494c4 <sigsuspend>:
#include <rtems/seterr.h>
int sigsuspend(
const sigset_t *sigmask
)
{
494c4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 494c8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
/* * We use SIG_BLOCK and not SIG_SETMASK because there may be * signals which might be pending, which might get caught here. * We want the signals to be caught inside sigtimedwait. */ status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked );
494cc: 240e movel %fp,%d2 <== NOT EXECUTED 494ce: 5982 subql #4,%d2 <== NOT EXECUTED 494d0: 45f9 0004 949c lea 4949c <sigprocmask>,%a2 <== NOT EXECUTED 494d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
#include <rtems/seterr.h>
int sigsuspend(
const sigset_t *sigmask
)
{
494d8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
/* * We use SIG_BLOCK and not SIG_SETMASK because there may be * signals which might be pending, which might get caught here. * We want the signals to be caught inside sigtimedwait. */ status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked );
494dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 494de: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 494e2: 4e92 jsr %a2@ <== NOT EXECUTED
current_unblocked_signals = ~(*sigmask);
494e4: 2013 movel %a3@,%d0 <== NOT EXECUTED 494e6: 4680 notl %d0 <== NOT EXECUTED
status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL );
494e8: 42a7 clrl %sp@- <== NOT EXECUTED 494ea: 42a7 clrl %sp@- <== NOT EXECUTED 494ec: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
* signals which might be pending, which might get caught here.
* We want the signals to be caught inside sigtimedwait.
*/
status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked );
current_unblocked_signals = ~(*sigmask);
494f0: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL );
494f4: 4eb9 0004 956c jsr 4956c <sigtimedwait> <== NOT EXECUTED
(void) sigprocmask( SIG_SETMASK, &saved_signals_blocked, NULL );
494fa: 42a7 clrl %sp@- <== NOT EXECUTED 494fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 494fe: 42a7 clrl %sp@- <== NOT EXECUTED 49500: 4e92 jsr %a2@ <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
assert( status != -1 );
#endif
rtems_set_errno_and_return_minus_one( EINTR );
49502: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 49506: 4eb9 0005 218c jsr 5218c <__errno> <== NOT EXECUTED 4950c: 7204 moveq #4,%d1 <== NOT EXECUTED 4950e: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
49510: 70ff moveq #-1,%d0 <== NOT EXECUTED 49512: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
assert( status != -1 );
#endif
rtems_set_errno_and_return_minus_one( EINTR );
49518: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4951a: 4e5e unlk %fp <== NOT EXECUTED
...
00047244 <sigtimedwait>:
int sigtimedwait(
const sigset_t *set,
siginfo_t *info,
const struct timespec *timeout
)
{
47244: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 47248: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4724c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 47250: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 47254: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
/*
* Error check parameters before disabling interrupts.
*/
if ( !set )
47258: 4a8b tstl %a3 <== NOT EXECUTED 4725a: 6700 01b2 beqw 4740e <sigtimedwait+0x1ca> <== NOT EXECUTED
/* NOTE: This is very specifically a RELATIVE not ABSOLUTE time
* in the Open Group specification.
*/
interval = 0;
if ( timeout ) {
4725e: 4a82 tstl %d2 <== NOT EXECUTED 47260: 6700 0124 beqw 47386 <sigtimedwait+0x142> <== NOT EXECUTED
if ( !_Timespec_Is_valid( timeout ) )
47264: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47266: 4eb9 0004 ac54 jsr 4ac54 <_Timespec_Is_valid> <== NOT EXECUTED 4726c: 588f addql #4,%sp <== NOT EXECUTED 4726e: 4a00 tstb %d0 <== NOT EXECUTED 47270: 6700 01b6 beqw 47428 <sigtimedwait+0x1e4> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
interval = _Timespec_To_ticks( timeout );
47274: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47276: 4eb9 0004 acd0 jsr 4acd0 <_Timespec_To_ticks> <== NOT EXECUTED
if ( !interval )
4727c: 588f addql #4,%sp <== NOT EXECUTED 4727e: 4a80 tstl %d0 <== NOT EXECUTED 47280: 6700 018c beqw 4740e <sigtimedwait+0x1ca> <== NOT EXECUTED
/*
* Initialize local variables.
*/
the_info = ( info ) ? info : &signal_information;
47284: 4a8a tstl %a2 <== NOT EXECUTED 47286: 6700 0106 beqw 4738e <sigtimedwait+0x14a> <== NOT EXECUTED
the_thread = _Thread_Executing;
4728a: 2079 0006 262c moveal 6262c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
47290: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
the_info = ( info ) ? info : &signal_information;
the_thread = _Thread_Executing;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
47296: 2868 010e moveal %a0@(270),%a4 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
4729a: 40c3 movew %sr,%d3 <== NOT EXECUTED 4729c: 8283 orl %d3,%d1 <== NOT EXECUTED 4729e: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( *set & api->signals_pending ) {
472a0: 2213 movel %a3@,%d1 <== NOT EXECUTED 472a2: 2801 movel %d1,%d4 <== NOT EXECUTED 472a4: 242c 00d4 movel %a4@(212),%d2 <== NOT EXECUTED 472a8: c882 andl %d2,%d4 <== NOT EXECUTED 472aa: 6600 010a bnew 473b6 <sigtimedwait+0x172> <== NOT EXECUTED
return the_info->si_signo;
}
/* Process pending signals? */
if ( *set & _POSIX_signals_Pending ) {
472ae: 2439 0006 282e movel 6282e <_POSIX_signals_Pending>,%d2 <== NOT EXECUTED 472b4: c282 andl %d2,%d1 <== NOT EXECUTED 472b6: 6600 0094 bnew 4734c <sigtimedwait+0x108> <== NOT EXECUTED 472ba: 2239 0006 219c movel 6219c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
the_info->si_code = SI_USER;
the_info->si_value.sival_int = 0;
return signo;
}
the_info->si_signo = -1;
472c0: 74ff moveq #-1,%d2 <== NOT EXECUTED 472c2: 5281 addql #1,%d1 <== NOT EXECUTED 472c4: 2482 movel %d2,%a2@ <== NOT EXECUTED 472c6: 23c1 0006 219c movel %d1,6219c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
the_thread->Wait.return_code = EINTR;
472cc: 7204 moveq #4,%d1 <== NOT EXECUTED
}
the_info->si_signo = -1;
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
472ce: 43f9 0006 27c6 lea 627c6 <_POSIX_signals_Wait_queue>,%a1 <== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
472d4: 2141 0034 movel %d1,%a0@(52) <== NOT EXECUTED
the_thread->Wait.option = *set;
472d8: 2153 0030 movel %a3@,%a0@(48) <== NOT EXECUTED
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;
472dc: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
the_thread->Wait.return_argument = the_info;
472e0: 214a 0028 movel %a2,%a0@(40) <== NOT EXECUTED
}
the_info->si_signo = -1;
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
472e4: 2149 0044 movel %a1,%a0@(68) <== NOT EXECUTED 472e8: 23c1 0006 27f6 movel %d1,627f6 <_POSIX_signals_Wait_queue+0x30><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
the_thread->Wait.option = *set;
the_thread->Wait.return_argument = the_info;
_Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue );
_ISR_Enable( level );
472ee: 46c3 movew %d3,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval );
472f0: 4879 0004 a670 pea 4a670 <_Thread_queue_Timeout> <== NOT EXECUTED 472f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 472f8: 4879 0006 27c6 pea 627c6 <_POSIX_signals_Wait_queue> <== NOT EXECUTED 472fe: 4eb9 0004 a2a8 jsr 4a2a8 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
47304: 4eb9 0004 9d56 jsr 49d56 <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* When the thread is set free by a signal, it is need to eliminate
* the signal.
*/
_POSIX_signals_Clear_signals( api, the_info->si_signo, the_info, false, false );
4730a: 42a7 clrl %sp@- <== NOT EXECUTED 4730c: 42a7 clrl %sp@- <== NOT EXECUTED 4730e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47310: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47312: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47314: 4eb9 0004 d3c0 jsr 4d3c0 <_POSIX_signals_Clear_signals> <== NOT EXECUTED
/* Set errno only if return code is not EINTR or
* if EINTR was caused by a signal being caught, which
* was not in our set.
*/
if ( (_Thread_Executing->Wait.return_code != EINTR)
4731a: 2079 0006 262c moveal 6262c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47320: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 47324: 7004 moveq #4,%d0 <== NOT EXECUTED 47326: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4732a: 6600 00c2 bnew 473ee <sigtimedwait+0x1aa> <== NOT EXECUTED
|| !(*set & signo_to_mask( the_info->si_signo )) ) {
4732e: 2412 movel %a2@,%d2 <== NOT EXECUTED 47330: 2202 movel %d2,%d1 <== NOT EXECUTED 47332: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 47336: 5381 subql #1,%d1 <== NOT EXECUTED 47338: e3a8 lsll %d1,%d0 <== NOT EXECUTED 4733a: c093 andl %a3@,%d0 <== NOT EXECUTED 4733c: 6700 00b0 beqw 473ee <sigtimedwait+0x1aa> <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
47340: 2002 movel %d2,%d0 <== NOT EXECUTED 47342: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 47348: 4e5e unlk %fp <== NOT EXECUTED 4734a: 4e75 rts <== NOT EXECUTED
}
/* Process pending signals? */
if ( *set & _POSIX_signals_Pending ) {
signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );
4734c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4734e: 4eb9 0004 71f8 jsr 471f8 <_POSIX_signals_Get_lowest> <== NOT EXECUTED 47354: 2400 movel %d0,%d2 <== NOT EXECUTED
_POSIX_signals_Clear_signals( api, signo, the_info, true, false );
47356: 4297 clrl %sp@ <== NOT EXECUTED 47358: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4735c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4735e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47360: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47362: 4eb9 0004 d3c0 jsr 4d3c0 <_POSIX_signals_Clear_signals> <== NOT EXECUTED
_ISR_Enable( level );
47368: 46c3 movew %d3,%sr <== NOT EXECUTED
the_info->si_signo = signo;
the_info->si_code = SI_USER;
4736a: 7201 moveq #1,%d1 <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
4736c: 2002 movel %d2,%d0 <== NOT EXECUTED
_ISR_Enable( level );
the_info->si_signo = signo;
the_info->si_code = SI_USER;
the_info->si_value.sival_int = 0;
return signo;
4736e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
_POSIX_signals_Clear_signals( api, signo, the_info, true, false );
_ISR_Enable( level );
the_info->si_signo = signo;
the_info->si_code = SI_USER;
the_info->si_value.sival_int = 0;
47372: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
if ( *set & _POSIX_signals_Pending ) {
signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );
_POSIX_signals_Clear_signals( api, signo, the_info, true, false );
_ISR_Enable( level );
the_info->si_signo = signo;
47376: 2482 movel %d2,%a2@ <== NOT EXECUTED
the_info->si_code = SI_USER;
47378: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
4737c: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 47382: 4e5e unlk %fp <== NOT EXECUTED 47384: 4e75 rts <== NOT EXECUTED
/* NOTE: This is very specifically a RELATIVE not ABSOLUTE time
* in the Open Group specification.
*/
interval = 0;
47386: 4280 clrl %d0 <== NOT EXECUTED
/*
* Initialize local variables.
*/
the_info = ( info ) ? info : &signal_information;
47388: 4a8a tstl %a2 <== NOT EXECUTED 4738a: 6600 fefe bnew 4728a <sigtimedwait+0x46> <== NOT EXECUTED
the_thread = _Thread_Executing;
4738e: 2079 0006 262c moveal 6262c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
/*
* Initialize local variables.
*/
the_info = ( info ) ? info : &signal_information;
47394: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
47398: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
the_info = ( info ) ? info : &signal_information;
the_thread = _Thread_Executing;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4739e: 2868 010e moveal %a0@(270),%a4 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
473a2: 40c3 movew %sr,%d3 <== NOT EXECUTED 473a4: 8283 orl %d3,%d1 <== NOT EXECUTED 473a6: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( *set & api->signals_pending ) {
473a8: 2213 movel %a3@,%d1 <== NOT EXECUTED 473aa: 2801 movel %d1,%d4 <== NOT EXECUTED 473ac: 242c 00d4 movel %a4@(212),%d2 <== NOT EXECUTED 473b0: c882 andl %d2,%d4 <== NOT EXECUTED 473b2: 6700 fefa beqw 472ae <sigtimedwait+0x6a> <== NOT EXECUTED
/* XXX real info later */
the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending );
473b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 473b8: 4eb9 0004 71f8 jsr 471f8 <_POSIX_signals_Get_lowest> <== NOT EXECUTED 473be: 2480 movel %d0,%a2@ <== NOT EXECUTED
_POSIX_signals_Clear_signals(
473c0: 4297 clrl %sp@ <== NOT EXECUTED 473c2: 42a7 clrl %sp@- <== NOT EXECUTED 473c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 473c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 473c8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 473ca: 4eb9 0004 d3c0 jsr 4d3c0 <_POSIX_signals_Clear_signals> <== NOT EXECUTED
the_info->si_signo,
the_info,
false,
false
);
_ISR_Enable( level );
473d0: 46c3 movew %d3,%sr <== NOT EXECUTED
the_info->si_code = SI_USER;
473d2: 7001 moveq #1,%d0 <== NOT EXECUTED
the_info->si_value.sival_int = 0;
return the_info->si_signo;
473d4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 473d8: 2412 movel %a2@,%d2 <== NOT EXECUTED
false,
false
);
_ISR_Enable( level );
the_info->si_code = SI_USER;
473da: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
473de: 2002 movel %d2,%d0 <== NOT EXECUTED
false
);
_ISR_Enable( level );
the_info->si_code = SI_USER;
the_info->si_value.sival_int = 0;
473e0: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
473e4: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 473ea: 4e5e unlk %fp <== NOT EXECUTED 473ec: 4e75 rts <== NOT EXECUTED
* was not in our set.
*/
if ( (_Thread_Executing->Wait.return_code != EINTR)
|| !(*set & signo_to_mask( the_info->si_signo )) ) {
errno = _Thread_Executing->Wait.return_code;
473ee: 4eb9 0005 0288 jsr 50288 <__errno> <== NOT EXECUTED
return -1;
473f4: 74ff moveq #-1,%d2 <== NOT EXECUTED
* was not in our set.
*/
if ( (_Thread_Executing->Wait.return_code != EINTR)
|| !(*set & signo_to_mask( the_info->si_signo )) ) {
errno = _Thread_Executing->Wait.return_code;
473f6: 2240 moveal %d0,%a1 <== NOT EXECUTED
return -1;
}
return the_info->si_signo;
}
473f8: 2002 movel %d2,%d0 <== NOT EXECUTED
* was not in our set.
*/
if ( (_Thread_Executing->Wait.return_code != EINTR)
|| !(*set & signo_to_mask( the_info->si_signo )) ) {
errno = _Thread_Executing->Wait.return_code;
473fa: 2079 0006 262c moveal 6262c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
return -1;
}
return the_info->si_signo;
}
47400: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED
* was not in our set.
*/
if ( (_Thread_Executing->Wait.return_code != EINTR)
|| !(*set & signo_to_mask( the_info->si_signo )) ) {
errno = _Thread_Executing->Wait.return_code;
47406: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED
return -1;
}
return the_info->si_signo;
}
4740a: 4e5e unlk %fp <== NOT EXECUTED 4740c: 4e75 rts <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
interval = _Timespec_To_ticks( timeout );
if ( !interval )
rtems_set_errno_and_return_minus_one( EINVAL );
4740e: 4eb9 0005 0288 jsr 50288 <__errno> <== NOT EXECUTED 47414: 74ff moveq #-1,%d2 <== NOT EXECUTED 47416: 7616 moveq #22,%d3 <== NOT EXECUTED 47418: 2040 moveal %d0,%a0 <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
4741a: 2002 movel %d2,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
interval = _Timespec_To_ticks( timeout );
if ( !interval )
rtems_set_errno_and_return_minus_one( EINVAL );
4741c: 2083 movel %d3,%a0@ <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
4741e: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 47424: 4e5e unlk %fp <== NOT EXECUTED 47426: 4e75 rts <== NOT EXECUTED
interval = 0;
if ( timeout ) {
if ( !_Timespec_Is_valid( timeout ) )
rtems_set_errno_and_return_minus_one( EINVAL );
47428: 4eb9 0005 0288 jsr 50288 <__errno> <== NOT EXECUTED 4742e: 74ff moveq #-1,%d2 <== NOT EXECUTED 47430: 7816 moveq #22,%d4 <== NOT EXECUTED 47432: 2240 moveal %d0,%a1 <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
47434: 2002 movel %d2,%d0 <== NOT EXECUTED
interval = 0;
if ( timeout ) {
if ( !_Timespec_Is_valid( timeout ) )
rtems_set_errno_and_return_minus_one( EINVAL );
47436: 2284 movel %d4,%a1@ <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
47438: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4743e: 4e5e unlk %fp <== NOT EXECUTED
...
00049784 <sigwait>:
int sigwait(
const sigset_t *set,
int *sig
)
{
49784: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49788: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4978a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int status;
status = sigtimedwait( set, NULL, NULL );
4978e: 42a7 clrl %sp@- <== NOT EXECUTED 49790: 42a7 clrl %sp@- <== NOT EXECUTED 49792: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49796: 4eb9 0004 956c jsr 4956c <sigtimedwait> <== NOT EXECUTED
if ( status != -1 ) {
4979c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 497a0: 72ff moveq #-1,%d1 <== NOT EXECUTED 497a2: b280 cmpl %d0,%d1 <== NOT EXECUTED 497a4: 6710 beqs 497b6 <sigwait+0x32> <== NOT EXECUTED
if ( sig )
497a6: 4a8a tstl %a2 <== NOT EXECUTED 497a8: 671e beqs 497c8 <sigwait+0x44> <== NOT EXECUTED
*sig = status;
497aa: 2480 movel %d0,%a2@ <== NOT EXECUTED
return 0;
}
return errno;
}
497ac: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
status = sigtimedwait( set, NULL, NULL );
if ( status != -1 ) {
if ( sig )
*sig = status;
return 0;
497b0: 4280 clrl %d0 <== NOT EXECUTED
}
return errno;
}
497b2: 4e5e unlk %fp <== NOT EXECUTED 497b4: 4e75 rts <== NOT EXECUTED
if ( sig )
*sig = status;
return 0;
}
return errno;
497b6: 4eb9 0005 218c jsr 5218c <__errno> <== NOT EXECUTED
}
497bc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( sig )
*sig = status;
return 0;
}
return errno;
497c0: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
497c2: 4e5e unlk %fp <== NOT EXECUTED
if ( sig )
*sig = status;
return 0;
}
return errno;
497c4: 2010 movel %a0@,%d0 <== NOT EXECUTED
}
497c6: 4e75 rts <== NOT EXECUTED 497c8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
status = sigtimedwait( set, NULL, NULL );
if ( status != -1 ) {
if ( sig )
*sig = status;
return 0;
497cc: 4280 clrl %d0 <== NOT EXECUTED
}
return errno;
}
497ce: 4e5e unlk %fp <== NOT EXECUTED
...
0004976c <sigwaitinfo>:
int sigwaitinfo(
const sigset_t *set,
siginfo_t *info
)
{
4976c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return sigtimedwait( set, info, NULL );
49770: 42a7 clrl %sp@- <== NOT EXECUTED 49772: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49776: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4977a: 4eb9 0004 956c jsr 4956c <sigtimedwait> <== NOT EXECUTED
}
49780: 4e5e unlk %fp <== NOT EXECUTED
00044eac <siproc>:
/*
* Process input character, with semaphore.
*/
static int
siproc (unsigned char c, struct rtems_termios_tty *tty)
{
44eac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 44eb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44eb2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int i;
/*
* Obtain output semaphore if character will be echoed
*/
if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
44eb6: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED 44eba: 0280 0000 0e78 andil #3704,%d0 <== NOT EXECUTED
/*
* Process input character, with semaphore.
*/
static int
siproc (unsigned char c, struct rtems_termios_tty *tty)
{
44ec0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44ec2: 142e 000b moveb %fp@(11),%d2 <== NOT EXECUTED
int i;
/*
* Obtain output semaphore if character will be echoed
*/
if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
44ec6: 4a80 tstl %d0 <== NOT EXECUTED 44ec8: 661c bnes 44ee6 <siproc+0x3a> <== 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);
44eca: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
} return i; }
44ece: 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);
44ed2: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 44ed8: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
} return i; }
44edc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44ee0: 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);
44ee2: 6000 fdd0 braw 44cb4 <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);
44ee6: 42a7 clrl %sp@- <== NOT EXECUTED
i = iproc (c, tty);
44ee8: 0282 0000 00ff andil #255,%d2 <== 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);
44eee: 42a7 clrl %sp@- <== NOT EXECUTED 44ef0: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 44ef4: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
i = iproc (c, tty);
44efa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 44efc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 44efe: 4eba fdb4 jsr %pc@(44cb4 <iproc>) <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44f02: 2f2a 0018 movel %a2@(24),%sp@- <== 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);
i = iproc (c, tty);
44f06: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44f08: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
}
else {
i = iproc (c, tty);
}
return i;
}
44f0e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 44f12: 2002 movel %d2,%d0 <== 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);
i = iproc (c, tty);
rtems_semaphore_release (tty->osem);
44f14: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
else {
i = iproc (c, tty);
}
return i;
}
44f18: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44f1c: 4e5e unlk %fp <== NOT EXECUTED
00043a1c <stat>:
int _STAT_NAME(
const char *path,
struct stat *buf
)
{
43a1c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 43a20: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 43a24: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 43a28: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
43a2c: 6770 beqs 43a9e <stat+0x82> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
status = rtems_filesystem_evaluate_path( path, strlen( path ),
43a2e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43a30: 280e movel %fp,%d4 <== NOT EXECUTED 43a32: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED 43a38: 4eb9 0004 dd64 jsr 4dd64 <strlen> <== NOT EXECUTED 43a3e: 7201 moveq #1,%d1 <== NOT EXECUTED 43a40: 2e81 movel %d1,%sp@ <== NOT EXECUTED 43a42: 2f04 movel %d4,%sp@- <== NOT EXECUTED 43a44: 42a7 clrl %sp@- <== NOT EXECUTED 43a46: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43a48: 2f02 movel %d2,%sp@- <== NOT EXECUTED 43a4a: 4eb9 0004 2cd4 jsr 42cd4 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
43a50: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 43a54: 4a80 tstl %d0 <== NOT EXECUTED 43a56: 670c beqs 43a64 <stat+0x48> <== NOT EXECUTED
return -1;
43a58: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
43a5a: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED 43a60: 4e5e unlk %fp <== NOT EXECUTED 43a62: 4e75 rts <== NOT EXECUTED
/*
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( buf, 0, sizeof(struct stat) );
43a64: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> <== NOT EXECUTED 43a68: 42a7 clrl %sp@- <== NOT EXECUTED 43a6a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43a6c: 4eb9 0004 d358 jsr 4d358 <memset> <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
43a72: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED 43a76: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43a78: 2f04 movel %d4,%sp@- <== NOT EXECUTED 43a7a: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 43a7e: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
43a80: 2f04 movel %d4,%sp@- <== NOT EXECUTED 43a82: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 43a86: 4eb9 0004 2db8 jsr 42db8 <rtems_filesystem_freenode> <== NOT EXECUTED
return status;
43a8c: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED 43a90: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
43a94: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED 43a9a: 4e5e unlk %fp <== NOT EXECUTED 43a9c: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
rtems_set_errno_and_return_minus_one( EFAULT );
43a9e: 4eb9 0004 ca3c jsr 4ca3c <__errno> <== NOT EXECUTED 43aa4: 740e moveq #14,%d2 <== NOT EXECUTED 43aa6: 2040 moveal %d0,%a0 <== NOT EXECUTED 43aa8: 70ff moveq #-1,%d0 <== NOT EXECUTED 43aaa: 2082 movel %d2,%a0@ <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
43aac: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED 43ab2: 4e5e unlk %fp <== NOT EXECUTED
00046880 <statvfs>:
#include <sys/statvfs.h>
int
statvfs (const char *path, struct statvfs *sb)
{
46880: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 46884: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 46888: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
* The root node of the mounted filesytem.
* The node for the directory that the fileystem is mounted on.
* The mount entry that is being refered to.
*/
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
4688c: 260e movel %fp,%d3 <== NOT EXECUTED 4688e: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED 46894: 2f02 movel %d2,%sp@- <== NOT EXECUTED
#include <sys/statvfs.h>
int
statvfs (const char *path, struct statvfs *sb)
{
46896: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
* The root node of the mounted filesytem.
* The node for the directory that the fileystem is mounted on.
* The mount entry that is being refered to.
*/
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
4689a: 4eb9 0005 37f4 jsr 537f4 <strlen> <== NOT EXECUTED 468a0: 7201 moveq #1,%d1 <== NOT EXECUTED 468a2: 2e81 movel %d1,%sp@ <== NOT EXECUTED 468a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 468a6: 42a7 clrl %sp@- <== NOT EXECUTED 468a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 468aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 468ac: 4eb9 0004 5314 jsr 45314 <rtems_filesystem_evaluate_path> <== NOT EXECUTED 468b2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 468b6: 4a80 tstl %d0 <== NOT EXECUTED 468b8: 670c beqs 468c6 <statvfs+0x46> <== NOT EXECUTED
return -1;
468ba: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = ( fs_mount_root->ops->statvfs_h )( fs_mount_root, sb );
rtems_filesystem_freenode( &loc );
return result;
}
468bc: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED 468c2: 4e5e unlk %fp <== NOT EXECUTED 468c4: 4e75 rts <== NOT EXECUTED
return -1;
mt_entry = loc.mt_entry;
fs_mount_root = &mt_entry->mt_fs_root;
memset (sb, 0, sizeof (struct statvfs));
468c6: 2044 moveal %d4,%a0 <== NOT EXECUTED 468c8: 4298 clrl %a0@+ <== NOT EXECUTED
*/
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
return -1;
mt_entry = loc.mt_entry;
468ca: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED
fs_mount_root = &mt_entry->mt_fs_root;
memset (sb, 0, sizeof (struct statvfs));
468ce: 4298 clrl %a0@+ <== NOT EXECUTED 468d0: 4298 clrl %a0@+ <== NOT EXECUTED 468d2: 4298 clrl %a0@+ <== NOT EXECUTED 468d4: 4298 clrl %a0@+ <== NOT EXECUTED 468d6: 4298 clrl %a0@+ <== NOT EXECUTED 468d8: 4298 clrl %a0@+ <== NOT EXECUTED 468da: 4298 clrl %a0@+ <== NOT EXECUTED 468dc: 4298 clrl %a0@+ <== NOT EXECUTED 468de: 4298 clrl %a0@+ <== NOT EXECUTED 468e0: 4298 clrl %a0@+ <== NOT EXECUTED 468e2: 4298 clrl %a0@+ <== NOT EXECUTED 468e4: 4298 clrl %a0@+ <== NOT EXECUTED 468e6: 4290 clrl %a0@ <== NOT EXECUTED
result = ( fs_mount_root->ops->statvfs_h )( fs_mount_root, sb );
468e8: 2069 0028 moveal %a1@(40),%a0 <== NOT EXECUTED 468ec: 2f04 movel %d4,%sp@- <== NOT EXECUTED 468ee: 4869 001c pea %a1@(28) <== NOT EXECUTED 468f2: 2068 0044 moveal %a0@(68),%a0 <== NOT EXECUTED 468f6: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
468f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 468fa: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 468fe: 4eb9 0004 53f8 jsr 453f8 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
46904: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED 46908: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
4690c: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED 46912: 4e5e unlk %fp <== NOT EXECUTED
...
00045f64 <symlink>:
int symlink(
const char *actualpath,
const char *sympath
)
{
45f64: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 45f68: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45f6a: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 45f6e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int i;
const char *name_start;
int result;
rtems_filesystem_get_start_loc( sympath, &i, &loc );
45f70: 240e movel %fp,%d2 <== NOT EXECUTED 45f72: 0682 ffff ffe4 addil #-28,%d2 <== NOT EXECUTED 45f78: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45f7a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45f7e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45f80: 4eb9 0004 5e68 jsr 45e68 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*loc.ops->evalformake_h)( &sympath[i], &loc, &name_start );
45f86: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45f8a: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED 45f8e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45f90: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED 45f94: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45f96: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 45f9a: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 )
45f9c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 45fa0: 4a80 tstl %d0 <== NOT EXECUTED 45fa2: 670e beqs 45fb2 <symlink+0x4e> <== NOT EXECUTED
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
rtems_filesystem_freenode( &loc );
return result;
}
45fa4: 242e ffd8 movel %fp@(-40),%d2 <== NOT EXECUTED
rtems_filesystem_get_start_loc( sympath, &i, &loc );
result = (*loc.ops->evalformake_h)( &sympath[i], &loc, &name_start );
if ( result != 0 )
return -1;
45fa8: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
rtems_filesystem_freenode( &loc );
return result;
}
45faa: 262e ffdc movel %fp@(-36),%d3 <== NOT EXECUTED 45fae: 4e5e unlk %fp <== NOT EXECUTED 45fb0: 4e75 rts <== NOT EXECUTED
result = (*loc.ops->evalformake_h)( &sympath[i], &loc, &name_start );
if ( result != 0 )
return -1;
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
45fb2: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 45fb6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45fba: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED 45fbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45fc0: 2068 0038 moveal %a0@(56),%a0 <== NOT EXECUTED 45fc4: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
45fc6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45fc8: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED 45fcc: 4eb9 0004 4a7c jsr 44a7c <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
45fd2: 202e ffe0 movel %fp@(-32),%d0 <== NOT EXECUTED 45fd6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
45fda: 242e ffd8 movel %fp@(-40),%d2 <== NOT EXECUTED 45fde: 262e ffdc movel %fp@(-36),%d3 <== NOT EXECUTED 45fe2: 4e5e unlk %fp <== NOT EXECUTED
...
000451f2 <sync>:
* We have to extern it here.
*/
extern struct _reent * const _global_impure_ptr __ATTRIBUTE_IMPURE_PTR__;
void sync(void)
{
451f2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* Walk the one used initially by RTEMS.
*/
_fwalk(_global_impure_ptr, sync_wrapper);
451f6: 487a ffce pea %pc@(451c6 <sync_wrapper>) <== NOT EXECUTED 451fa: 2f39 0005 f86c movel 5f86c <_global_impure_ptr>,%sp@- <== NOT EXECUTED 45200: 4eb9 0005 0b08 jsr 50b08 <_fwalk> <== NOT EXECUTED
*/
/*
* Now walk all the per-thread reentrancy structures.
*/
rtems_iterate_over_all_threads(sync_per_thread);
45206: 487a ff7c pea %pc@(45184 <sync_per_thread>) <== NOT EXECUTED 4520a: 4eb9 0004 8f88 jsr 48f88 <rtems_iterate_over_all_threads> <== NOT EXECUTED 45210: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
45214: 4e5e unlk %fp <== NOT EXECUTED
00045184 <sync_per_thread>:
fdatasync(fn);
}
/* iterate over all FILE *'s for this thread */
static void sync_per_thread(Thread_Control *t)
{
45184: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45188: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
/*
* The sync_wrapper() function will operate on the current thread's
* reent structure so we will temporarily use that.
*/
this_reent = t->libc_reent;
4518c: 2028 0106 movel %a0@(262),%d0 <== NOT EXECUTED
fdatasync(fn);
}
/* iterate over all FILE *'s for this thread */
static void sync_per_thread(Thread_Control *t)
{
45190: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* 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 ) {
45192: 4a80 tstl %d0 <== NOT EXECUTED 45194: 6728 beqs 451be <sync_per_thread+0x3a> <== NOT EXECUTED
current_reent = _Thread_Executing->libc_reent;
45196: 2279 0006 1e5c moveal 61e5c <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4519c: 2429 0106 movel %a1@(262),%d2 <== NOT EXECUTED
_Thread_Executing->libc_reent = this_reent;
451a0: 2340 0106 movel %d0,%a1@(262) <== NOT EXECUTED
_fwalk (t->libc_reent, sync_wrapper);
451a4: 487a 0020 pea %pc@(451c6 <sync_wrapper>) <== NOT EXECUTED 451a8: 2f28 0106 movel %a0@(262),%sp@- <== NOT EXECUTED 451ac: 4eb9 0005 0b08 jsr 50b08 <_fwalk> <== NOT EXECUTED
_Thread_Executing->libc_reent = current_reent;
451b2: 2079 0006 1e5c moveal 61e5c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 451b8: 508f addql #8,%sp <== NOT EXECUTED 451ba: 2142 0106 movel %d2,%a0@(262) <== NOT EXECUTED
} }
451be: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 451c2: 4e5e unlk %fp <== NOT EXECUTED
000451c6 <sync_wrapper>:
/* XXX check standards -- Linux version appears to be void */
void _fwalk(struct _reent *, void *);
static void sync_wrapper(FILE *f)
{
451c6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 451ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int fn = fileno(f);
451cc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 451d0: 4eb9 0004 ff90 jsr 4ff90 <fileno> <== NOT EXECUTED 451d6: 2400 movel %d0,%d2 <== NOT EXECUTED
/* * We are explicitly NOT checking the return values as it does not * matter if they succeed. We are just making a best faith attempt * at both and trusting that we were passed a good FILE pointer. */ fsync(fn);
451d8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 451da: 4eb9 0004 3ce0 jsr 43ce0 <fsync> <== NOT EXECUTED
fdatasync(fn);
451e0: 508f addql #8,%sp <== NOT EXECUTED 451e2: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
451e6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 451ea: 4e5e unlk %fp <== NOT EXECUTED
* We are explicitly NOT checking the return values as it does not * matter if they succeed. We are just making a best faith attempt * at both and trusting that we were passed a good FILE pointer. */ fsync(fn); fdatasync(fn);
451ec: 4ef9 0004 39fc jmp 439fc <fdatasync> <== NOT EXECUTED
00045f6c <sysconf>:
long sysconf(
int name
)
{
if ( name == _SC_CLK_TCK )
45f6c: 7002 moveq #2,%d0 <== NOT EXECUTED
*/
long sysconf(
int name
)
{
45f6e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45f72: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 45f76: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( name == _SC_CLK_TCK )
45f78: b081 cmpl %d1,%d0 <== NOT EXECUTED 45f7a: 6726 beqs 45fa2 <sysconf+0x36> <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
if ( name == _SC_OPEN_MAX )
45f7c: 7004 moveq #4,%d0 <== NOT EXECUTED 45f7e: b081 cmpl %d1,%d0 <== NOT EXECUTED 45f80: 6738 beqs 45fba <sysconf+0x4e> <== NOT EXECUTED
return rtems_libio_number_iops;
if ( name == _SC_GETPW_R_SIZE_MAX )
return 1024;
45f82: 203c 0000 0400 movel #1024,%d0 <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick());
if ( name == _SC_OPEN_MAX )
return rtems_libio_number_iops;
if ( name == _SC_GETPW_R_SIZE_MAX )
45f88: 7433 moveq #51,%d2 <== NOT EXECUTED 45f8a: b481 cmpl %d1,%d2 <== NOT EXECUTED 45f8c: 670c beqs 45f9a <sysconf+0x2e> <== NOT EXECUTED
return 1024;
if ( name == _SC_PAGESIZE )
45f8e: 143c 0008 moveb #8,%d2 <== NOT EXECUTED
return PAGE_SIZE;
45f92: 303c 1000 movew #4096,%d0 <== NOT EXECUTED
return rtems_libio_number_iops;
if ( name == _SC_GETPW_R_SIZE_MAX )
return 1024;
if ( name == _SC_PAGESIZE )
45f96: b481 cmpl %d1,%d2 <== NOT EXECUTED 45f98: 662e bnes 45fc8 <sysconf+0x5c> <== NOT EXECUTED
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
}
45f9a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45f9e: 4e5e unlk %fp <== NOT EXECUTED 45fa0: 4e75 rts <== NOT EXECUTED
long sysconf(
int name
)
{
if ( name == _SC_CLK_TCK )
return (TOD_MICROSECONDS_PER_SECOND /
45fa2: 41f9 0005 ea84 lea 5ea84 <Configuration+0xc>,%a0 <== NOT EXECUTED 45fa8: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
}
45fae: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45fb2: 4e5e unlk %fp <== NOT EXECUTED
long sysconf(
int name
)
{
if ( name == _SC_CLK_TCK )
return (TOD_MICROSECONDS_PER_SECOND /
45fb4: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
}
45fb8: 4e75 rts <== NOT EXECUTED 45fba: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45fbe: 4e5e unlk %fp <== NOT EXECUTED
if ( name == _SC_CLK_TCK )
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
if ( name == _SC_OPEN_MAX )
return rtems_libio_number_iops;
45fc0: 2039 0005 e9a4 movel 5e9a4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
}
45fc6: 4e75 rts <== NOT EXECUTED
#if defined(__sparc__)
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
45fc8: 4eb9 0004 ef0c jsr 4ef0c <__errno> <== NOT EXECUTED
}
45fce: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
#if defined(__sparc__)
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
45fd2: 2040 moveal %d0,%a0 <== NOT EXECUTED 45fd4: 7216 moveq #22,%d1 <== NOT EXECUTED 45fd6: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
45fd8: 4e5e unlk %fp <== NOT EXECUTED
#if defined(__sparc__)
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
45fda: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000479c8 <tcdrain>:
#include <rtems/libio.h>
int tcdrain(
int fd
)
{
479c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return ioctl( fd, RTEMS_IO_TCDRAIN, 0 );
479cc: 42a7 clrl %sp@- <== NOT EXECUTED 479ce: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 479d2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 479d6: 4eb9 0004 f2e0 jsr 4f2e0 <ioctl> <== NOT EXECUTED
}
479dc: 4e5e unlk %fp <== NOT EXECUTED
00043d10 <tcflow>:
int tcflow (
int fd __attribute__((unused)),
int action
)
{
43d10: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
case TCOOFF:
case TCOON:
case TCIOFF:
case TCION:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
43d14: 4eb9 0004 cc84 jsr 4cc84 <__errno> <== NOT EXECUTED 43d1a: 7216 moveq #22,%d1 <== NOT EXECUTED 43d1c: 2040 moveal %d0,%a0 <== NOT EXECUTED
/* fd is not validated */
/* When this is supported, implement it here */
rtems_set_errno_and_return_minus_one( ENOTSUP );
}
43d1e: 70ff moveq #-1,%d0 <== NOT EXECUTED 43d20: 4e5e unlk %fp <== NOT EXECUTED
case TCOOFF:
case TCOON:
case TCIOFF:
case TCION:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
43d22: 2081 movel %d1,%a0@ <== NOT EXECUTED
/* fd is not validated */
/* When this is supported, implement it here */
rtems_set_errno_and_return_minus_one( ENOTSUP );
}
...
00043d28 <tcflush>:
int tcflush (
int fd __attribute__((unused)),
int queue
)
{
43d28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
switch (queue) {
case TCIFLUSH:
case TCOFLUSH:
case TCIOFLUSH:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
43d2c: 4eb9 0004 cc84 jsr 4cc84 <__errno> <== NOT EXECUTED 43d32: 7216 moveq #22,%d1 <== NOT EXECUTED 43d34: 2040 moveal %d0,%a0 <== NOT EXECUTED
/* fd is not validated */
/* When this is supported, implement it here */
rtems_set_errno_and_return_minus_one( ENOTSUP );
return 0;
}
43d36: 70ff moveq #-1,%d0 <== NOT EXECUTED 43d38: 4e5e unlk %fp <== NOT EXECUTED
switch (queue) {
case TCIFLUSH:
case TCOFLUSH:
case TCIOFLUSH:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
43d3a: 2081 movel %d1,%a0@ <== NOT EXECUTED
/* fd is not validated */
/* When this is supported, implement it here */
rtems_set_errno_and_return_minus_one( ENOTSUP );
return 0;
}
...
00045734 <tcgetattr>:
int tcgetattr(
int fd,
struct termios *tp
)
{
45734: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return ioctl( fd, RTEMS_IO_GET_ATTRIBUTES, tp );
45738: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4573c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 45740: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45744: 4eb9 0004 ce50 jsr 4ce50 <ioctl> <== NOT EXECUTED
}
4574a: 4e5e unlk %fp <== NOT EXECUTED
...
00043d40 <tcgetpgrp>:
#include <sys/types.h>
#include <unistd.h>
pid_t tcgetpgrp(int fd __attribute__((unused)))
{
43d40: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid(); }
43d44: 4e5e unlk %fp <== NOT EXECUTED
#include <sys/types.h>
#include <unistd.h>
pid_t tcgetpgrp(int fd __attribute__((unused)))
{
return getpid();
43d46: 4ef9 0004 300c jmp 4300c <getpid> <== NOT EXECUTED
00043d4c <tcsendbreak>:
int tcsendbreak (
int fd __attribute__((unused)),
int duration __attribute__((unused)) )
{
return 0;
}
43d4c: 4280 clrl %d0 <== NOT EXECUTED
#include <rtems/libio.h>
int tcsendbreak (
int fd __attribute__((unused)),
int duration __attribute__((unused)) )
{
43d4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; }
43d52: 4e5e unlk %fp <== NOT EXECUTED
...
00045750 <tcsetattr>:
int tcsetattr(
int fd,
int opt,
struct termios *tp
)
{
45750: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45754: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 45758: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4575a: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4575e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45760: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
switch (opt) {
45764: 4a80 tstl %d0 <== NOT EXECUTED 45766: 6738 beqs 457a0 <tcsetattr+0x50> <== NOT EXECUTED 45768: 7201 moveq #1,%d1 <== NOT EXECUTED 4576a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4576c: 671c beqs 4578a <tcsetattr+0x3a> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4576e: 4eb9 0005 0470 jsr 50470 <__errno> <== NOT EXECUTED 45774: 2040 moveal %d0,%a0 <== NOT EXECUTED 45776: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
}
}
4577c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45780: 70ff moveq #-1,%d0 <== NOT EXECUTED 45782: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 45786: 4e5e unlk %fp <== NOT EXECUTED 45788: 4e75 rts <== NOT EXECUTED
switch (opt) {
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
case TCSADRAIN:
if (ioctl( fd, RTEMS_IO_TCDRAIN, NULL ) < 0)
4578a: 42a7 clrl %sp@- <== NOT EXECUTED 4578c: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 45790: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45792: 4eb9 0004 ce50 jsr 4ce50 <ioctl> <== NOT EXECUTED 45798: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4579c: 4a80 tstl %d0 <== NOT EXECUTED 4579e: 6ddc blts 4577c <tcsetattr+0x2c> <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
457a0: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED 457a4: 7002 moveq #2,%d0 <== NOT EXECUTED 457a6: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
} }
457aa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 457ae: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
457b2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
} }
457b6: 4e5e unlk %fp <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
457b8: 4ef9 0004 ce50 jmp 4ce50 <ioctl> <== NOT EXECUTED
...
00043d58 <tcsetpgrp>:
int tcsetpgrp(
int fd __attribute__((unused)),
pid_t pid __attribute__((unused)) )
{
return 0;
}
43d58: 4280 clrl %d0 <== NOT EXECUTED
#include <rtems/libio.h>
int tcsetpgrp(
int fd __attribute__((unused)),
pid_t pid __attribute__((unused)) )
{
43d5a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; }
43d5e: 4e5e unlk %fp <== NOT EXECUTED
...
00046034 <timer_create>:
timer_t *timerid
)
{
POSIX_Timer_Control *ptimer;
if ( clock_id != CLOCK_REALTIME )
46034: 7001 moveq #1,%d0 <== NOT EXECUTED
int timer_create(
clockid_t clock_id,
struct sigevent *evp,
timer_t *timerid
)
{
46036: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4603a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4603c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 46040: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46042: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Timer_Control *ptimer;
if ( clock_id != CLOCK_REALTIME )
46046: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 4604a: 6600 00c4 bnew 46110 <timer_create+0xdc> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !timerid )
4604e: 4a8b tstl %a3 <== NOT EXECUTED 46050: 6700 00be beqw 46110 <timer_create+0xdc> <== NOT EXECUTED
/*
* The data of the structure evp are checked in order to verify if they
* are coherent.
*/
if (evp != NULL) {
46054: 4a8a tstl %a2 <== NOT EXECUTED 46056: 671e beqs 46076 <timer_create+0x42> <== NOT EXECUTED
/* The structure has data */
if ( ( evp->sigev_notify != SIGEV_NONE ) &&
46058: 2012 movel %a2@,%d0 <== NOT EXECUTED 4605a: 7201 moveq #1,%d1 <== NOT EXECUTED 4605c: 5380 subql #1,%d0 <== NOT EXECUTED 4605e: b280 cmpl %d0,%d1 <== NOT EXECUTED 46060: 6500 00ae bcsw 46110 <timer_create+0xdc> <== NOT EXECUTED
( evp->sigev_notify != SIGEV_SIGNAL ) ) {
/* The value of the field sigev_notify is not valid */
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( !evp->sigev_signo )
46064: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 46068: 6700 00a6 beqw 46110 <timer_create+0xdc> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
4606c: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(evp->sigev_signo) )
4606e: 721f moveq #31,%d1 <== NOT EXECUTED 46070: b280 cmpl %d0,%d1 <== NOT EXECUTED 46072: 6500 009c bcsw 46110 <timer_create+0xdc> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46076: 2039 0006 09ec movel 609ec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4607c: 5280 addql #1,%d0 <== NOT EXECUTED 4607e: 23c0 0006 09ec movel %d0,609ec <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free timer control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Allocate( void )
{
return (POSIX_Timer_Control *) _Objects_Allocate( &_POSIX_Timer_Information );
46084: 4879 0006 0c62 pea 60c62 <_POSIX_Timer_Information> <== NOT EXECUTED 4608a: 4eb9 0004 81cc jsr 481cc <_Objects_Allocate> <== NOT EXECUTED
/*
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
46090: 588f addql #4,%sp <== NOT EXECUTED 46092: 2040 moveal %d0,%a0 <== NOT EXECUTED 46094: 4a80 tstl %d0 <== NOT EXECUTED 46096: 6700 0092 beqw 4612a <timer_create+0xf6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
}
/* The data of the created timer are stored to use them later */
ptimer->state = POSIX_TIMER_STATE_CREATE_NEW;
4609a: 7002 moveq #2,%d0 <== NOT EXECUTED 4609c: 1140 003c moveb %d0,%a0@(60) <== NOT EXECUTED
ptimer->thread_id = _Thread_Executing->Object.id;
460a0: 2279 0006 0e7c moveal 60e7c <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 460a6: 2169 0008 0038 movel %a1@(8),%a0@(56) <== NOT EXECUTED
if ( evp != NULL ) {
460ac: 4a8a tstl %a2 <== NOT EXECUTED 460ae: 6710 beqs 460c0 <timer_create+0x8c> <== NOT EXECUTED
ptimer->inf.sigev_notify = evp->sigev_notify;
460b0: 2152 003e movel %a2@,%a0@(62) <== NOT EXECUTED
ptimer->inf.sigev_signo = evp->sigev_signo;
460b4: 216a 0004 0042 movel %a2@(4),%a0@(66) <== NOT EXECUTED
ptimer->inf.sigev_value = evp->sigev_value;
460ba: 216a 0008 0046 movel %a2@(8),%a0@(70) <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
460c0: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
460c4: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
460c6: 2279 0006 0c7a moveal 60c7a <_POSIX_Timer_Information+0x18>,%a1<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
460cc: 3200 movew %d0,%d1 <== NOT EXECUTED
}
ptimer->overrun = 0;
460ce: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED
ptimer->timer_data.it_value.tv_sec = 0;
460d2: 42a8 005a clrl %a0@(90) <== NOT EXECUTED
ptimer->timer_data.it_value.tv_nsec = 0;
460d6: 42a8 005e clrl %a0@(94) <== NOT EXECUTED
ptimer->timer_data.it_interval.tv_sec = 0;
460da: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
ptimer->timer_data.it_interval.tv_nsec = 0;
460de: 42a8 0056 clrl %a0@(86) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
460e2: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
460e6: 42a8 002c clrl %a0@(44) <== NOT EXECUTED
the_watchdog->id = id;
460ea: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
the_watchdog->user_data = user_data;
460ee: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
460f2: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
460f6: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
_Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL );
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
460fa: 2680 movel %d0,%a3@ <== NOT EXECUTED
_Thread_Enable_dispatch();
460fc: 4eb9 0004 8f1a jsr 48f1a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
46102: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL );
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
46106: 4280 clrl %d0 <== NOT EXECUTED
}
46108: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4610c: 4e5e unlk %fp <== NOT EXECUTED 4610e: 4e75 rts <== NOT EXECUTED
if ( !evp->sigev_signo )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(evp->sigev_signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
46110: 4eb9 0004 f428 jsr 4f428 <__errno> <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46116: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !evp->sigev_signo )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(evp->sigev_signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
4611a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4611c: 7216 moveq #22,%d1 <== NOT EXECUTED 4611e: 70ff moveq #-1,%d0 <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46120: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 46124: 4e5e unlk %fp <== NOT EXECUTED
if ( !evp->sigev_signo )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(evp->sigev_signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
46126: 2081 movel %d1,%a0@ <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46128: 4e75 rts <== NOT EXECUTED
/*
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
_Thread_Enable_dispatch();
4612a: 4eb9 0004 8f1a jsr 48f1a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
46130: 4eb9 0004 f428 jsr 4f428 <__errno> <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46136: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
4613a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4613c: 720b moveq #11,%d1 <== NOT EXECUTED 4613e: 70ff moveq #-1,%d0 <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46140: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 46144: 4e5e unlk %fp <== NOT EXECUTED
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
46146: 2081 movel %d1,%a0@ <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
...
00046d3c <timer_delete>:
int timer_delete(
timer_t timerid
)
{
46d3c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46d40: 2f0a movel %a2,%sp@- <== NOT EXECUTED
timer_t id,
Objects_Locations *location
)
{
return (POSIX_Timer_Control *)
_Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
46d42: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46d46: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46d4a: 4879 0006 1b1a pea 61b1a <_POSIX_Timer_Information> <== NOT EXECUTED 46d50: 4eb9 0004 91f4 jsr 491f4 <_Objects_Get> <== NOT EXECUTED
*/
POSIX_Timer_Control *ptimer;
Objects_Locations location;
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
46d56: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46d5a: 2440 moveal %d0,%a2 <== NOT EXECUTED 46d5c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46d60: 6716 beqs 46d78 <timer_delete+0x3c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46d62: 4eb9 0005 0480 jsr 50480 <__errno> <== NOT EXECUTED
}
46d68: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46d6c: 2040 moveal %d0,%a0 <== NOT EXECUTED 46d6e: 7216 moveq #22,%d1 <== NOT EXECUTED 46d70: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
46d72: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46d74: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
46d76: 4e75 rts <== NOT EXECUTED
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Objects_Close( &_POSIX_Timer_Information, &ptimer->Object );
46d78: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46d7a: 4879 0006 1b1a pea 61b1a <_POSIX_Timer_Information> <== NOT EXECUTED 46d80: 4eb9 0004 8dc4 jsr 48dc4 <_Objects_Close> <== NOT EXECUTED
ptimer->state = POSIX_TIMER_STATE_FREE;
46d86: 7001 moveq #1,%d0 <== NOT EXECUTED 46d88: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
(void) _Watchdog_Remove( &ptimer->Timer );
46d8c: 486a 0010 pea %a2@(16) <== NOT EXECUTED 46d90: 4eb9 0004 aecc jsr 4aecc <_Watchdog_Remove> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Timer_Free (
POSIX_Timer_Control *the_timer
)
{
_Objects_Free( &_POSIX_Timer_Information, &the_timer->Object );
46d96: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46d98: 4879 0006 1b1a pea 61b1a <_POSIX_Timer_Information> <== NOT EXECUTED 46d9e: 4eb9 0004 9088 jsr 49088 <_Objects_Free> <== NOT EXECUTED
_POSIX_Timer_Free( ptimer );
_Thread_Enable_dispatch();
46da4: 4eb9 0004 9a82 jsr 49a82 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46daa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Objects_Close( &_POSIX_Timer_Information, &ptimer->Object );
ptimer->state = POSIX_TIMER_STATE_FREE;
(void) _Watchdog_Remove( &ptimer->Timer );
_POSIX_Timer_Free( ptimer );
_Thread_Enable_dispatch();
return 0;
46dae: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46db2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46db4: 4e5e unlk %fp <== NOT EXECUTED
00047a04 <timer_getoverrun>:
* its execution, _POSIX_Timer_TSR will have to set this counter to 0.
*/
int timer_getoverrun(
timer_t timerid
)
{
47a04: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47a08: 2f02 movel %d2,%sp@- <== NOT EXECUTED
timer_t id,
Objects_Locations *location
)
{
return (POSIX_Timer_Control *)
_Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
47a0a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47a0e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47a12: 4879 0006 3066 pea 63066 <_POSIX_Timer_Information> <== NOT EXECUTED 47a18: 4eb9 0004 9e40 jsr 49e40 <_Objects_Get> <== NOT EXECUTED
int overrun;
POSIX_Timer_Control *ptimer;
Objects_Locations location;
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
47a1e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47a22: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a24: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47a28: 6718 beqs 47a42 <timer_getoverrun+0x3e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
47a2a: 4eb9 0005 0c6c jsr 50c6c <__errno> <== NOT EXECUTED 47a30: 74ff moveq #-1,%d2 <== NOT EXECUTED 47a32: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a34: 7016 moveq #22,%d0 <== NOT EXECUTED 47a36: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
47a38: 2002 movel %d2,%d0 <== NOT EXECUTED 47a3a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47a3e: 4e5e unlk %fp <== NOT EXECUTED 47a40: 4e75 rts <== NOT EXECUTED
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
case OBJECTS_LOCAL:
overrun = ptimer->overrun;
47a42: 2428 0066 movel %a0@(102),%d2 <== NOT EXECUTED
ptimer->overrun = 0;
47a46: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED
_Thread_Enable_dispatch();
47a4a: 4eb9 0004 a6ce jsr 4a6ce <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
47a50: 2002 movel %d2,%d0 <== NOT EXECUTED 47a52: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47a56: 4e5e unlk %fp <== NOT EXECUTED
...
00047a5c <timer_gettime>:
int timer_gettime(
timer_t timerid,
struct itimerspec *value
)
{
47a5c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47a60: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47a62: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47a64: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Timer_Control *ptimer;
Objects_Locations location;
struct timespec current_time;
Watchdog_Interval left;
if ( !value )
47a68: 4a8a tstl %a2 <== NOT EXECUTED 47a6a: 676a beqs 47ad6 <timer_gettime+0x7a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/* Reads the current time */
_TOD_Get( ¤t_time );
47a6c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 47a70: 4eb9 0004 939c jsr 4939c <_TOD_Get> <== NOT EXECUTED 47a76: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47a7a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47a7e: 4879 0006 3066 pea 63066 <_POSIX_Timer_Information> <== NOT EXECUTED 47a84: 4eb9 0004 9e40 jsr 49e40 <_Objects_Get> <== NOT EXECUTED
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
47a8a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47a8e: 2640 moveal %d0,%a3 <== NOT EXECUTED 47a90: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47a94: 6640 bnes 47ad6 <timer_gettime+0x7a> <== NOT EXECUTED
left =
(ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */
_Watchdog_Ticks_since_boot; /* now */
_Timespec_From_ticks( left, &value->it_value );
47a96: 486a 0008 pea %a2@(8) <== NOT EXECUTED
case OBJECTS_LOCAL:
/* Calculates the time left before the timer finishes */
left =
(ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */
47a9a: 222b 001c movel %a3@(28),%d1 <== NOT EXECUTED 47a9e: d2ab 0024 addl %a3@(36),%d1 <== NOT EXECUTED 47aa2: 2039 0006 2f1c movel 62f1c <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
_Watchdog_Ticks_since_boot; /* now */
_Timespec_From_ticks( left, &value->it_value );
47aa8: 9280 subl %d0,%d1 <== NOT EXECUTED 47aaa: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47aac: 4eb9 0004 b5cc jsr 4b5cc <_Timespec_From_ticks> <== NOT EXECUTED
value->it_interval = ptimer->timer_data.it_interval;
47ab2: 202b 0052 movel %a3@(82),%d0 <== NOT EXECUTED 47ab6: 222b 0056 movel %a3@(86),%d1 <== NOT EXECUTED 47aba: 2480 movel %d0,%a2@ <== NOT EXECUTED 47abc: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
_Thread_Enable_dispatch();
47ac0: 4eb9 0004 a6ce jsr 4a6ce <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
47ac6: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED
_Timespec_From_ticks( left, &value->it_value );
value->it_interval = ptimer->timer_data.it_interval;
_Thread_Enable_dispatch();
return 0;
47aca: 508f addql #8,%sp <== NOT EXECUTED 47acc: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
47ace: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED 47ad2: 4e5e unlk %fp <== NOT EXECUTED 47ad4: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
47ad6: 4eb9 0005 0c6c jsr 50c6c <__errno> <== NOT EXECUTED
}
47adc: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
47ae0: 2040 moveal %d0,%a0 <== NOT EXECUTED 47ae2: 7216 moveq #22,%d1 <== NOT EXECUTED 47ae4: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
47ae6: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED 47aea: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
47aec: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
0004614c <timer_settime>:
timer_t timerid,
int flags,
const struct itimerspec *value,
struct itimerspec *ovalue
)
{
4614c: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 46150: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 46154: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED 46158: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 4615c: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
Objects_Locations location;
bool activated;
uint32_t initial_period;
struct itimerspec normalize;
if ( !value )
46160: 4a8b tstl %a3 <== NOT EXECUTED 46162: 6700 019e beqw 46302 <timer_settime+0x1b6> <== NOT EXECUTED
/*
* First, it verifies if the structure "value" is correct
* if the number of nanoseconds is not correct return EINVAL
*/
if ( !_Timespec_Is_valid( &(value->it_value) ) ) {
46166: 486b 0008 pea %a3@(8) <== NOT EXECUTED 4616a: 45f9 0004 9e4c lea 49e4c <_Timespec_Is_valid>,%a2 <== NOT EXECUTED 46170: 4e92 jsr %a2@ <== NOT EXECUTED 46172: 588f addql #4,%sp <== NOT EXECUTED 46174: 4a00 tstb %d0 <== NOT EXECUTED 46176: 6700 018a beqw 46302 <timer_settime+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( !_Timespec_Is_valid( &(value->it_interval) ) ) {
4617a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4617c: 4e92 jsr %a2@ <== NOT EXECUTED 4617e: 588f addql #4,%sp <== NOT EXECUTED 46180: 4a00 tstb %d0 <== NOT EXECUTED 46182: 6700 017e beqw 46302 <timer_settime+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {
46186: 7004 moveq #4,%d0 <== NOT EXECUTED 46188: b08c cmpl %a4,%d0 <== NOT EXECUTED 4618a: 6700 00fa beqw 46286 <timer_settime+0x13a> <== NOT EXECUTED 4618e: 4a8c tstl %a4 <== NOT EXECUTED 46190: 6600 0170 bnew 46302 <timer_settime+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
normalize = *value;
46194: 260e movel %fp,%d3 <== NOT EXECUTED 46196: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED 4619c: 204b moveal %a3,%a0 <== NOT EXECUTED 4619e: 2243 moveal %d3,%a1 <== NOT EXECUTED 461a0: 240e movel %fp,%d2 <== NOT EXECUTED 461a2: 0682 ffff ffe8 addil #-24,%d2 <== NOT EXECUTED 461a8: 49ee ffec lea %fp@(-20),%a4 <== NOT EXECUTED 461ac: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED 461b0: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 461b2: 2242 moveal %d2,%a1 <== NOT EXECUTED 461b4: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 461b6: 2898 movel %a0@+,%a4@ <== NOT EXECUTED 461b8: 2a90 movel %a0@,%a5@ <== NOT EXECUTED
timer_t id,
Objects_Locations *location
)
{
return (POSIX_Timer_Control *)
_Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
461ba: 486e fffc pea %fp@(-4) <== NOT EXECUTED 461be: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 461c2: 4879 0006 0c62 pea 60c62 <_POSIX_Timer_Information> <== NOT EXECUTED 461c8: 4eb9 0004 868c jsr 4868c <_Objects_Get> <== NOT EXECUTED
* something with the structure of times of the timer: to stop, start
* or start it again
*/
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
461ce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 461d2: 2440 moveal %d0,%a2 <== NOT EXECUTED 461d4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 461d8: 6600 0128 bnew 46302 <timer_settime+0x1b6> <== NOT EXECUTED
case OBJECTS_LOCAL:
/* First, it verifies if the timer must be stopped */
if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
461dc: 4aae ffec tstl %fp@(-20) <== NOT EXECUTED 461e0: 6608 bnes 461ea <timer_settime+0x9e> <== NOT EXECUTED 461e2: 4aae fff0 tstl %fp@(-16) <== NOT EXECUTED 461e6: 6700 0132 beqw 4631a <timer_settime+0x1ce> <== NOT EXECUTED
_Thread_Enable_dispatch();
return 0;
}
/* Convert from seconds and nanoseconds to ticks */
ptimer->ticks = _Timespec_To_ticks( &value->it_interval );
461ea: 2f0b movel %a3,%sp@- <== NOT EXECUTED 461ec: 47f9 0004 9ec8 lea 49ec8 <_Timespec_To_ticks>,%a3 <== NOT EXECUTED 461f2: 4e93 jsr %a3@ <== NOT EXECUTED 461f4: 2540 0062 movel %d0,%a2@(98) <== NOT EXECUTED
initial_period = _Timespec_To_ticks( &normalize.it_value );
461f8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 461fa: 4e93 jsr %a3@ <== NOT EXECUTED
activated = _POSIX_Timer_Insert_helper(
461fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 461fe: 4879 0004 6420 pea 46420 <_POSIX_Timer_TSR> <== NOT EXECUTED 46204: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 46208: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4620a: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4620e: 4eb9 0004 c988 jsr 4c988 <_POSIX_Timer_Insert_helper> <== NOT EXECUTED
initial_period,
ptimer->Object.id,
_POSIX_Timer_TSR,
ptimer
);
if ( !activated ) {
46214: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 46218: 4a00 tstb %d0 <== NOT EXECUTED 4621a: 6700 0166 beqw 46382 <timer_settime+0x236> <== NOT EXECUTED
/*
* The timer has been started and is running. So we return the
* old ones in "ovalue"
*/
if ( ovalue )
4621e: 4a84 tstl %d4 <== NOT EXECUTED 46220: 6700 0172 beqw 46394 <timer_settime+0x248> <== NOT EXECUTED
*ovalue = ptimer->timer_data;
46224: 220a movel %a2,%d1 <== NOT EXECUTED 46226: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED 4622c: 2044 moveal %d4,%a0 <== NOT EXECUTED 4622e: 2241 moveal %d1,%a1 <== NOT EXECUTED 46230: 200a movel %a2,%d0 <== NOT EXECUTED 46232: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED 46238: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED 4623c: 280a movel %a2,%d4 <== NOT EXECUTED 4623e: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED 46244: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED 46246: 2240 moveal %d0,%a1 <== NOT EXECUTED 46248: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED 4624a: 2244 moveal %d4,%a1 <== NOT EXECUTED 4624c: 20d3 movel %a3@,%a0@+ <== NOT EXECUTED 4624e: 2091 movel %a1@,%a0@ <== NOT EXECUTED
ptimer->timer_data = normalize;
46250: 2041 moveal %d1,%a0 <== NOT EXECUTED 46252: 2243 moveal %d3,%a1 <== NOT EXECUTED 46254: 2091 movel %a1@,%a0@ <== NOT EXECUTED 46256: 2040 moveal %d0,%a0 <== NOT EXECUTED 46258: 2242 moveal %d2,%a1 <== NOT EXECUTED 4625a: 2091 movel %a1@,%a0@ <== NOT EXECUTED 4625c: 2044 moveal %d4,%a0 <== NOT EXECUTED 4625e: 2694 movel %a4@,%a3@ <== NOT EXECUTED 46260: 2095 movel %a5@,%a0@ <== NOT EXECUTED
/* Indicate that the time is running */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
46262: 7003 moveq #3,%d0 <== NOT EXECUTED 46264: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
_TOD_Get( &ptimer->time );
46268: 486a 006a pea %a2@(106) <== NOT EXECUTED 4626c: 4eb9 0004 7c10 jsr 47c10 <_TOD_Get> <== NOT EXECUTED
_Thread_Enable_dispatch();
46272: 4eb9 0004 8f1a jsr 48f1a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46278: 588f addql #4,%sp <== NOT EXECUTED 4627a: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4627c: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED 46282: 4e5e unlk %fp <== NOT EXECUTED 46284: 4e75 rts <== NOT EXECUTED
if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
normalize = *value;
46286: 260e movel %fp,%d3 <== NOT EXECUTED 46288: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED 4628e: 204b moveal %a3,%a0 <== NOT EXECUTED 46290: 2243 moveal %d3,%a1 <== NOT EXECUTED 46292: 240e movel %fp,%d2 <== NOT EXECUTED 46294: 0682 ffff ffe8 addil #-24,%d2 <== NOT EXECUTED 4629a: 200e movel %fp,%d0 <== NOT EXECUTED 4629c: 0680 ffff ffec addil #-20,%d0 <== NOT EXECUTED
/* Convert absolute to relative time */
if (flags == TIMER_ABSTIME) {
struct timespec now;
_TOD_Get( &now );
/* Check for seconds in the past */
if ( _Timespec_Greater_than( &now, &normalize.it_value ) )
462a2: 2840 moveal %d0,%a4 <== NOT EXECUTED
if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
normalize = *value;
462a4: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED
/* Convert absolute to relative time */
if (flags == TIMER_ABSTIME) {
struct timespec now;
_TOD_Get( &now );
462a8: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED
if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
normalize = *value;
462ac: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 462ae: 2242 moveal %d2,%a1 <== NOT EXECUTED 462b0: 2298 movel %a0@+,%a1@ <== NOT EXECUTED 462b2: 2898 movel %a0@+,%a4@ <== NOT EXECUTED 462b4: 2a90 movel %a0@,%a5@ <== NOT EXECUTED
/* Convert absolute to relative time */
if (flags == TIMER_ABSTIME) {
struct timespec now;
_TOD_Get( &now );
462b6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 462b8: 4eb9 0004 7c10 jsr 47c10 <_TOD_Get> <== NOT EXECUTED
/* Check for seconds in the past */
if ( _Timespec_Greater_than( &now, &normalize.it_value ) )
462be: 2f0c movel %a4,%sp@- <== NOT EXECUTED 462c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 462c2: 4eb9 0004 9e18 jsr 49e18 <_Timespec_Greater_than> <== NOT EXECUTED 462c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 462cc: 4a00 tstb %d0 <== NOT EXECUTED 462ce: 6632 bnes 46302 <timer_settime+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
_Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value );
462d0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 462d2: 2f0c movel %a4,%sp@- <== NOT EXECUTED 462d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 462d6: 4eb9 0004 9e78 jsr 49e78 <_Timespec_Subtract> <== NOT EXECUTED 462dc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 462e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 462e4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 462e8: 4879 0006 0c62 pea 60c62 <_POSIX_Timer_Information> <== NOT EXECUTED 462ee: 4eb9 0004 868c jsr 4868c <_Objects_Get> <== NOT EXECUTED
* something with the structure of times of the timer: to stop, start
* or start it again
*/
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
462f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 462f8: 2440 moveal %d0,%a2 <== NOT EXECUTED 462fa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 462fe: 6700 fedc beqw 461dc <timer_settime+0x90> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46302: 4eb9 0004 f428 jsr 4f428 <__errno> <== NOT EXECUTED 46308: 7216 moveq #22,%d1 <== NOT EXECUTED 4630a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4630c: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4630e: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46314: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
46316: 4e5e unlk %fp <== NOT EXECUTED 46318: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
/* First, it verifies if the timer must be stopped */
if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
/* Stop the timer */
(void) _Watchdog_Remove( &ptimer->Timer );
4631a: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4631e: 4eb9 0004 a328 jsr 4a328 <_Watchdog_Remove> <== NOT EXECUTED
/* The old data of the timer are returned */
if ( ovalue )
46324: 588f addql #4,%sp <== NOT EXECUTED 46326: 4a84 tstl %d4 <== NOT EXECUTED 46328: 6700 00b6 beqw 463e0 <timer_settime+0x294> <== NOT EXECUTED
*ovalue = ptimer->timer_data;
4632c: 220a movel %a2,%d1 <== NOT EXECUTED 4632e: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED 46334: 2244 moveal %d4,%a1 <== NOT EXECUTED 46336: 2041 moveal %d1,%a0 <== NOT EXECUTED 46338: 200a movel %a2,%d0 <== NOT EXECUTED 4633a: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED 46340: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED 46344: 280a movel %a2,%d4 <== NOT EXECUTED 46346: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED 4634c: 22d0 movel %a0@,%a1@+ <== NOT EXECUTED 4634e: 2040 moveal %d0,%a0 <== NOT EXECUTED 46350: 22d0 movel %a0@,%a1@+ <== NOT EXECUTED 46352: 2044 moveal %d4,%a0 <== NOT EXECUTED 46354: 22d3 movel %a3@,%a1@+ <== NOT EXECUTED 46356: 2290 movel %a0@,%a1@ <== NOT EXECUTED
/* The new data are set */
ptimer->timer_data = normalize;
46358: 2241 moveal %d1,%a1 <== NOT EXECUTED 4635a: 2043 moveal %d3,%a0 <== NOT EXECUTED 4635c: 2290 movel %a0@,%a1@ <== NOT EXECUTED 4635e: 2240 moveal %d0,%a1 <== NOT EXECUTED 46360: 2042 moveal %d2,%a0 <== NOT EXECUTED 46362: 2290 movel %a0@,%a1@ <== NOT EXECUTED 46364: 2244 moveal %d4,%a1 <== NOT EXECUTED 46366: 2694 movel %a4@,%a3@ <== NOT EXECUTED 46368: 2295 movel %a5@,%a1@ <== NOT EXECUTED
/* Indicates that the timer is created and stopped */
ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;
4636a: 7004 moveq #4,%d0 <== NOT EXECUTED 4636c: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
/* Returns with success */
_Thread_Enable_dispatch();
46370: 4eb9 0004 8f1a jsr 48f1a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46376: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46378: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4637e: 4e5e unlk %fp <== NOT EXECUTED 46380: 4e75 rts <== NOT EXECUTED
ptimer->Object.id,
_POSIX_Timer_TSR,
ptimer
);
if ( !activated ) {
_Thread_Enable_dispatch();
46382: 4eb9 0004 8f1a jsr 48f1a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46388: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4638a: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED 46390: 4e5e unlk %fp <== NOT EXECUTED 46392: 4e75 rts <== NOT EXECUTED 46394: 220a movel %a2,%d1 <== NOT EXECUTED 46396: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED
* The timer has been started and is running. So we return the
* old ones in "ovalue"
*/
if ( ovalue )
*ovalue = ptimer->timer_data;
ptimer->timer_data = normalize;
4639c: 2041 moveal %d1,%a0 <== NOT EXECUTED 4639e: 2243 moveal %d3,%a1 <== NOT EXECUTED 463a0: 200a movel %a2,%d0 <== NOT EXECUTED 463a2: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED 463a8: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED 463ac: 280a movel %a2,%d4 <== NOT EXECUTED 463ae: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED 463b4: 2091 movel %a1@,%a0@ <== NOT EXECUTED 463b6: 2040 moveal %d0,%a0 <== NOT EXECUTED 463b8: 2242 moveal %d2,%a1 <== NOT EXECUTED 463ba: 2091 movel %a1@,%a0@ <== NOT EXECUTED 463bc: 2044 moveal %d4,%a0 <== NOT EXECUTED 463be: 2694 movel %a4@,%a3@ <== NOT EXECUTED 463c0: 2095 movel %a5@,%a0@ <== NOT EXECUTED
/* Indicate that the time is running */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
463c2: 7003 moveq #3,%d0 <== NOT EXECUTED 463c4: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
_TOD_Get( &ptimer->time );
463c8: 486a 006a pea %a2@(106) <== NOT EXECUTED 463cc: 4eb9 0004 7c10 jsr 47c10 <_TOD_Get> <== NOT EXECUTED
_Thread_Enable_dispatch();
463d2: 4eb9 0004 8f1a jsr 48f1a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
463d8: 588f addql #4,%sp <== NOT EXECUTED 463da: 4280 clrl %d0 <== NOT EXECUTED 463dc: 6000 fe9e braw 4627c <timer_settime+0x130> <== NOT EXECUTED 463e0: 220a movel %a2,%d1 <== NOT EXECUTED 463e2: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED
(void) _Watchdog_Remove( &ptimer->Timer );
/* The old data of the timer are returned */
if ( ovalue )
*ovalue = ptimer->timer_data;
/* The new data are set */
ptimer->timer_data = normalize;
463e8: 2241 moveal %d1,%a1 <== NOT EXECUTED 463ea: 2043 moveal %d3,%a0 <== NOT EXECUTED 463ec: 200a movel %a2,%d0 <== NOT EXECUTED 463ee: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED 463f4: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED 463f8: 280a movel %a2,%d4 <== NOT EXECUTED 463fa: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED 46400: 2290 movel %a0@,%a1@ <== NOT EXECUTED 46402: 2240 moveal %d0,%a1 <== NOT EXECUTED 46404: 2042 moveal %d2,%a0 <== NOT EXECUTED 46406: 2290 movel %a0@,%a1@ <== NOT EXECUTED 46408: 2244 moveal %d4,%a1 <== NOT EXECUTED 4640a: 2694 movel %a4@,%a3@ <== NOT EXECUTED 4640c: 2295 movel %a5@,%a1@ <== NOT EXECUTED
/* Indicates that the timer is created and stopped */
ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;
4640e: 7004 moveq #4,%d0 <== NOT EXECUTED 46410: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
/* Returns with success */
_Thread_Enable_dispatch();
46414: 4eb9 0004 8f1a jsr 48f1a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4641a: 4280 clrl %d0 <== NOT EXECUTED 4641c: 6000 ff5a braw 46378 <timer_settime+0x22c> <== NOT EXECUTED
00045cfa <times>:
*/
clock_t times(
struct tms *ptms
)
{
45cfa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _times( ptms ); }
45cfe: 4e5e unlk %fp <== NOT EXECUTED
clock_t times(
struct tms *ptms
)
{
return _times( ptms );
45d00: 4ef9 0004 5c5c jmp 45c5c <_times> <== NOT EXECUTED
0004973c <truncate>:
int truncate(
const char *path,
off_t length
)
{
4973c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49740: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49742: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_WRONLY );
49744: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 49748: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4974c: 4eb9 0004 718c jsr 4718c <open> <== NOT EXECUTED
if ( fd == -1 )
49752: 508f addql #8,%sp <== NOT EXECUTED
)
{
int status;
int fd;
fd = open( path, O_WRONLY );
49754: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( fd == -1 )
49756: 70ff moveq #-1,%d0 <== NOT EXECUTED 49758: b082 cmpl %d2,%d0 <== NOT EXECUTED 4975a: 672c beqs 49788 <truncate+0x4c> <== NOT EXECUTED
return -1;
status = ftruncate( fd, length );
4975c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49760: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49764: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49766: 4eb9 0004 f1ec jsr 4f1ec <ftruncate> <== NOT EXECUTED 4976c: 2600 movel %d0,%d3 <== NOT EXECUTED
(void) close( fd );
4976e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49770: 4eb9 0004 5964 jsr 45964 <close> <== NOT EXECUTED
return status;
}
49776: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4977a: 2003 movel %d3,%d0 <== NOT EXECUTED
status = ftruncate( fd, length );
(void) close( fd );
return status;
4977c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
49780: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 49784: 4e5e unlk %fp <== NOT EXECUTED 49786: 4e75 rts <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_WRONLY );
if ( fd == -1 )
return -1;
49788: 76ff moveq #-1,%d3 <== NOT EXECUTED
status = ftruncate( fd, length );
(void) close( fd );
return status;
}
4978a: 2003 movel %d3,%d0 <== NOT EXECUTED 4978c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 49790: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 49794: 4e5e unlk %fp <== NOT EXECUTED
00046226 <ualarm>:
useconds_t ualarm(
useconds_t useconds,
useconds_t interval
)
{
46226: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4622a: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4622e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Initialize the timer used to implement alarm().
*/
if ( !the_timer->routine ) {
46232: 4ab9 0006 1ece tstl 61ece <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED 46238: 6700 0086 beqw 462c0 <ualarm+0x9a> <== NOT EXECUTED
_Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
} else {
Watchdog_States state;
state = _Watchdog_Remove( the_timer );
4623c: 4879 0006 1eb2 pea 61eb2 <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 46242: 4eb9 0004 a09c jsr 4a09c <_Watchdog_Remove> <== NOT EXECUTED
if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
46248: 588f addql #4,%sp <== NOT EXECUTED 4624a: 7201 moveq #1,%d1 <== NOT EXECUTED 4624c: 5580 subql #2,%d0 <== NOT EXECUTED 4624e: b280 cmpl %d0,%d1 <== NOT EXECUTED 46250: 6400 0098 bccw 462ea <ualarm+0xc4> <== NOT EXECUTED
useconds_t ualarm(
useconds_t useconds,
useconds_t interval
)
{
useconds_t remaining = 0;
46254: 4283 clrl %d3 <== NOT EXECUTED
/*
* If useconds is non-zero, then the caller wants to schedule
* the alarm repeatedly at that interval. If the interval is
* less than a single clock tick, then fudge it to a clock tick.
*/
if ( useconds ) {
46256: 4a82 tstl %d2 <== NOT EXECUTED 46258: 660c bnes 46266 <ualarm+0x40> <== NOT EXECUTED
_Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );
}
return remaining;
}
4625a: 2003 movel %d3,%d0 <== NOT EXECUTED 4625c: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 46262: 4e5e unlk %fp <== NOT EXECUTED 46264: 4e75 rts <== NOT EXECUTED
if ( useconds ) {
Watchdog_Interval ticks;
tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
ticks = _Timespec_To_ticks( &tp );
46266: 280e movel %fp,%d4 <== NOT EXECUTED
* less than a single clock tick, then fudge it to a clock tick.
*/
if ( useconds ) {
Watchdog_Interval ticks;
tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
46268: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
ticks = _Timespec_To_ticks( &tp );
4626e: 5184 subql #8,%d4 <== NOT EXECUTED 46270: 45f9 0004 9ba8 lea 49ba8 <_Timespec_To_ticks>,%a2 <== NOT EXECUTED
* less than a single clock tick, then fudge it to a clock tick.
*/
if ( useconds ) {
Watchdog_Interval ticks;
tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
46276: 4c41 2000 remul %d1,%d0,%d2 <== NOT EXECUTED 4627a: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
4627e: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 46284: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
ticks = _Timespec_To_ticks( &tp );
46288: 2f04 movel %d4,%sp@- <== NOT EXECUTED
*/
if ( useconds ) {
Watchdog_Interval ticks;
tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
4628a: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
* less than a single clock tick, then fudge it to a clock tick.
*/
if ( useconds ) {
Watchdog_Interval ticks;
tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
4628e: 2d42 fff8 movel %d2,%fp@(-8) <== NOT EXECUTED
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
ticks = _Timespec_To_ticks( &tp );
46292: 4e92 jsr %a2@ <== NOT EXECUTED
if ( ticks == 0 )
ticks = 1;
_Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );
46294: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46296: 4e92 jsr %a2@ <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46298: 4879 0006 1eb2 pea 61eb2 <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 4629e: 4879 0006 175e pea 6175e <_Watchdog_Ticks_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
462a4: 23c0 0006 1ebe movel %d0,61ebe <_POSIX_signals_Ualarm_timer+0xc><== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
462aa: 4eb9 0004 9f54 jsr 49f54 <_Watchdog_Insert> <== NOT EXECUTED 462b0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
return remaining;
}
462b4: 2003 movel %d3,%d0 <== NOT EXECUTED 462b6: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 462bc: 4e5e unlk %fp <== NOT EXECUTED 462be: 4e75 rts <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
462c0: 42b9 0006 1eba clrl 61eba <_POSIX_signals_Ualarm_timer+0x8><== NOT EXECUTED
useconds_t ualarm(
useconds_t useconds,
useconds_t interval
)
{
useconds_t remaining = 0;
462c6: 4283 clrl %d3 <== NOT EXECUTED
the_watchdog->routine = routine;
462c8: 203c 0004 61e4 movel #287204,%d0 <== NOT EXECUTED
the_watchdog->id = id;
462ce: 42b9 0006 1ed2 clrl 61ed2 <_POSIX_signals_Ualarm_timer+0x20><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
462d4: 23c0 0006 1ece movel %d0,61ece <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED
the_watchdog->id = id; the_watchdog->user_data = user_data;
462da: 42b9 0006 1ed6 clrl 61ed6 <_POSIX_signals_Ualarm_timer+0x24><== NOT EXECUTED
/*
* If useconds is non-zero, then the caller wants to schedule
* the alarm repeatedly at that interval. If the interval is
* less than a single clock tick, then fudge it to a clock tick.
*/
if ( useconds ) {
462e0: 4a82 tstl %d2 <== NOT EXECUTED 462e2: 6700 ff76 beqw 4625a <ualarm+0x34> <== NOT EXECUTED 462e6: 6000 ff7e braw 46266 <ualarm+0x40> <== NOT EXECUTED
* boot. Since alarm() is dealing in seconds, we must account for
* this.
*/
ticks = the_timer->initial;
ticks -= (the_timer->stop_time - the_timer->start_time);
462ea: 2039 0006 1ec6 movel 61ec6 <_POSIX_signals_Ualarm_timer+0x14>,%d0<== NOT EXECUTED 462f0: d0b9 0006 1ebe addl 61ebe <_POSIX_signals_Ualarm_timer+0xc>,%d0<== NOT EXECUTED
/* remaining is now in ticks */
_Timespec_From_ticks( ticks, &tp );
462f6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 462fa: 90b9 0006 1eca subl 61eca <_POSIX_signals_Ualarm_timer+0x18>,%d0<== NOT EXECUTED
remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;
46300: 283c 000f 4240 movel #1000000,%d4 <== NOT EXECUTED
ticks = the_timer->initial;
ticks -= (the_timer->stop_time - the_timer->start_time);
/* remaining is now in ticks */
_Timespec_From_ticks( ticks, &tp );
46306: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46308: 4eb9 0004 9b1c jsr 49b1c <_Timespec_From_ticks> <== NOT EXECUTED
remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;
4630e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 46312: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
remaining += tp.tv_nsec / 1000;
46316: 283c 0000 03e8 movel #1000,%d4 <== NOT EXECUTED 4631c: 508f addql #8,%sp <== NOT EXECUTED 4631e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 46322: 4c44 3803 remsl %d4,%d3,%d3 <== NOT EXECUTED 46326: d680 addl %d0,%d3 <== NOT EXECUTED
/*
* If useconds is non-zero, then the caller wants to schedule
* the alarm repeatedly at that interval. If the interval is
* less than a single clock tick, then fudge it to a clock tick.
*/
if ( useconds ) {
46328: 4a82 tstl %d2 <== NOT EXECUTED 4632a: 6700 ff2e beqw 4625a <ualarm+0x34> <== NOT EXECUTED 4632e: 6000 ff36 braw 46266 <ualarm+0x40> <== NOT EXECUTED
...
00046f74 <umask>:
#include <rtems/libio_.h>
mode_t umask(
mode_t cmask
)
{
46f74: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
mode_t old_mask;
old_mask = rtems_filesystem_umask;
46f78: 2079 0006 028c moveal 6028c <rtems_current_user_env>,%a0 <== NOT EXECUTED 46f7e: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED
rtems_filesystem_umask = cmask;
46f82: 216e 0008 002c movel %fp@(8),%a0@(44) <== NOT EXECUTED
return old_mask;
}
46f88: 4e5e unlk %fp <== NOT EXECUTED
000462ec <uname>:
*/
int uname(
struct utsname *name
)
{
462ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 462f0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 462f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 462f4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
release = 5.3
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
462f8: 4a8a tstl %a2 <== NOT EXECUTED 462fa: 6700 00b6 beqw 463b2 <uname+0xc6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
462fe: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
46302: 204a moveal %a2,%a0 <== NOT EXECUTED
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
46304: 4879 0005 e899 pea 5e899 <rtems_filesystem_default_pathconf+0xb5><== NOT EXECUTED 4630a: 47f9 0005 0524 lea 50524 <snprintf>,%a3 <== NOT EXECUTED 46310: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED 46314: 486a 0020 pea %a2@(32) <== NOT EXECUTED
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
46318: 20fc 5254 454d movel #1381254477,%a0@+ <== NOT EXECUTED 4631e: 20fc 5300 0000 movel #1392508928,%a0@+ <== NOT EXECUTED 46324: 4298 clrl %a0@+ <== NOT EXECUTED 46326: 4298 clrl %a0@+ <== NOT EXECUTED 46328: 4298 clrl %a0@+ <== NOT EXECUTED 4632a: 4298 clrl %a0@+ <== NOT EXECUTED 4632c: 4298 clrl %a0@+ <== NOT EXECUTED 4632e: 4290 clrl %a0@ <== NOT EXECUTED
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
46330: 4e93 jsr %a3@ <== NOT EXECUTED
strncpy( name->release, RTEMS_VERSION, sizeof(name->release) );
strncpy( name->version, "", sizeof(name->version) );
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
46332: 4879 0005 e8a1 pea 5e8a1 <rtems_filesystem_default_pathconf+0xbd><== NOT EXECUTED
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
strncpy( name->release, RTEMS_VERSION, sizeof(name->release) );
46338: 203c 342e 3130 movel #875442480,%d0 <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
4633e: 4879 0005 e8ad pea 5e8ad <rtems_filesystem_default_pathconf+0xc9><== NOT EXECUTED 46344: 4879 0005 e8bf pea 5e8bf <rtems_filesystem_default_pathconf+0xdb><== NOT EXECUTED 4634a: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED 4634e: 486a 0080 pea %a2@(128) <== NOT EXECUTED
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
strncpy( name->release, RTEMS_VERSION, sizeof(name->release) );
46352: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 46356: 203c 2e39 392e movel #775502126,%d0 <== NOT EXECUTED 4635c: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED 46360: 203c 3000 0000 movel #805306368,%d0 <== NOT EXECUTED 46366: 42aa 004c clrl %a2@(76) <== NOT EXECUTED 4636a: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED 4636e: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED 46372: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED 46376: 42aa 0058 clrl %a2@(88) <== NOT EXECUTED 4637a: 42aa 005c clrl %a2@(92) <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
4637e: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED 46382: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED 46386: 42aa 0068 clrl %a2@(104) <== NOT EXECUTED 4638a: 42aa 006c clrl %a2@(108) <== NOT EXECUTED 4638e: 42aa 0070 clrl %a2@(112) <== NOT EXECUTED 46392: 42aa 0074 clrl %a2@(116) <== NOT EXECUTED 46396: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED 4639a: 42aa 007c clrl %a2@(124) <== NOT EXECUTED
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
4639e: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
}
463a0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
return 0;
463a4: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 463a8: 4280 clrl %d0 <== NOT EXECUTED
}
463aa: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 463ae: 4e5e unlk %fp <== NOT EXECUTED 463b0: 4e75 rts <== NOT EXECUTED
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
463b2: 4eb9 0004 f90c jsr 4f90c <__errno> <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
return 0;
}
463b8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
463bc: 2040 moveal %d0,%a0 <== NOT EXECUTED 463be: 720e moveq #14,%d1 <== NOT EXECUTED 463c0: 70ff moveq #-1,%d0 <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
return 0;
}
463c2: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 463c6: 4e5e unlk %fp <== NOT EXECUTED
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
463c8: 2081 movel %d1,%a0@ <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
return 0;
}
00046c6c <unlink>:
#include <rtems/seterr.h>
int unlink(
const char *path
)
{
46c6c: 4e56 ffc0 linkw %fp,#-64 <== NOT EXECUTED 46c70: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 46c74: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Get the node to be unlinked. Find the parent path first.
*/
parentpathlen = rtems_filesystem_dirname ( path );
46c78: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46c7a: 4eb9 0004 3de8 jsr 43de8 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( parentpathlen == 0 )
46c80: 588f addql #4,%sp <== NOT EXECUTED 46c82: 4a80 tstl %d0 <== NOT EXECUTED 46c84: 6600 00f4 bnew 46d7a <unlink+0x10e> <== NOT EXECUTED
rtems_filesystem_get_start_loc( path, &i, &parentloc );
46c88: 45ee ffe8 lea %fp@(-24),%a2 <== NOT EXECUTED 46c8c: 4283 clrl %d3 <== NOT EXECUTED 46c8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46c90: 486e fffc pea %fp@(-4) <== NOT EXECUTED
const char *name; rtems_filesystem_location_info_t parentloc; rtems_filesystem_location_info_t loc; int i; int result; bool free_parentloc = false;
46c94: 4204 clrb %d4 <== NOT EXECUTED
*/
parentpathlen = rtems_filesystem_dirname ( path );
if ( parentpathlen == 0 )
rtems_filesystem_get_start_loc( path, &i, &parentloc );
46c96: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46c98: 4eb9 0004 4e68 jsr 44e68 <rtems_filesystem_get_start_loc> <== NOT EXECUTED 46c9e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
46ca2: 2d52 ffd4 movel %a2@,%fp@(-44) <== NOT EXECUTED
name = path + parentpathlen;
46ca6: d682 addl %d2,%d3 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
46ca8: 47f9 0005 4060 lea 54060 <strlen>,%a3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
46cae: 240e movel %fp,%d2 <== NOT EXECUTED 46cb0: 0682 ffff ffd4 addil #-44,%d2 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
46cb6: 2d6e ffec ffd8 movel %fp@(-20),%fp@(-40) <== NOT EXECUTED 46cbc: 2d6e fff0 ffdc movel %fp@(-16),%fp@(-36) <== NOT EXECUTED 46cc2: 2d6e fff4 ffe0 movel %fp@(-12),%fp@(-32) <== NOT EXECUTED 46cc8: 2d6e fff8 ffe4 movel %fp@(-8),%fp@(-28) <== NOT EXECUTED
name = path + parentpathlen; name += rtems_filesystem_prefix_separators( name, strlen( name ) );
46cce: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46cd0: 4e93 jsr %a3@ <== NOT EXECUTED 46cd2: 2e80 movel %d0,%sp@ <== NOT EXECUTED 46cd4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46cd6: 4eb9 0004 3e2a jsr 43e2a <rtems_filesystem_prefix_separators><== NOT EXECUTED 46cdc: d680 addl %d0,%d3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
46cde: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46ce0: 4e93 jsr %a3@ <== NOT EXECUTED 46ce2: 4297 clrl %sp@ <== NOT EXECUTED 46ce4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46ce6: 42a7 clrl %sp@- <== NOT EXECUTED 46ce8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46cea: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46cec: 4eb9 0004 3d2c jsr 43d2c <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &loc, false );
if ( result != 0 ) {
46cf2: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 46cf6: 4a80 tstl %d0 <== NOT EXECUTED 46cf8: 6656 bnes 46d50 <unlink+0xe4> <== NOT EXECUTED
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return -1;
}
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
46cfa: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 46cfe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46d00: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 46d04: 4e90 jsr %a0@ <== NOT EXECUTED 46d06: 588f addql #4,%sp <== NOT EXECUTED 46d08: 7201 moveq #1,%d1 <== NOT EXECUTED 46d0a: b280 cmpl %d0,%d1 <== NOT EXECUTED 46d0c: 6700 0092 beqw 46da0 <unlink+0x134> <== NOT EXECUTED
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
rtems_set_errno_and_return_minus_one( EISDIR );
}
result = (*loc.ops->unlink_h)( &parentloc, &loc );
46d10: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46d12: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 46d16: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46d18: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
46d1c: 47f9 0004 3e80 lea 43e80 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
rtems_set_errno_and_return_minus_one( EISDIR );
}
result = (*loc.ops->unlink_h)( &parentloc, &loc );
46d22: 4e90 jsr %a0@ <== NOT EXECUTED 46d24: 2600 movel %d0,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
46d26: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46d28: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_parentloc )
46d2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46d2e: 4a04 tstb %d4 <== NOT EXECUTED 46d30: 660c bnes 46d3e <unlink+0xd2> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return result;
}
46d32: 2003 movel %d3,%d0 <== NOT EXECUTED 46d34: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46d3a: 4e5e unlk %fp <== NOT EXECUTED 46d3c: 4e75 rts <== NOT EXECUTED
result = (*loc.ops->unlink_h)( &parentloc, &loc );
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
46d3e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46d40: 4e93 jsr %a3@ <== NOT EXECUTED 46d42: 588f addql #4,%sp <== NOT EXECUTED
return result;
}
46d44: 2003 movel %d3,%d0 <== NOT EXECUTED 46d46: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46d4c: 4e5e unlk %fp <== NOT EXECUTED 46d4e: 4e75 rts <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &loc, false );
if ( result != 0 ) {
if ( free_parentloc )
46d50: 4a04 tstb %d4 <== NOT EXECUTED 46d52: 660e bnes 46d62 <unlink+0xf6> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return -1;
46d54: 76ff moveq #-1,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
46d56: 2003 movel %d3,%d0 <== NOT EXECUTED 46d58: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46d5e: 4e5e unlk %fp <== NOT EXECUTED 46d60: 4e75 rts <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &loc, false );
if ( result != 0 ) {
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
46d62: 2f0a movel %a2,%sp@- <== NOT EXECUTED
return -1;
46d64: 76ff moveq #-1,%d3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &loc, false );
if ( result != 0 ) {
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
46d66: 4eb9 0004 3e80 jsr 43e80 <rtems_filesystem_freenode> <== NOT EXECUTED 46d6c: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
46d6e: 2003 movel %d3,%d0 <== NOT EXECUTED 46d70: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46d76: 4e5e unlk %fp <== NOT EXECUTED 46d78: 4e75 rts <== NOT EXECUTED
parentpathlen = rtems_filesystem_dirname ( path );
if ( parentpathlen == 0 )
rtems_filesystem_get_start_loc( path, &i, &parentloc );
else {
result = rtems_filesystem_evaluate_path( path, parentpathlen,
46d7a: 42a7 clrl %sp@- <== NOT EXECUTED 46d7c: 45ee ffe8 lea %fp@(-24),%a2 <== NOT EXECUTED 46d80: 2600 movel %d0,%d3 <== NOT EXECUTED 46d82: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46d84: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 46d88: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46d8a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46d8c: 4eb9 0004 3d9c jsr 43d9c <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&parentloc,
false );
if ( result != 0 )
46d92: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46d96: 4a80 tstl %d0 <== NOT EXECUTED 46d98: 66ba bnes 46d54 <unlink+0xe8> <== NOT EXECUTED
return -1;
free_parentloc = true;
46d9a: 7801 moveq #1,%d4 <== NOT EXECUTED 46d9c: 6000 ff04 braw 46ca2 <unlink+0x36> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return -1;
}
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
46da0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46da2: 47f9 0004 3e80 lea 43e80 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED 46da8: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_parentloc )
46daa: 588f addql #4,%sp <== NOT EXECUTED 46dac: 4a04 tstb %d4 <== NOT EXECUTED 46dae: 661a bnes 46dca <unlink+0x15e> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
rtems_set_errno_and_return_minus_one( EISDIR );
46db0: 4eb9 0005 2cbc jsr 52cbc <__errno> <== NOT EXECUTED 46db6: 76ff moveq #-1,%d3 <== NOT EXECUTED 46db8: 2040 moveal %d0,%a0 <== NOT EXECUTED 46dba: 7015 moveq #21,%d0 <== NOT EXECUTED 46dbc: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
46dbe: 2003 movel %d3,%d0 <== NOT EXECUTED 46dc0: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46dc6: 4e5e unlk %fp <== NOT EXECUTED 46dc8: 4e75 rts <== NOT EXECUTED
}
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
46dca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
46dcc: 76ff moveq #-1,%d3 <== NOT EXECUTED
}
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
46dce: 4e93 jsr %a3@ <== NOT EXECUTED 46dd0: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
46dd2: 4eb9 0005 2cbc jsr 52cbc <__errno> <== NOT EXECUTED 46dd8: 2040 moveal %d0,%a0 <== NOT EXECUTED 46dda: 7015 moveq #21,%d0 <== NOT EXECUTED 46ddc: 2080 movel %d0,%a0@ <== NOT EXECUTED 46dde: 60de bras 46dbe <unlink+0x152> <== NOT EXECUTED
00046fec <unmount>:
*/
int unmount(
const char *path
)
{
46fec: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 46ff0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 46ff4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
* The root node of the mounted filesytem.
* The node for the directory that the fileystem is mounted on.
* The mount entry that is being refered to.
*/
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
46ff8: 240e movel %fp,%d2 <== NOT EXECUTED 46ffa: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED 47000: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47002: 4eb9 0005 11ac jsr 511ac <strlen> <== NOT EXECUTED 47008: 7201 moveq #1,%d1 <== NOT EXECUTED 4700a: 2e81 movel %d1,%sp@ <== NOT EXECUTED 4700c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4700e: 42a7 clrl %sp@- <== NOT EXECUTED 47010: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47012: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47014: 4eb9 0004 3cf8 jsr 43cf8 <rtems_filesystem_evaluate_path> <== NOT EXECUTED 4701a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4701e: 4a80 tstl %d0 <== NOT EXECUTED 47020: 6664 bnes 47086 <unmount+0x9a> <== NOT EXECUTED
return -1;
mt_entry = loc.mt_entry;
47022: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
/*
* Verify this is the root node for the file system to be unmounted.
*/
if ( fs_root_loc->node_access != loc.node_access ){
47026: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED 4702a: b0aa 001c cmpl %a2@(28),%d0 <== NOT EXECUTED 4702e: 6600 00b6 bnew 470e6 <unmount+0xfa> <== NOT EXECUTED
/*
* Free the loc node and just use the nodes from the mt_entry .
*/
rtems_filesystem_freenode( &loc );
47032: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47034: 47f9 0004 3ddc lea 43ddc <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED 4703a: 4e93 jsr %a3@ <== NOT EXECUTED
* that made the current node thread based instead
* of system based? I thought it was but it doesn't
* look like it in this version.
*/
if ( rtems_filesystem_current.mt_entry == mt_entry )
4703c: 2079 0006 0ab0 moveal 60ab0 <rtems_current_user_env>,%a0 <== NOT EXECUTED 47042: 588f addql #4,%sp <== NOT EXECUTED 47044: b5e8 0014 cmpal %a0@(20),%a2 <== NOT EXECUTED 47048: 6700 00be beqw 47108 <unmount+0x11c> <== NOT EXECUTED
/*
* Verify there are no file systems below the path specified
*/
if ( rtems_filesystem_mount_iterate( is_fs_below_mount_point,
4704c: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 47050: 487a ff82 pea %pc@(46fd4 <is_fs_below_mount_point>) <== NOT EXECUTED 47054: 4eb9 0004 46c4 jsr 446c4 <rtems_filesystem_mount_iterate> <== NOT EXECUTED 4705a: 508f addql #8,%sp <== NOT EXECUTED 4705c: 4a00 tstb %d0 <== NOT EXECUTED 4705e: 6600 00a8 bnew 47108 <unmount+0x11c> <== NOT EXECUTED
* Run the file descriptor table to determine if there are any file
* descriptors that are currently active and reference nodes in the
* file system that we are trying to unmount
*/
if ( rtems_libio_is_open_files_in_fs( mt_entry ) == 1 )
47062: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47064: 4eb9 0004 4194 jsr 44194 <rtems_libio_is_open_files_in_fs> <== NOT EXECUTED 4706a: 588f addql #4,%sp <== NOT EXECUTED 4706c: 7201 moveq #1,%d1 <== NOT EXECUTED 4706e: b280 cmpl %d0,%d1 <== NOT EXECUTED 47070: 6700 0096 beqw 47108 <unmount+0x11c> <== NOT EXECUTED
* Allow the file system being unmounted on to do its cleanup.
* If it fails it will set the errno to the approprate value
* and the fileystem will not be modified.
*/
if (( fs_mount_loc->ops->unmount_h )( mt_entry ) != 0 )
47074: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 47078: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4707a: 2068 0028 moveal %a0@(40),%a0 <== NOT EXECUTED 4707e: 4e90 jsr %a0@ <== NOT EXECUTED 47080: 588f addql #4,%sp <== NOT EXECUTED 47082: 4a80 tstl %d0 <== NOT EXECUTED 47084: 670c beqs 47092 <unmount+0xa6> <== NOT EXECUTED
*/
if ((fs_root_loc->ops->fsunmount_me_h )( mt_entry ) != 0){
if (( fs_mount_loc->ops->mount_h )( mt_entry ) != 0 )
rtems_fatal_error_occurred( 0 );
return -1;
47086: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
47088: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED 4708e: 4e5e unlk %fp <== NOT EXECUTED 47090: 4e75 rts <== NOT EXECUTED
* NOTE: Fatal error is called in a case which should never happen
* This was response was questionable but the best we could
* come up with.
*/
if ((fs_root_loc->ops->fsunmount_me_h )( mt_entry ) != 0){
47092: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 47096: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47098: 2068 002c moveal %a0@(44),%a0 <== NOT EXECUTED 4709c: 4e90 jsr %a0@ <== NOT EXECUTED 4709e: 588f addql #4,%sp <== NOT EXECUTED 470a0: 4a80 tstl %d0 <== NOT EXECUTED 470a2: 667c bnes 47120 <unmount+0x134> <== NOT EXECUTED
rtems_status_code rtems_libio_set_private_env(void);
rtems_status_code rtems_libio_share_private_env(rtems_id task_id) ;
static inline void rtems_libio_lock( void )
{
rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
470a4: 42a7 clrl %sp@- <== NOT EXECUTED 470a6: 42a7 clrl %sp@- <== NOT EXECUTED 470a8: 2f39 0006 213c movel 6213c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 470ae: 4eb9 0004 7bfc jsr 47bfc <rtems_semaphore_obtain> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
470b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470b6: 4eb9 0004 8650 jsr 48650 <_Chain_Extract> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
470bc: 2f39 0006 213c movel 6213c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 470c2: 4eb9 0004 7d3c jsr 47d3c <rtems_semaphore_release> <== NOT EXECUTED
/*
* Free the memory node that was allocated in mount
* Free the memory associated with the extracted mount table entry.
*/
rtems_filesystem_freenode( fs_mount_loc );
470c8: 486a 0008 pea %a2@(8) <== NOT EXECUTED 470cc: 4e93 jsr %a3@ <== NOT EXECUTED
free( mt_entry );
470ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470d0: 4eb9 0004 3df0 jsr 43df0 <free> <== NOT EXECUTED
return 0;
470d6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 470da: 4280 clrl %d0 <== NOT EXECUTED
}
470dc: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED 470e2: 4e5e unlk %fp <== NOT EXECUTED 470e4: 4e75 rts <== NOT EXECUTED
/*
* Verify this is the root node for the file system to be unmounted.
*/
if ( fs_root_loc->node_access != loc.node_access ){
rtems_filesystem_freenode( &loc );
470e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
470e8: 740d moveq #13,%d2 <== NOT EXECUTED
/*
* Verify this is the root node for the file system to be unmounted.
*/
if ( fs_root_loc->node_access != loc.node_access ){
rtems_filesystem_freenode( &loc );
470ea: 4eb9 0004 3ddc jsr 43ddc <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
470f0: 4eb9 0004 fcb8 jsr 4fcb8 <__errno> <== NOT EXECUTED 470f6: 588f addql #4,%sp <== NOT EXECUTED 470f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 470fa: 70ff moveq #-1,%d0 <== NOT EXECUTED 470fc: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
470fe: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED 47104: 4e5e unlk %fp <== NOT EXECUTED 47106: 4e75 rts <== NOT EXECUTED
* descriptors that are currently active and reference nodes in the
* file system that we are trying to unmount
*/
if ( rtems_libio_is_open_files_in_fs( mt_entry ) == 1 )
rtems_set_errno_and_return_minus_one( EBUSY );
47108: 4eb9 0004 fcb8 jsr 4fcb8 <__errno> <== NOT EXECUTED 4710e: 7210 moveq #16,%d1 <== NOT EXECUTED 47110: 2040 moveal %d0,%a0 <== NOT EXECUTED 47112: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
47114: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED
* descriptors that are currently active and reference nodes in the
* file system that we are trying to unmount
*/
if ( rtems_libio_is_open_files_in_fs( mt_entry ) == 1 )
rtems_set_errno_and_return_minus_one( EBUSY );
4711a: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
4711c: 4e5e unlk %fp <== NOT EXECUTED 4711e: 4e75 rts <== NOT EXECUTED
* This was response was questionable but the best we could
* come up with.
*/
if ((fs_root_loc->ops->fsunmount_me_h )( mt_entry ) != 0){
if (( fs_mount_loc->ops->mount_h )( mt_entry ) != 0 )
47120: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 47124: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47126: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED 4712a: 4e90 jsr %a0@ <== NOT EXECUTED 4712c: 588f addql #4,%sp <== NOT EXECUTED 4712e: 4a80 tstl %d0 <== NOT EXECUTED 47130: 6700 ff54 beqw 47086 <unmount+0x9a> <== NOT EXECUTED
rtems_fatal_error_occurred( 0 );
47134: 42a7 clrl %sp@- <== NOT EXECUTED 47136: 4eb9 0004 82f4 jsr 482f4 <rtems_fatal_error_occurred> <== NOT EXECUTED
00046f8c <utime>:
int utime(
const char *path,
const struct utimbuf *times
)
{
46f8c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 46f90: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 46f94: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
rtems_filesystem_location_info_t temp_loc;
int result;
struct utimbuf now;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &temp_loc, true ) )
46f98: 240e movel %fp,%d2 <== NOT EXECUTED 46f9a: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED 46fa0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
int utime(
const char *path,
const struct utimbuf *times
)
{
46fa2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_filesystem_location_info_t temp_loc;
int result;
struct utimbuf now;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &temp_loc, true ) )
46fa6: 4eb9 0005 1c90 jsr 51c90 <strlen> <== NOT EXECUTED 46fac: 7201 moveq #1,%d1 <== NOT EXECUTED 46fae: 2e81 movel %d1,%sp@ <== NOT EXECUTED 46fb0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46fb2: 42a7 clrl %sp@- <== NOT EXECUTED 46fb4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46fb6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46fb8: 4eb9 0004 36e8 jsr 436e8 <rtems_filesystem_evaluate_path> <== NOT EXECUTED 46fbe: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46fc2: 4a80 tstl %d0 <== NOT EXECUTED 46fc4: 6638 bnes 46ffe <utime+0x72> <== NOT EXECUTED
return -1;
if ( times == NULL ) {
46fc6: 4a8a tstl %a2 <== NOT EXECUTED 46fc8: 6740 beqs 4700a <utime+0x7e> <== NOT EXECUTED 46fca: 2212 movel %a2@,%d1 <== NOT EXECUTED 46fcc: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
now.actime = now.modtime = time( NULL );
times = &now;
}
result = (*temp_loc.ops->utime_h)( &temp_loc, times->actime, times->modtime );
46fd0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46fd2: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 46fd6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46fd8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46fda: 2068 0030 moveal %a0@(48),%a0 <== NOT EXECUTED 46fde: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &temp_loc );
46fe0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46fe2: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 46fe6: 4eb9 0004 3b84 jsr 43b84 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
46fec: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED 46ff0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
46ff4: 4cee 040c ffdc moveml %fp@(-36),%d2-%d3/%a2 <== NOT EXECUTED 46ffa: 4e5e unlk %fp <== NOT EXECUTED 46ffc: 4e75 rts <== NOT EXECUTED
rtems_filesystem_location_info_t temp_loc;
int result;
struct utimbuf now;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &temp_loc, true ) )
return -1;
46ffe: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*temp_loc.ops->utime_h)( &temp_loc, times->actime, times->modtime );
rtems_filesystem_freenode( &temp_loc );
return result;
}
47000: 4cee 040c ffdc moveml %fp@(-36),%d2-%d3/%a2 <== NOT EXECUTED 47006: 4e5e unlk %fp <== NOT EXECUTED 47008: 4e75 rts <== NOT EXECUTED
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &temp_loc, true ) )
return -1;
if ( times == NULL ) {
now.actime = now.modtime = time( NULL );
4700a: 42a7 clrl %sp@- <== NOT EXECUTED 4700c: 4eb9 0005 3f58 jsr 53f58 <time> <== NOT EXECUTED 47012: 588f addql #4,%sp <== NOT EXECUTED 47014: 2200 movel %d0,%d1 <== NOT EXECUTED
times = &now;
}
result = (*temp_loc.ops->utime_h)( &temp_loc, times->actime, times->modtime );
47016: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47018: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 4701c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4701e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47020: 2068 0030 moveal %a0@(48),%a0 <== NOT EXECUTED 47024: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &temp_loc );
47026: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47028: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 4702c: 4eb9 0004 3b84 jsr 43b84 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
47032: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED 47036: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4703a: 60b8 bras 46ff4 <utime+0x68> <== NOT EXECUTED
0004703c <utimes>:
int utimes(
const char *path,
const struct timeval times[2]
)
{
4703c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 47040: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 47044: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
struct utimbuf timeinsecs;
if ( times == NULL )
47048: 4a88 tstl %a0 <== NOT EXECUTED 4704a: 671c beqs 47068 <utimes+0x2c> <== NOT EXECUTED
return utime( path, NULL );
timeinsecs.actime = (time_t) times[0].tv_sec;
timeinsecs.modtime = (time_t) times[1].tv_sec;
return utime( path, &timeinsecs );
4704c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
struct utimbuf timeinsecs;
if ( times == NULL )
return utime( path, NULL );
timeinsecs.actime = (time_t) times[0].tv_sec;
47050: 2d50 fff8 movel %a0@,%fp@(-8) <== NOT EXECUTED
timeinsecs.modtime = (time_t) times[1].tv_sec;
47054: 2d68 0008 fffc movel %a0@(8),%fp@(-4) <== NOT EXECUTED
return utime( path, &timeinsecs );
4705a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4705c: 4eb9 0004 6f8c jsr 46f8c <utime> <== NOT EXECUTED 47062: 508f addql #8,%sp <== NOT EXECUTED
}
47064: 4e5e unlk %fp <== NOT EXECUTED 47066: 4e75 rts <== NOT EXECUTED
)
{
struct utimbuf timeinsecs;
if ( times == NULL )
return utime( path, NULL );
47068: 42a7 clrl %sp@- <== NOT EXECUTED 4706a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4706c: 4eb9 0004 6f8c jsr 46f8c <utime> <== NOT EXECUTED 47072: 508f addql #8,%sp <== NOT EXECUTED
timeinsecs.actime = (time_t) times[0].tv_sec;
timeinsecs.modtime = (time_t) times[1].tv_sec;
return utime( path, &timeinsecs );
}
47074: 4e5e unlk %fp <== NOT EXECUTED
0004634c <vfork>:
#include <unistd.h>
pid_t vfork(void)
{
return -1;
}
4634c: 70ff moveq #-1,%d0 <== NOT EXECUTED
#include <sys/types.h>
#include <unistd.h>
pid_t vfork(void)
{
4634e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1; }
46352: 4e5e unlk %fp <== NOT EXECUTED
...
000459b8 <vprintk>:
*/
void vprintk(
const char *fmt,
va_list ap
)
{
459b8: 4e56 ffc0 linkw %fp,#-64 459bc: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 459c0: 246e 0008 moveal %fp@(8),%a2
for (; *fmt != '\0'; fmt++) {
459c4: 1012 moveb %a2@,%d0
*/
void vprintk(
const char *fmt,
va_list ap
)
{
459c6: 2a6e 000c moveal %fp@(12),%a5
for (; *fmt != '\0'; fmt++) {
459ca: 6720 beqs 459ec <vprintk+0x34> <== NEVER TAKEN
459cc: 47f9 0005 d469 lea 5d469 <rtems_filesystem_default_pathconf+0xb5>,%a3
bool minus = false;
bool sign = false;
char lead = ' ';
char c;
if (*fmt != '%') {
459d2: 49c0 extbl %d0 459d4: 7225 moveq #37,%d1 459d6: b280 cmpl %d0,%d1
459d8: 671c beqs 459f6 <vprintk+0x3e>
BSP_output_char(*fmt);
459da: 2f00 movel %d0,%sp@- 459dc: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 459e2: 4e90 jsr %a0@
continue;
459e4: 588f addql #4,%sp
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
459e6: 528a addql #1,%a2 459e8: 1012 moveb %a2@,%d0
459ea: 66e6 bnes 459d2 <vprintk+0x1a>
sign,
width,
lead
);
}
}
459ec: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5 459f2: 4e5e unlk %fp 459f4: 4e75 rts
if (*fmt != '%') {
BSP_output_char(*fmt);
continue;
}
fmt++;
459f6: 528a addql #1,%a2
if (*fmt == '0' ) {
459f8: 7430 moveq #48,%d2 459fa: 1012 moveb %a2@,%d0 459fc: 1200 moveb %d0,%d1 459fe: 49c1 extbl %d1 45a00: b481 cmpl %d1,%d2 45a02: 6700 021a beqw 45c1e <vprintk+0x266>
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
bool sign = false;
char lead = ' ';
45a06: 7c20 moveq #32,%d6
fmt++;
if (*fmt == '0' ) {
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
45a08: 762d moveq #45,%d3 45a0a: b681 cmpl %d1,%d3 45a0c: 6700 01e4 beqw 45bf2 <vprintk+0x23a>
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a10: 0680 ffff ffd0 addil #-48,%d0 45a16: 7a09 moveq #9,%d5 45a18: 0280 0000 00ff andil #255,%d0
{
for (; *fmt != '\0'; fmt++) {
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
45a1e: 4204 clrb %d4
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a20: ba80 cmpl %d0,%d5 45a22: 6500 01ec bcsw 45c10 <vprintk+0x258>
* console is not yet initialized or in ISR's. * * Arguments: * as in printf: fmt - format string, ... - unnamed arguments. */ void vprintk(
45a26: 41ea 0001 lea %a2@(1),%a0 <== NOT EXECUTED 45a2a: 4282 clrl %d2 <== NOT EXECUTED
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
width *= 10;
45a2c: 2602 movel %d2,%d3 <== NOT EXECUTED
width += ((unsigned) *fmt - '0');
45a2e: 2448 moveal %a0,%a2 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a30: 5288 addql #1,%a0 <== NOT EXECUTED 45a32: 7a09 moveq #9,%d5 <== NOT EXECUTED
width *= 10;
45a34: e78b lsll #3,%d3 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a36: 1012 moveb %a2@,%d0 <== NOT EXECUTED
width *= 10;
45a38: 2243 moveal %d3,%a1 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a3a: 2600 movel %d0,%d3 <== NOT EXECUTED 45a3c: 0683 ffff ffd0 addil #-48,%d3 <== NOT EXECUTED
width *= 10;
45a42: 43f1 2a00 lea %a1@(00000000,%d2:l:2),%a1 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a46: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
width *= 10;
width += ((unsigned) *fmt - '0');
45a4c: 43f1 18d0 lea %a1@(ffffffd0,%d1:l),%a1 <== NOT EXECUTED 45a50: 1200 moveb %d0,%d1 <== NOT EXECUTED 45a52: 2409 movel %a1,%d2 <== NOT EXECUTED 45a54: 49c1 extbl %d1 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a56: ba83 cmpl %d3,%d5 <== NOT EXECUTED 45a58: 64d2 bccs 45a2c <vprintk+0x74> <== NOT EXECUTED 45a5a: 1200 moveb %d0,%d1 <== NOT EXECUTED
width *= 10;
width += ((unsigned) *fmt - '0');
fmt++;
}
if ((c = *fmt) == 'l') {
45a5c: 706c moveq #108,%d0 <== NOT EXECUTED 45a5e: 49c1 extbl %d1 <== NOT EXECUTED 45a60: b081 cmpl %d1,%d0 <== NOT EXECUTED 45a62: 6700 008e beqw 45af2 <vprintk+0x13a> <== NOT EXECUTED
lflag = true;
c = *++fmt;
}
if ( c == 'c' ) {
45a66: 7663 moveq #99,%d3 45a68: b681 cmpl %d1,%d3 45a6a: 6700 0094 beqw 45b00 <vprintk+0x148>
/* need a cast here since va_arg() only takes fully promoted types */
char chr = (char) va_arg(ap, int);
BSP_output_char(chr);
continue;
}
if ( c == 's' ) {
45a6e: 7a73 moveq #115,%d5 45a70: ba81 cmpl %d1,%d5 45a72: 6700 01b8 beqw 45c2c <vprintk+0x274>
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
45a76: 766f moveq #111,%d3 45a78: b681 cmpl %d1,%d3 45a7a: 6700 016c beqw 45be8 <vprintk+0x230> 45a7e: 7a4f moveq #79,%d5 45a80: ba81 cmpl %d1,%d5 45a82: 6700 0164 beqw 45be8 <vprintk+0x230>
base = 8; sign = false;
} else if ( c == 'i' || c == 'I' ||
45a86: 163c 0069 moveb #105,%d3 45a8a: b681 cmpl %d1,%d3 45a8c: 6700 0090 beqw 45b1e <vprintk+0x166> 45a90: 1a3c 0049 moveb #73,%d5 45a94: ba81 cmpl %d1,%d5 45a96: 6700 0086 beqw 45b1e <vprintk+0x166> 45a9a: 163c 0064 moveb #100,%d3 45a9e: b681 cmpl %d1,%d3
45aa0: 677c beqs 45b1e <vprintk+0x166> <== ALWAYS TAKEN
c == 'd' || c == 'D' ) {
45aa2: 1a3c 0044 moveb #68,%d5 <== NOT EXECUTED 45aa6: ba81 cmpl %d1,%d5 <== NOT EXECUTED 45aa8: 6774 beqs 45b1e <vprintk+0x166> <== NOT EXECUTED
base = 10; sign = true;
} else if ( c == 'u' || c == 'U' ) {
45aaa: 163c 0075 moveb #117,%d3 <== NOT EXECUTED 45aae: b681 cmpl %d1,%d3 <== NOT EXECUTED 45ab0: 6700 0258 beqw 45d0a <vprintk+0x352> <== NOT EXECUTED 45ab4: 1a3c 0055 moveb #85,%d5 <== NOT EXECUTED 45ab8: ba81 cmpl %d1,%d5 <== NOT EXECUTED 45aba: 6700 024e beqw 45d0a <vprintk+0x352> <== NOT EXECUTED
base = 10; sign = false;
} else if ( c == 'x' || c == 'X' ) {
45abe: 163c 0078 moveb #120,%d3 <== NOT EXECUTED 45ac2: b681 cmpl %d1,%d3 <== NOT EXECUTED 45ac4: 6700 0260 beqw 45d26 <vprintk+0x36e> <== NOT EXECUTED 45ac8: 1a3c 0058 moveb #88,%d5 <== NOT EXECUTED 45acc: ba81 cmpl %d1,%d5 <== NOT EXECUTED 45ace: 6700 0256 beqw 45d26 <vprintk+0x36e> <== NOT EXECUTED
base = 16; sign = false;
} else if ( c == 'p' ) {
45ad2: 7070 moveq #112,%d0 <== NOT EXECUTED 45ad4: b081 cmpl %d1,%d0 <== NOT EXECUTED 45ad6: 6700 0258 beqw 45d30 <vprintk+0x378> <== NOT EXECUTED
base = 16; sign = false; lflag = true;
} else {
BSP_output_char(c);
45ada: 2f01 movel %d1,%sp@- <== NOT EXECUTED 45adc: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 <== NOT EXECUTED
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45ae2: 528a addql #1,%a2 <== NOT EXECUTED
} else if ( c == 'x' || c == 'X' ) {
base = 16; sign = false;
} else if ( c == 'p' ) {
base = 16; sign = false; lflag = true;
} else {
BSP_output_char(c);
45ae4: 4e90 jsr %a0@ <== NOT EXECUTED
continue;
45ae6: 588f addql #4,%sp <== NOT EXECUTED
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45ae8: 1012 moveb %a2@,%d0 <== NOT EXECUTED 45aea: 6600 fee6 bnew 459d2 <vprintk+0x1a> <== NOT EXECUTED 45aee: 6000 fefc braw 459ec <vprintk+0x34> <== NOT EXECUTED
fmt++;
}
if ((c = *fmt) == 'l') {
lflag = true;
c = *++fmt;
45af2: 528a addql #1,%a2 <== NOT EXECUTED
}
if ( c == 'c' ) {
45af4: 7663 moveq #99,%d3 <== NOT EXECUTED 45af6: 1212 moveb %a2@,%d1 <== NOT EXECUTED 45af8: 49c1 extbl %d1 <== NOT EXECUTED 45afa: b681 cmpl %d1,%d3 <== NOT EXECUTED 45afc: 6600 ff70 bnew 45a6e <vprintk+0xb6> <== NOT EXECUTED
/* need a cast here since va_arg() only takes fully promoted types */
char chr = (char) va_arg(ap, int);
45b00: 2015 movel %a5@,%d0
BSP_output_char(chr);
45b02: 49c0 extbl %d0
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45b04: 528a addql #1,%a2
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);
45b06: 588d addql #4,%a5
BSP_output_char(chr);
45b08: 2f00 movel %d0,%sp@- 45b0a: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 45b10: 4e90 jsr %a0@
continue;
45b12: 588f addql #4,%sp
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45b14: 1012 moveb %a2@,%d0 45b16: 6600 feba bnew 459d2 <vprintk+0x1a>
45b1a: 6000 fed0 braw 459ec <vprintk+0x34> <== 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;
45b1e: 760a moveq #10,%d3
} else {
BSP_output_char(c);
continue;
}
printNum(
45b20: 49c6 extbl %d6
/* 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;
45b22: 7201 moveq #1,%d1
} else {
BSP_output_char(c);
continue;
}
printNum(
45b24: 2815 movel %a5@,%d4
lflag ? va_arg(ap, long) : (long) va_arg(ap, int),
45b26: 588d addql #4,%a5
unsigned long unsigned_num;
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
45b28: 4a01 tstb %d1
45b2a: 6706 beqs 45b32 <vprintk+0x17a> <== NEVER TAKEN
45b2c: 4a84 tstl %d4 45b2e: 6d00 01a4 bltw 45cd4 <vprintk+0x31c>
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b32: 2004 movel %d4,%d0 45b34: 4c43 0000 remul %d3,%d0,%d0 45b38: 6700 01bc beqw 45cf6 <vprintk+0x33e> 45b3c: 2200 movel %d0,%d1 45b3e: 43ee ffec lea %fp@(-20),%a1
if (maxwidth) maxwidth--;
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
45b42: 91c8 subal %a0,%a0
while ((n = unsigned_num / base) > 0) {
toPrint[count++] = (char) (unsigned_num - (n * base));
45b44: 5288 addql #1,%a0
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b46: 1e03 moveb %d3,%d7
toPrint[count++] = (char) (unsigned_num - (n * base));
45b48: 3a00 movew %d0,%d5 45b4a: 2d42 ffe8 movel %d2,%fp@(-24) 45b4e: cbc7 mulsw %d7,%d5
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b50: 4c43 1001 remul %d3,%d1,%d1
toPrint[count++] = (char) (unsigned_num - (n * base));
45b54: 9885 subl %d5,%d4 45b56: 2a04 movel %d4,%d5
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b58: 2800 movel %d0,%d4
toPrint[count++] = (char) (unsigned_num - (n * base));
45b5a: 12c5 moveb %d5,%a1@+
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b5c: 4a81 tstl %d1
45b5e: 671a beqs 45b7a <vprintk+0x1c2> <== ALWAYS TAKEN
45b60: 2001 movel %d1,%d0 <== NOT EXECUTED 45b62: 2200 movel %d0,%d1 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
45b64: 5288 addql #1,%a0 <== NOT EXECUTED 45b66: 3a00 movew %d0,%d5 <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b68: 4c43 1001 remul %d3,%d1,%d1 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
45b6c: cbc7 mulsw %d7,%d5 <== NOT EXECUTED 45b6e: 9885 subl %d5,%d4 <== NOT EXECUTED 45b70: 2a04 movel %d4,%d5 <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b72: 2800 movel %d0,%d4 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
45b74: 12c5 moveb %d5,%a1@+ <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b76: 4a81 tstl %d1 <== NOT EXECUTED 45b78: 66e6 bnes 45b60 <vprintk+0x1a8> <== NOT EXECUTED
45b7a: 2608 movel %a0,%d3 45b7c: 5283 addql #1,%d3 45b7e: 242e ffe8 movel %fp@(-24),%d2
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
45b82: 1d80 88ec moveb %d0,%fp@(ffffffec,%a0:l)
for (n=maxwidth ; n > count; n-- )
45b86: b682 cmpl %d2,%d3
45b88: 6412 bccs 45b9c <vprintk+0x1e4> <== ALWAYS TAKEN
BSP_output_char(lead);
45b8a: 2f06 movel %d6,%sp@- <== NOT EXECUTED 45b8c: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
45b92: 5382 subql #1,%d2 <== NOT EXECUTED
BSP_output_char(lead);
45b94: 4e90 jsr %a0@ <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
45b96: 588f addql #4,%sp <== NOT EXECUTED 45b98: b682 cmpl %d2,%d3 <== NOT EXECUTED 45b9a: 65ee bcss 45b8a <vprintk+0x1d2> <== NOT EXECUTED
BSP_output_char(lead);
for (n = 0; n < count; n++) {
45b9c: 4a83 tstl %d3 45b9e: 6700 fe46 beqw 459e6 <vprintk+0x2e>
* console is not yet initialized or in ISR's. * * Arguments: * as in printf: fmt - format string, ... - unnamed arguments. */ void vprintk(
45ba2: 49ee ffec lea %fp@(-20),%a4 45ba6: d9c3 addal %d3,%a4 45ba8: 4282 clrl %d2
for (n=maxwidth ; n > count; n-- )
BSP_output_char(lead);
for (n = 0; n < count; n++) {
BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
45baa: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
BSP_output_char(lead);
for (n = 0; n < count; n++) {
45bb0: 5282 addql #1,%d2
BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
45bb2: 1024 moveb %a4@-,%d0 45bb4: 49c0 extbl %d0 45bb6: 1033 0800 moveb %a3@(00000000,%d0:l),%d0 45bba: 49c0 extbl %d0 45bbc: 2f00 movel %d0,%sp@- 45bbe: 4e90 jsr %a0@
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
BSP_output_char(lead);
for (n = 0; n < count; n++) {
45bc0: 588f addql #4,%sp 45bc2: b682 cmpl %d2,%d3 45bc4: 6300 fe20 blsw 459e6 <vprintk+0x2e>
BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
45bc8: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
BSP_output_char(lead);
for (n = 0; n < count; n++) {
45bce: 5282 addql #1,%d2
BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
45bd0: 1024 moveb %a4@-,%d0 45bd2: 49c0 extbl %d0 45bd4: 1033 0800 moveb %a3@(00000000,%d0:l),%d0 45bd8: 49c0 extbl %d0 45bda: 2f00 movel %d0,%sp@- 45bdc: 4e90 jsr %a0@
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
BSP_output_char(lead);
for (n = 0; n < count; n++) {
45bde: 588f addql #4,%sp 45be0: b682 cmpl %d2,%d3
45be2: 62c6 bhis 45baa <vprintk+0x1f2> <== NEVER TAKEN
45be4: 6000 fe00 braw 459e6 <vprintk+0x2e>
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
base = 8; sign = false;
45be8: 7608 moveq #8,%d3 <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45bea: 49c6 extbl %d6 <== NOT EXECUTED
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
base = 8; sign = false;
45bec: 4201 clrb %d1 <== NOT EXECUTED 45bee: 6000 ff34 braw 45b24 <vprintk+0x16c> <== NOT EXECUTED
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
fmt++;
45bf2: 528a addql #1,%a2 <== NOT EXECUTED
}
while (*fmt >= '0' && *fmt <= '9' ) {
45bf4: 7a09 moveq #9,%d5 <== NOT EXECUTED
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
fmt++;
45bf6: 1012 moveb %a2@,%d0 <== NOT EXECUTED
if (*fmt == '0' ) {
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
45bf8: 7801 moveq #1,%d4 <== NOT EXECUTED 45bfa: 1200 moveb %d0,%d1 <== NOT EXECUTED
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45bfc: 0680 ffff ffd0 addil #-48,%d0 <== NOT EXECUTED 45c02: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 45c08: 49c1 extbl %d1 <== NOT EXECUTED 45c0a: ba80 cmpl %d0,%d5 <== NOT EXECUTED 45c0c: 6400 fe18 bccw 45a26 <vprintk+0x6e> <== NOT EXECUTED
45c10: 4282 clrl %d2
width *= 10;
width += ((unsigned) *fmt - '0');
fmt++;
}
if ((c = *fmt) == 'l') {
45c12: 706c moveq #108,%d0 45c14: b081 cmpl %d1,%d0 45c16: 6600 fe4e bnew 45a66 <vprintk+0xae>
45c1a: 6000 fed6 braw 45af2 <vprintk+0x13a> <== NOT EXECUTED
continue;
}
fmt++;
if (*fmt == '0' ) {
lead = '0';
fmt++;
45c1e: 528a addql #1,%a2 <== NOT EXECUTED 45c20: 1012 moveb %a2@,%d0 <== NOT EXECUTED
BSP_output_char(*fmt);
continue;
}
fmt++;
if (*fmt == '0' ) {
lead = '0';
45c22: 7c30 moveq #48,%d6 <== NOT EXECUTED 45c24: 1200 moveb %d0,%d1 <== NOT EXECUTED 45c26: 49c1 extbl %d1 <== NOT EXECUTED 45c28: 6000 fdde braw 45a08 <vprintk+0x50> <== NOT EXECUTED
}
if ( c == 's' ) {
unsigned i, len;
char *s, *str;
str = va_arg(ap, char *);
45c2c: 2855 moveal %a5@,%a4 45c2e: 588d addql #4,%a5
if ( str == NULL ) {
45c30: 4a8c tstl %a4 45c32: 6700 00e0 beqw 45d14 <vprintk+0x35c>
str = "";
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
45c36: 4a14 tstb %a4@ 45c38: 6700 00e6 beqw 45d20 <vprintk+0x368>
* console is not yet initialized or in ISR's. * * Arguments: * as in printf: fmt - format string, ... - unnamed arguments. */ void vprintk(
45c3c: 41ec 0001 lea %a4@(1),%a0
if ( str == NULL ) {
str = "";
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
45c40: 4283 clrl %d3 45c42: 5283 addql #1,%d3 45c44: 4a18 tstb %a0@+
45c46: 66fa bnes 45c42 <vprintk+0x28a>
;
/* leading spaces */
if ( !minus )
45c48: 4a04 tstb %d4
45c4a: 661a bnes 45c66 <vprintk+0x2ae> <== NEVER TAKEN
for ( i=len ; i<width ; i++ )
45c4c: b483 cmpl %d3,%d2
45c4e: 6316 blss 45c66 <vprintk+0x2ae> <== ALWAYS TAKEN
45c50: 2a03 movel %d3,%d5 <== NOT EXECUTED
BSP_output_char(' ');
45c52: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
for ( len=0, s=str ; *s ; len++, s++ )
;
/* leading spaces */
if ( !minus )
for ( i=len ; i<width ; i++ )
45c56: 5285 addql #1,%d5 <== NOT EXECUTED
BSP_output_char(' ');
45c58: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 <== NOT EXECUTED 45c5e: 4e90 jsr %a0@ <== NOT EXECUTED
for ( len=0, s=str ; *s ; len++, s++ )
;
/* leading spaces */
if ( !minus )
for ( i=len ; i<width ; i++ )
45c60: 588f addql #4,%sp <== NOT EXECUTED 45c62: b485 cmpl %d5,%d2 <== NOT EXECUTED 45c64: 62ec bhis 45c52 <vprintk+0x29a> <== NOT EXECUTED
BSP_output_char(' ');
/* no width option */
if (width == 0) {
45c66: 4a82 tstl %d2
45c68: 6606 bnes 45c70 <vprintk+0x2b8> <== NEVER TAKEN
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
45c6a: 4a83 tstl %d3
45c6c: 672c beqs 45c9a <vprintk+0x2e2>
45c6e: 2403 movel %d3,%d2 45c70: 1014 moveb %a4@,%d0
45c72: 6726 beqs 45c9a <vprintk+0x2e2> <== NEVER TAKEN
BSP_output_char(*str);
45c74: 49c0 extbl %d0
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
45c76: 528c addql #1,%a4
BSP_output_char(*str);
45c78: 2f00 movel %d0,%sp@- 45c7a: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 45c80: 4e90 jsr %a0@ 45c82: 588f addql #4,%sp
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
45c84: 101c moveb %a4@+,%d0
45c86: 6712 beqs 45c9a <vprintk+0x2e2> <== NEVER TAKEN
BSP_output_char(*str);
45c88: 49c0 extbl %d0 45c8a: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 45c90: 2f00 movel %d0,%sp@- 45c92: 4e90 jsr %a0@ 45c94: 588f addql #4,%sp
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
45c96: 101c moveb %a4@+,%d0
45c98: 66ee bnes 45c88 <vprintk+0x2d0>
BSP_output_char(*str);
/* trailing spaces */
if ( minus )
45c9a: 4a04 tstb %d4 45c9c: 6700 fd48 beqw 459e6 <vprintk+0x2e>
for ( i=len ; i<width ; i++ )
45ca0: b483 cmpl %d3,%d2 <== NOT EXECUTED 45ca2: 6300 fd42 blsw 459e6 <vprintk+0x2e> <== NOT EXECUTED
BSP_output_char(' ');
45ca6: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
for ( i=0 ; i<width && *str ; str++ )
BSP_output_char(*str);
/* trailing spaces */
if ( minus )
for ( i=len ; i<width ; i++ )
45caa: 5283 addql #1,%d3 <== NOT EXECUTED
BSP_output_char(' ');
45cac: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 <== NOT EXECUTED 45cb2: 4e90 jsr %a0@ <== NOT EXECUTED
for ( i=0 ; i<width && *str ; str++ )
BSP_output_char(*str);
/* trailing spaces */
if ( minus )
for ( i=len ; i<width ; i++ )
45cb4: 588f addql #4,%sp <== NOT EXECUTED 45cb6: b483 cmpl %d3,%d2 <== NOT EXECUTED 45cb8: 6300 fd2c blsw 459e6 <vprintk+0x2e> <== NOT EXECUTED
BSP_output_char(' ');
45cbc: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
for ( i=0 ; i<width && *str ; str++ )
BSP_output_char(*str);
/* trailing spaces */
if ( minus )
for ( i=len ; i<width ; i++ )
45cc0: 5283 addql #1,%d3 <== NOT EXECUTED
BSP_output_char(' ');
45cc2: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 <== NOT EXECUTED 45cc8: 4e90 jsr %a0@ <== NOT EXECUTED
for ( i=0 ; i<width && *str ; str++ )
BSP_output_char(*str);
/* trailing spaces */
if ( minus )
for ( i=len ; i<width ; i++ )
45cca: 588f addql #4,%sp <== NOT EXECUTED 45ccc: b483 cmpl %d3,%d2 <== NOT EXECUTED 45cce: 62d6 bhis 45ca6 <vprintk+0x2ee> <== NOT EXECUTED 45cd0: 6000 fd14 braw 459e6 <vprintk+0x2e> <== NOT EXECUTED
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
BSP_output_char('-');
45cd4: 4878 002d pea 2d <OPER2+0x19> <== NOT EXECUTED
unsigned_num = (unsigned long) -num;
45cd8: 4484 negl %d4 <== NOT EXECUTED
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
BSP_output_char('-');
45cda: 2079 0005 e42c moveal 5e42c <BSP_output_char>,%a0 <== NOT EXECUTED 45ce0: 4e90 jsr %a0@ <== NOT EXECUTED
unsigned_num = (unsigned long) -num;
if (maxwidth) maxwidth--;
45ce2: 588f addql #4,%sp <== NOT EXECUTED 45ce4: 4a82 tstl %d2 <== NOT EXECUTED 45ce6: 6700 fe4a beqw 45b32 <vprintk+0x17a> <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45cea: 2004 movel %d4,%d0 <== NOT EXECUTED
char toPrint[20];
if ( sign && (num < 0) ) {
BSP_output_char('-');
unsigned_num = (unsigned long) -num;
if (maxwidth) maxwidth--;
45cec: 5382 subql #1,%d2 <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45cee: 4c43 0000 remul %d3,%d0,%d0 <== NOT EXECUTED 45cf2: 6600 fe48 bnew 45b3c <vprintk+0x184> <== NOT EXECUTED 45cf6: 2004 movel %d4,%d0 <== NOT EXECUTED
if (maxwidth) maxwidth--;
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
45cf8: 91c8 subal %a0,%a0 <== NOT EXECUTED
while ((n = unsigned_num / base) > 0) {
45cfa: 7601 moveq #1,%d3 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
45cfc: 1d80 88ec moveb %d0,%fp@(ffffffec,%a0:l) <== NOT EXECUTED
for (n=maxwidth ; n > count; n-- )
45d00: b682 cmpl %d2,%d3 <== NOT EXECUTED 45d02: 6500 fe86 bcsw 45b8a <vprintk+0x1d2> <== NOT EXECUTED 45d06: 6000 fe94 braw 45b9c <vprintk+0x1e4> <== NOT EXECUTED
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;
45d0a: 760a moveq #10,%d3 <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45d0c: 49c6 extbl %d6 <== NOT EXECUTED
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;
45d0e: 4201 clrb %d1 <== NOT EXECUTED 45d10: 6000 fe12 braw 45b24 <vprintk+0x16c> <== NOT EXECUTED
char *s, *str;
str = va_arg(ap, char *);
if ( str == NULL ) {
str = "";
45d14: 49f9 0005 d468 lea 5d468 <rtems_filesystem_default_pathconf+0xb4>,%a4<== NOT EXECUTED
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
45d1a: 4a14 tstb %a4@ <== NOT EXECUTED 45d1c: 6600 ff1e bnew 45c3c <vprintk+0x284> <== NOT EXECUTED
45d20: 4283 clrl %d3 45d22: 6000 ff24 braw 45c48 <vprintk+0x290>
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;
45d26: 7610 moveq #16,%d3 <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45d28: 49c6 extbl %d6 <== NOT EXECUTED
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;
45d2a: 4201 clrb %d1 <== NOT EXECUTED 45d2c: 6000 fdf6 braw 45b24 <vprintk+0x16c> <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45d30: 49c6 extbl %d6 <== NOT EXECUTED
} 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;
45d32: 7610 moveq #16,%d3 <== NOT EXECUTED 45d34: 4201 clrb %d1 <== NOT EXECUTED 45d36: 6000 fdec braw 45b24 <vprintk+0x16c> <== NOT EXECUTED
...
00046358 <wait>:
#include <rtems/seterr.h>
int wait(
int *stat_loc
)
{
46358: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4635c: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 46362: 7258 moveq #88,%d1 <== NOT EXECUTED 46364: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46366: 70ff moveq #-1,%d0 <== NOT EXECUTED 46368: 4e5e unlk %fp <== NOT EXECUTED
int wait(
int *stat_loc
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4636a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00046370 <waitpid>:
int waitpid(
pid_t pid,
int *stat_loc,
int options
)
{
46370: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46374: 4eb9 0004 f2b4 jsr 4f2b4 <__errno> <== NOT EXECUTED 4637a: 7258 moveq #88,%d1 <== NOT EXECUTED 4637c: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
4637e: 70ff moveq #-1,%d0 <== NOT EXECUTED 46380: 4e5e unlk %fp <== NOT EXECUTED
pid_t pid,
int *stat_loc,
int options
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
46382: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
0005c08c <write>:
ssize_t write(
int fd,
const void *buffer,
size_t count
)
{
5c08c: 4e56 fff4 linkw %fp,#-12 5c090: 202e 0008 movel %fp@(8),%d0 5c094: 222e 000c movel %fp@(12),%d1 5c098: 206e 0010 moveal %fp@(16),%a0 5c09c: 48d7 040c moveml %d2-%d3/%a2,%sp@
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5c0a0: b0b9 0005 e334 cmpl 5e334 <rtems_libio_number_iops>,%d0
5c0a6: 6468 bccs 5c110 <write+0x84> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
5c0a8: 2400 movel %d0,%d2 5c0aa: ed88 lsll #6,%d0 5c0ac: e78a lsll #3,%d2 5c0ae: 2479 0005 fb34 moveal 5fb34 <rtems_libio_iops>,%a2 5c0b4: 9082 subl %d2,%d0 5c0b6: d5c0 addal %d0,%a2
rtems_libio_check_is_open( iop );
5c0b8: 202a 0014 movel %a2@(20),%d0 5c0bc: 0800 0008 btst #8,%d0
5c0c0: 674e beqs 5c110 <write+0x84> <== NEVER TAKEN
rtems_libio_check_buffer( buffer );
5c0c2: 4a81 tstl %d1
5c0c4: 6762 beqs 5c128 <write+0x9c> <== NEVER TAKEN
rtems_libio_check_count( count );
5c0c6: 4a88 tstl %a0
5c0c8: 673a beqs 5c104 <write+0x78> <== NEVER TAKEN
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
5c0ca: 44c0 movew %d0,%ccr
5c0cc: 665a bnes 5c128 <write+0x9c> <== NEVER TAKEN
/*
* Now process the write() request.
*/
rc = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5c0ce: 226a 0020 moveal %a2@(32),%a1 5c0d2: 2f08 movel %a0,%sp@- 5c0d4: 2f01 movel %d1,%sp@- 5c0d6: 2f0a movel %a2,%sp@- 5c0d8: 2069 000c moveal %a1@(12),%a0 5c0dc: 4e90 jsr %a0@
if ( rc > 0 )
5c0de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c0e2: 4a80 tstl %d0 <== NOT EXECUTED 5c0e4: 6f14 bles 5c0fa <write+0x6e> <== NOT EXECUTED
iop->offset += rc;
5c0e6: 2400 movel %d0,%d2 <== NOT EXECUTED 5c0e8: 5bc1 smi %d1 <== NOT EXECUTED 5c0ea: 49c1 extbl %d1 <== NOT EXECUTED 5c0ec: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED 5c0f0: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED 5c0f4: d781 addxl %d1,%d3 <== NOT EXECUTED 5c0f6: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
return rc;
}
5c0fa: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5c100: 4e5e unlk %fp <== NOT EXECUTED 5c102: 4e75 rts <== NOT EXECUTED
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 );
5c104: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c106: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5c10c: 4e5e unlk %fp <== NOT EXECUTED 5c10e: 4e75 rts <== NOT EXECUTED
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
5c110: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5c116: 7409 moveq #9,%d2 <== NOT EXECUTED 5c118: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c11a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c11c: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c11e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5c124: 4e5e unlk %fp <== NOT EXECUTED 5c126: 4e75 rts <== NOT EXECUTED
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( iop, LIBIO_FLAGS_WRITE );
5c128: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 5c12e: 7216 moveq #22,%d1 <== NOT EXECUTED 5c130: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c132: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c134: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
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( iop, LIBIO_FLAGS_WRITE );
5c13a: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c13c: 4e5e unlk %fp <== NOT EXECUTED
0004719c <writev>:
ssize_t writev(
int fd,
const struct iovec *iov,
int iovcnt
)
{
4719c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 471a0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 471a4: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 471a8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 471ac: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
int bytes;
rtems_libio_t *iop;
ssize_t old;
bool all_zeros;
rtems_libio_check_fd( fd );
471b0: b0b9 0005 f0f4 cmpl 5f0f4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 471b6: 6400 00e8 bccw 472a0 <writev+0x104> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
471ba: 2200 movel %d0,%d1 <== NOT EXECUTED 471bc: ed88 lsll #6,%d0 <== NOT EXECUTED 471be: e789 lsll #3,%d1 <== NOT EXECUTED 471c0: 2679 0006 08f4 moveal 608f4 <rtems_libio_iops>,%a3 <== NOT EXECUTED 471c6: 9081 subl %d1,%d0 <== NOT EXECUTED 471c8: d7c0 addal %d0,%a3 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
471ca: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED 471ce: 0800 0008 btst #8,%d0 <== NOT EXECUTED 471d2: 6700 00cc beqw 472a0 <writev+0x104> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
471d6: 44c0 movew %d0,%ccr <== NOT EXECUTED 471d8: 6640 bnes 4721a <writev+0x7e> <== NOT EXECUTED
/*
* Argument validation on IO vector
*/
if ( !iov )
471da: 4a8a tstl %a2 <== NOT EXECUTED 471dc: 673c beqs 4721a <writev+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
471de: 4a82 tstl %d2 <== NOT EXECUTED 471e0: 6f38 bles 4721a <writev+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
471e2: 0c82 0000 0400 cmpil #1024,%d2 <== NOT EXECUTED 471e8: 6e30 bgts 4721a <writev+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
471ea: 204a moveal %a2,%a0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
471ec: 4281 clrl %d1 <== NOT EXECUTED 471ee: 93c9 subal %a1,%a1 <== NOT EXECUTED 471f0: 7601 moveq #1,%d3 <== NOT EXECUTED
/*
* 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 )
471f2: 4a90 tstl %a0@ <== NOT EXECUTED 471f4: 6724 beqs 4721a <writev+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
471f6: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
all_zeros = false;
471fa: 57c4 seq %d4 <== NOT EXECUTED
/* check for wrap */
old = total;
total += iov[v].iov_len;
471fc: d089 addl %a1,%d0 <== NOT EXECUTED
* 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++ ) {
471fe: 5281 addql #1,%d1 <== NOT EXECUTED 47200: 5088 addql #8,%a0 <== NOT EXECUTED
*/
if ( iov[v].iov_base == 0 )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
47202: c684 andl %d4,%d3 <== NOT EXECUTED
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old || total > SSIZE_MAX )
47204: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 47206: 6e12 bgts 4721a <writev+0x7e> <== NOT EXECUTED 47208: 0c80 0000 7fff cmpil #32767,%d0 <== NOT EXECUTED 4720e: 6e0a bgts 4721a <writev+0x7e> <== NOT EXECUTED
* 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++ ) {
47210: b282 cmpl %d2,%d1 <== NOT EXECUTED 47212: 6c20 bges 47234 <writev+0x98> <== NOT EXECUTED 47214: 2240 moveal %d0,%a1 <== NOT EXECUTED
/*
* 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 )
47216: 4a90 tstl %a0@ <== NOT EXECUTED 47218: 66dc bnes 471f6 <writev+0x5a> <== NOT EXECUTED
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old || total > SSIZE_MAX )
rtems_set_errno_and_return_minus_one( EINVAL );
4721a: 4eb9 0004 f998 jsr 4f998 <__errno> <== NOT EXECUTED 47220: 78ff moveq #-1,%d4 <== NOT EXECUTED 47222: 2040 moveal %d0,%a0 <== NOT EXECUTED 47224: 7016 moveq #22,%d0 <== NOT EXECUTED 47226: 2080 movel %d0,%a0@ <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47228: 2004 movel %d4,%d0 <== NOT EXECUTED 4722a: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 47230: 4e5e unlk %fp <== NOT EXECUTED 47232: 4e75 rts <== NOT EXECUTED
}
/*
* A writev with all zeros is supposed to have no effect per OpenGroup.
*/
if ( all_zeros == true ) {
47234: 4a03 tstb %d3 <== NOT EXECUTED 47236: 661c bnes 47254 <writev+0xb8> <== NOT EXECUTED
#include <sys/uio.h>
#include <rtems/libio_.h>
#include <rtems/seterr.h>
ssize_t writev(
47238: 588a addql #4,%a2 <== NOT EXECUTED 4723a: 4283 clrl %d3 <== NOT EXECUTED 4723c: 4284 clrl %d4 <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
4723e: 5283 addql #1,%d3 <== NOT EXECUTED
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
47240: 2012 movel %a2@,%d0 <== NOT EXECUTED 47242: 661e bnes 47262 <writev+0xc6> <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
47244: 508a addql #8,%a2 <== NOT EXECUTED 47246: b682 cmpl %d2,%d3 <== NOT EXECUTED 47248: 6cde bges 47228 <writev+0x8c> <== NOT EXECUTED
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
4724a: 2012 movel %a2@,%d0 <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
4724c: 5283 addql #1,%d3 <== NOT EXECUTED
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
4724e: 4a80 tstl %d0 <== NOT EXECUTED 47250: 67f2 beqs 47244 <writev+0xa8> <== NOT EXECUTED 47252: 600e bras 47262 <writev+0xc6> <== NOT EXECUTED
/*
* A writev with all zeros is supposed to have no effect per OpenGroup.
*/
if ( all_zeros == true ) {
return 0;
47254: 4284 clrl %d4 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47256: 2004 movel %d4,%d0 <== NOT EXECUTED 47258: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4725e: 4e5e unlk %fp <== NOT EXECUTED 47260: 4e75 rts <== NOT EXECUTED
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
continue;
bytes = (*iop->pathinfo.handlers->write_h)(
47262: 206b 0020 moveal %a3@(32),%a0 <== NOT EXECUTED 47266: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47268: 2f2a fffc movel %a2@(-4),%sp@- <== NOT EXECUTED 4726c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4726e: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED 47272: 4e90 jsr %a0@ <== NOT EXECUTED
iop,
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
47274: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47278: 4a80 tstl %d0 <== NOT EXECUTED 4727a: 6d3e blts 472ba <writev+0x11e> <== NOT EXECUTED
return -1;
if ( bytes > 0 ) {
4727c: 6716 beqs 47294 <writev+0xf8> <== NOT EXECUTED
iop->offset += bytes;
total += bytes;
4727e: d880 addl %d0,%d4 <== NOT EXECUTED
if ( bytes < 0 )
return -1;
if ( bytes > 0 ) {
iop->offset += bytes;
47280: 2c00 movel %d0,%d6 <== NOT EXECUTED 47282: 5bc5 smi %d5 <== NOT EXECUTED 47284: 49c5 extbl %d5 <== NOT EXECUTED 47286: ddab 0010 addl %d6,%a3@(16) <== NOT EXECUTED 4728a: 222b 000c movel %a3@(12),%d1 <== NOT EXECUTED 4728e: d385 addxl %d5,%d1 <== NOT EXECUTED 47290: 2741 000c movel %d1,%a3@(12) <== NOT EXECUTED
total += bytes;
}
if (bytes != iov[ v ].iov_len)
47294: b092 cmpl %a2@,%d0 <== NOT EXECUTED 47296: 6690 bnes 47228 <writev+0x8c> <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
47298: 508a addql #8,%a2 <== NOT EXECUTED 4729a: b682 cmpl %d2,%d3 <== NOT EXECUTED 4729c: 6dac blts 4724a <writev+0xae> <== NOT EXECUTED 4729e: 6088 bras 47228 <writev+0x8c> <== NOT EXECUTED
ssize_t old;
bool all_zeros;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
472a0: 4eb9 0004 f998 jsr 4f998 <__errno> <== NOT EXECUTED 472a6: 78ff moveq #-1,%d4 <== NOT EXECUTED 472a8: 7209 moveq #9,%d1 <== NOT EXECUTED 472aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
472ac: 2004 movel %d4,%d0 <== NOT EXECUTED 472ae: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
ssize_t old;
bool all_zeros;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
472b4: 2081 movel %d1,%a0@ <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
472b6: 4e5e unlk %fp <== NOT EXECUTED 472b8: 4e75 rts <== NOT EXECUTED
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
return -1;
472ba: 78ff moveq #-1,%d4 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
472bc: 2004 movel %d4,%d0 <== NOT EXECUTED 472be: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 472c4: 4e5e unlk %fp <== NOT EXECUTED