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
}
0004a178 <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 ) {
4a178: 7007 moveq #7,%d0
#define MAXSYMLINK 5
int IMFS_Set_handlers(
rtems_filesystem_location_info_t *loc
)
{
4a17a: 4e56 0000 linkw %fp,#0 4a17e: 206e 0008 moveal %fp@(8),%a0 4a182: 2f0a movel %a2,%sp@-
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
4a184: 2468 0010 moveal %a0@(16),%a2
switch( node->type ) {
4a188: 2250 moveal %a0@,%a1
)
{
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
4a18a: 246a 0034 moveal %a2@(52),%a2
switch( node->type ) {
4a18e: b0a9 0048 cmpl %a1@(72),%d0
4a192: 6526 bcss 4a1ba <IMFS_Set_handlers+0x42> <== NEVER TAKEN
4a194: 2029 0048 movel %a1@(72),%d0 4a198: d080 addl %d0,%d0 4a19a: 303b 0808 movew %pc@(4a1a4 <IMFS_Set_handlers+0x2c>,%d0:l),%d0 4a19e: 48c0 extl %d0 4a1a0: 4efb 0802 jmp %pc@(4a1a4 <IMFS_Set_handlers+0x2c>,%d0:l)
4a1a4: 0016 .short 0x0016 <== NOT EXECUTED 4a1a6: 0010 .short 0x0010 <== NOT EXECUTED 4a1a8: 004c .short 0x004c <== NOT EXECUTED 4a1aa: 002c .short 0x002c <== NOT EXECUTED 4a1ac: 002c .short 0x002c <== NOT EXECUTED 4a1ae: 001e .short 0x001e <== NOT EXECUTED 4a1b0: 001e .short 0x001e <== NOT EXECUTED 4a1b2: 003e .short 0x003e <== NOT EXECUTED
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
4a1b4: 216a 000c 0008 movel %a2@(12),%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1ba: 245f moveal %sp@+,%a2 4a1bc: 4280 clrl %d0 4a1be: 4e5e unlk %fp 4a1c0: 4e75 rts 4a1c2: 4280 clrl %d0
break;
case IMFS_LINEAR_FILE:
loc->handlers = fs_info->memfile_handlers;
break;
case IMFS_MEMORY_FILE:
loc->handlers = fs_info->memfile_handlers;
4a1c4: 216a 0008 0008 movel %a2@(8),%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1ca: 245f moveal %sp@+,%a2 4a1cc: 4e5e unlk %fp 4a1ce: 4e75 rts
4a1d0: 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;
4a1d2: 203c 0005 d752 movel #382802,%d0 <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1d8: 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;
4a1da: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1de: 4280 clrl %d0 <== NOT EXECUTED 4a1e0: 4e75 rts <== NOT EXECUTED 4a1e2: 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;
4a1e4: 216a 0010 0008 movel %a2@(16),%a0@(8) <== NOT EXECUTED
break;
}
return 0;
}
4a1ea: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a1ec: 4e5e unlk %fp <== NOT EXECUTED 4a1ee: 4e75 rts <== NOT EXECUTED
4a1f0: 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;
4a1f2: 203c 0005 d6e2 movel #382690,%d0
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1f8: 4e5e unlk %fp
switch( node->type ) {
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
break;
case IMFS_DEVICE:
loc->handlers = &IMFS_device_handlers;
4a1fa: 2140 0008 movel %d0,%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1fe: 4280 clrl %d0 <== NOT EXECUTED
00049ec8 <IMFS_allocate_node>:
IMFS_jnode_t *IMFS_allocate_node(
IMFS_jnode_types_t type,
const char *name,
mode_t mode
)
{
49ec8: 4e56 fff8 linkw %fp,#-8 49ecc: 2f0a movel %a2,%sp@-
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
49ece: 4878 0060 pea 60 <DBL_MANT_DIG+0x2b> 49ed2: 4878 0001 pea 1 <ADD> 49ed6: 4eb9 0004 28f0 jsr 428f0 <calloc>
if ( !node )
49edc: 508f addql #8,%sp
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
49ede: 2440 moveal %d0,%a2
if ( !node )
49ee0: 4a80 tstl %d0
49ee2: 6758 beqs 49f3c <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 );
49ee4: 4878 0020 pea 20 <OPER2+0xc> 49ee8: 2f2e 000c movel %fp@(12),%sp@-
/*
* Fill in the basic information
*/
node->st_nlink = 1;
node->type = type;
49eec: 256e 0008 0048 movel %fp@(8),%a2@(72)
strncpy( node->name, name, IMFS_NAME_MAX );
49ef2: 486a 000c pea %a2@(12)
return NULL;
/*
* Fill in the basic information
*/
node->st_nlink = 1;
49ef6: 7001 moveq #1,%d0 49ef8: 3540 0032 movew %d0,%a2@(50)
node->type = type; strncpy( node->name, name, IMFS_NAME_MAX );
49efc: 4eb9 0004 fddc jsr 4fddc <strncpy>
/*
* Fill in the mode and permission information for the jnode structure.
*/
node->st_mode = mode;
49f02: 256e 0010 002e movel %fp@(16),%a2@(46)
#if defined(RTEMS_POSIX_API)
node->st_uid = geteuid();
49f08: 4eb9 0004 b054 jsr 4b054 <geteuid> 49f0e: 3540 0038 movew %d0,%a2@(56)
node->st_gid = getegid();
49f12: 4eb9 0004 b040 jsr 4b040 <getegid>
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
49f18: 42a7 clrl %sp@- 49f1a: 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();
49f1e: 3540 003a movew %d0,%a2@(58)
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
49f22: 4eb9 0004 2d8c jsr 42d8c <gettimeofday>
node->stat_atime = (time_t) tv.tv_sec;
49f28: 202e fff8 movel %fp@(-8),%d0
node->stat_mtime = (time_t) tv.tv_sec;
node->stat_ctime = (time_t) tv.tv_sec;
return node;
49f2c: 4fef 0014 lea %sp@(20),%sp
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
node->stat_atime = (time_t) tv.tv_sec;
49f30: 2540 003c movel %d0,%a2@(60)
node->stat_mtime = (time_t) tv.tv_sec;
49f34: 2540 0040 movel %d0,%a2@(64)
node->stat_ctime = (time_t) tv.tv_sec;
49f38: 2540 0044 movel %d0,%a2@(68)
return node;
}
49f3c: 200a movel %a2,%d0 49f3e: 246e fff4 moveal %fp@(-12),%a2
49f42: 4e5e unlk %fp <== NOT EXECUTED
0004aba0 <IMFS_check_node_remove>:
void IMFS_check_node_remove( IMFS_jnode_t *jnode )
{
4aba0: 4e56 0000 linkw %fp,#0 4aba4: 2f0a movel %a2,%sp@- 4aba6: 246e 0008 moveal %fp@(8),%a2
if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) {
4abaa: 2f0a movel %a2,%sp@- 4abac: 4eb9 0004 b2c6 jsr 4b2c6 <rtems_libio_is_file_open> 4abb2: 588f addql #4,%sp 4abb4: 4a80 tstl %d0
4abb6: 6634 bnes 4abec <IMFS_check_node_remove+0x4c> <== ALWAYS TAKEN
4abb8: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED 4abbc: 662e bnes 4abec <IMFS_check_node_remove+0x4c> <== NOT EXECUTED
if ( rtems_filesystem_current.node_access == jnode )
4abbe: 2079 0005 e5b0 moveal 5e5b0 <rtems_current_user_env>,%a0 <== NOT EXECUTED 4abc4: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 4abc8: 6744 beqs 4ac0e <IMFS_check_node_remove+0x6e> <== NOT EXECUTED
rtems_filesystem_current.node_access = NULL;
switch ( jnode->type ) {
4abca: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4abce: 7204 moveq #4,%d1 <== NOT EXECUTED 4abd0: b280 cmpl %d0,%d1 <== NOT EXECUTED 4abd2: 6748 beqs 4ac1c <IMFS_check_node_remove+0x7c> <== NOT EXECUTED 4abd4: 123c 0005 moveb #5,%d1 <== NOT EXECUTED 4abd8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4abda: 6718 beqs 4abf4 <IMFS_check_node_remove+0x54> <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4abdc: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
4abe0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4abe4: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4abe6: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
} }
4abec: 246e fffc moveal %fp@(-4),%a2 4abf0: 4e5e unlk %fp 4abf2: 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 );
4abf4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4abf6: 4eb9 0004 d390 jsr 4d390 <IMFS_memfile_remove> <== NOT EXECUTED
break;
4abfc: 588f addql #4,%sp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4abfe: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
4ac02: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ac06: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4ac08: 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 ) {
4ac0e: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4ac12: 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;
4ac14: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
switch ( jnode->type ) {
4ac18: b280 cmpl %d0,%d1 <== NOT EXECUTED 4ac1a: 66b8 bnes 4abd4 <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 );
4ac1c: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 4ac20: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
break;
4ac26: 588f addql #4,%sp <== NOT EXECUTED
default:
break;
}
free( jnode );
4ac28: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
4ac2c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ac30: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4ac32: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
00049e58 <IMFS_chown>:
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
49e58: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 49e5c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49e60: 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;
49e64: 2450 moveal %a0@,%a2 <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
49e66: 4284 clrl %d4 <== NOT EXECUTED
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
49e68: 362e 000e movew %fp@(14),%d3 <== NOT EXECUTED 49e6c: 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();
49e70: 4eb9 0004 b054 jsr 4b054 <geteuid> <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
49e76: 4281 clrl %d1 <== NOT EXECUTED 49e78: 382a 0038 movew %a2@(56),%d4 <== NOT EXECUTED 49e7c: 3200 movew %d0,%d1 <== NOT EXECUTED 49e7e: b284 cmpl %d4,%d1 <== NOT EXECUTED 49e80: 6704 beqs 49e86 <IMFS_chown+0x2e> <== NOT EXECUTED 49e82: 4a40 tstw %d0 <== NOT EXECUTED 49e84: 6628 bnes 49eae <IMFS_chown+0x56> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
#endif
jnode->st_uid = owner;
49e86: 3543 0038 movew %d3,%a2@(56) <== NOT EXECUTED
jnode->st_gid = group;
49e8a: 3542 003a movew %d2,%a2@(58) <== NOT EXECUTED
IMFS_update_ctime( jnode );
49e8e: 42a7 clrl %sp@- <== NOT EXECUTED 49e90: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49e94: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 49e9a: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
49ea0: 508f addql #8,%sp <== NOT EXECUTED 49ea2: 4280 clrl %d0 <== NOT EXECUTED
}
49ea4: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 49eaa: 4e5e unlk %fp <== NOT EXECUTED 49eac: 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 );
49eae: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 49eb4: 7201 moveq #1,%d1 <== NOT EXECUTED 49eb6: 2040 moveal %d0,%a0 <== NOT EXECUTED 49eb8: 70ff moveq #-1,%d0 <== NOT EXECUTED
jnode->st_gid = group;
IMFS_update_ctime( jnode );
return 0;
}
49eba: 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 );
49ec0: 2081 movel %d1,%a0@ <== NOT EXECUTED
jnode->st_gid = group;
IMFS_update_ctime( jnode );
return 0;
}
49ec2: 4e5e unlk %fp <== NOT EXECUTED
...
00049f46 <IMFS_create_node>:
IMFS_jnode_types_t type,
const char *name,
mode_t mode,
const IMFS_types_union *info
)
{
49f46: 4e56 ffec linkw %fp,#-20 49f4a: 206e 0008 moveal %fp@(8),%a0 49f4e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 49f52: 242e 000c movel %fp@(12),%d2 49f56: 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 )
49f5a: 4a88 tstl %a0 49f5c: 6700 00ac beqw 4a00a <IMFS_create_node+0xc4>
return NULL;
parent = parent_loc->node_access;
fs_info = parent_loc->mt_entry->fs_info;
49f60: 2268 0010 moveal %a0@(16),%a1
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49f64: 7007 moveq #7,%d0
* MUST have a parent node to call this routine.
*/
if ( parent_loc == NULL )
return NULL;
parent = parent_loc->node_access;
49f66: 2650 moveal %a0@,%a3
fs_info = parent_loc->mt_entry->fs_info;
49f68: 2469 0034 moveal %a1@(52),%a2
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49f6c: b082 cmpl %d2,%d0 49f6e: 6700 008c beqw 49ffc <IMFS_create_node+0xb6>
return NULL;
/*
* Allocate filesystem node and fill in basic information
*/
node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask );
49f72: 2079 0005 e5b0 moveal 5e5b0 <rtems_current_user_env>,%a0 49f78: 2028 002c movel %a0@(44),%d0 49f7c: 4680 notl %d0 49f7e: c0ae 0014 andl %fp@(20),%d0 49f82: 2f00 movel %d0,%sp@- 49f84: 2f2e 0010 movel %fp@(16),%sp@- 49f88: 2f02 movel %d2,%sp@- 49f8a: 4eb9 0004 9ec8 jsr 49ec8 <IMFS_allocate_node>
if ( !node )
49f90: 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 );
49f94: 2a40 moveal %d0,%a5
if ( !node )
49f96: 4a80 tstl %d0
49f98: 6756 beqs 49ff0 <IMFS_create_node+0xaa> <== NEVER TAKEN
return NULL;
/*
* Set the type specific information
*/
if ( type == IMFS_DIRECTORY ) {
49f9a: 7001 moveq #1,%d0 49f9c: b082 cmpl %d2,%d0
49f9e: 6778 beqs 4a018 <IMFS_create_node+0xd2>
rtems_chain_initialize_empty(&node->info.directory.Entries);
} else if ( type == IMFS_HARD_LINK ) {
49fa0: 7003 moveq #3,%d0 49fa2: b082 cmpl %d2,%d0 49fa4: 6700 00d6 beqw 4a07c <IMFS_create_node+0x136>
node->info.hard_link.link_node = info->hard_link.link_node;
} else if ( type == IMFS_SYM_LINK ) {
49fa8: 7204 moveq #4,%d1 49faa: b282 cmpl %d2,%d1 49fac: 6700 00ce beqw 4a07c <IMFS_create_node+0x136>
node->info.sym_link.name = info->sym_link.name;
} else if ( type == IMFS_DEVICE ) {
49fb0: 7002 moveq #2,%d0 49fb2: b082 cmpl %d2,%d0 49fb4: 6700 0098 beqw 4a04e <IMFS_create_node+0x108>
node->info.device.major = info->device.major;
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
49fb8: 7206 moveq #6,%d1 49fba: b282 cmpl %d2,%d1 49fbc: 6700 010e beqw 4a0cc <IMFS_create_node+0x186>
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
49fc0: 7205 moveq #5,%d1 49fc2: b282 cmpl %d2,%d1 49fc4: 6700 013a beqw 4a100 <IMFS_create_node+0x1ba>
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 ) {
49fc8: 7207 moveq #7,%d1 <== NOT EXECUTED 49fca: b282 cmpl %d2,%d1 <== NOT EXECUTED 49fcc: 6700 00d6 beqw 4a0a4 <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;
49fd0: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49fd4: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49fd6: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
49fda: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49fde: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49fe2: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49fe4: 486b 004c pea %a3@(76) <== NOT EXECUTED 49fe8: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49fee: 508f addql #8,%sp <== NOT EXECUTED
}
49ff0: 200d movel %a5,%d0 49ff2: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 49ff8: 4e5e unlk %fp 49ffa: 4e75 rts
fs_info = parent_loc->mt_entry->fs_info;
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49ffc: 223c 0005 d672 movel #382578,%d1 <== NOT EXECUTED 4a002: b2aa 0010 cmpl %a2@(16),%d1 <== NOT EXECUTED 4a006: 6600 ff6a bnew 49f72 <IMFS_create_node+0x2c> <== NOT EXECUTED
fs_info->fifo_handlers == &rtems_filesystem_handlers_default )
return NULL;
4a00a: 9bcd subal %a5,%a5 <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
}
4a00c: 200d movel %a5,%d0 <== NOT EXECUTED 4a00e: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a014: 4e5e unlk %fp <== NOT EXECUTED 4a016: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4a018: 41ed 0050 lea %a5@(80),%a0 4a01c: 2b48 004c movel %a0,%a5@(76)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a020: 41ed 004c lea %a5@(76),%a0
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4a024: 42ad 0050 clrl %a5@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a028: 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;
4a02c: 202a 0004 movel %a2@(4),%d0 4a030: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a032: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
4a036: 2540 0004 movel %d0,%a2@(4) 4a03a: 2b40 0034 movel %d0,%a5@(52) 4a03e: 2f0d movel %a5,%sp@- 4a040: 486b 004c pea %a3@(76) 4a044: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a04a: 508f addql #8,%sp 4a04c: 60a2 bras 49ff0 <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;
4a04e: 2b54 004c movel %a4@,%a5@(76)
node->info.device.minor = info->device.minor;
4a052: 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;
4a058: 202a 0004 movel %a2@(4),%d0 4a05c: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a05e: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
4a062: 2540 0004 movel %d0,%a2@(4) 4a066: 2b40 0034 movel %d0,%a5@(52) 4a06a: 2f0d movel %a5,%sp@- 4a06c: 486b 004c pea %a3@(76) 4a070: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a076: 508f addql #8,%sp 4a078: 6000 ff76 braw 49ff0 <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;
4a07c: 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;
4a080: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a084: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a086: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
4a08a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a08e: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a092: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a094: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a098: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a09e: 508f addql #8,%sp <== NOT EXECUTED 4a0a0: 6000 ff4e braw 49ff0 <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;
4a0a4: 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;
4a0a8: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a0ac: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
4a0b0: 5280 addql #1,%d0 <== NOT EXECUTED 4a0b2: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a0b6: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a0ba: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a0bc: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a0c0: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a0c6: 508f addql #8,%sp <== NOT EXECUTED 4a0c8: 6000 ff26 braw 49ff0 <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;
4a0cc: 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;
4a0d0: 4280 clrl %d0 <== NOT EXECUTED 4a0d2: 4281 clrl %d1 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a0d4: 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;
4a0d8: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 4a0dc: 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;
4a0e0: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a0e4: 5280 addql #1,%d0 <== NOT EXECUTED 4a0e6: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a0ea: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a0ee: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a0f0: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a0f4: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a0fa: 508f addql #8,%sp <== NOT EXECUTED 4a0fc: 6000 fef2 braw 49ff0 <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;
4a100: 42ad 0054 clrl %a5@(84)
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;
4a104: 4280 clrl %d0 4a106: 4281 clrl %d1
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
4a108: 42ad 0058 clrl %a5@(88)
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;
4a10c: 2b40 004c movel %d0,%a5@(76) 4a110: 2b41 0050 movel %d1,%a5@(80)
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
node->info.file.triply_indirect = 0;
4a114: 42ad 005c clrl %a5@(92)
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
4a118: 202a 0004 movel %a2@(4),%d0 4a11c: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a11e: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
4a122: 2540 0004 movel %d0,%a2@(4) 4a126: 2b40 0034 movel %d0,%a5@(52) 4a12a: 2f0d movel %a5,%sp@- 4a12c: 486b 004c pea %a3@(76) 4a130: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a136: 508f addql #8,%sp 4a138: 6000 feb6 braw 49ff0 <IMFS_create_node+0xaa>
0004ab5c <IMFS_create_orphan>:
#include <rtems/libio_.h>
#include "imfs.h"
void IMFS_create_orphan( IMFS_jnode_t *jnode )
{
4ab5c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4ab60: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ab62: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
4ab66: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4ab6a: 670e beqs 4ab7a <IMFS_create_orphan+0x1e> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4ab6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ab6e: 4eb9 0004 6f28 jsr 46f28 <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
4ab74: 588f addql #4,%sp <== NOT EXECUTED 4ab76: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
}
--jnode->st_nlink;
IMFS_update_ctime( jnode );
4ab7a: 42a7 clrl %sp@- <== NOT EXECUTED 4ab7c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
}
--jnode->st_nlink;
4ab80: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED 4ab84: 5380 subql #1,%d0 <== NOT EXECUTED 4ab86: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4ab8a: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4ab90: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED 4ab96: 508f addql #8,%sp <== NOT EXECUTED
}
4ab98: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4ab9c: 4e5e unlk %fp <== NOT EXECUTED
0004a13c <IMFS_create_root_node>:
return node;
}
IMFS_jnode_t *IMFS_create_root_node(void)
{
4a13c: 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) );
4a140: 4878 41ed pea 41ed <D_MAX_EXP+0x39ee> 4a144: 4879 0005 d4d0 pea 5d4d0 <rtems_filesystem_default_pathconf+0xb4> 4a14a: 4878 0001 pea 1 <ADD> 4a14e: 4eb9 0004 9ec8 jsr 49ec8 <IMFS_allocate_node>
if ( !node )
4a154: 4fef 000c lea %sp@(12),%sp 4a158: 4a80 tstl %d0
4a15a: 6716 beqs 4a172 <IMFS_create_root_node+0x36> <== NEVER TAKEN
Chain_Node *tail = _Chain_Tail( the_chain );
4a15c: 2240 moveal %d0,%a1
head->next = tail;
head->previous = NULL;
4a15e: 2040 moveal %d0,%a0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4a160: 43e9 0050 lea %a1@(80),%a1 4a164: 2149 004c movel %a1,%a0@(76)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a168: 5989 subql #4,%a1
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4a16a: 42a8 0050 clrl %a0@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a16e: 2149 0054 movel %a1,%a0@(84)
* NOTE: Root node is always a directory.
*/
rtems_chain_initialize_empty(&node->info.directory.Entries);
return node;
}
4a172: 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 4914 moveal 64914 <_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 3fb4 lea 53fb4 <fwrite>,%a2 <== NOT EXECUTED 44fd0: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED 44fd4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 44fd8: 4879 0006 2fe6 pea 62fe6 <IntUartPollCallbacks.6368+0x88> <== NOT EXECUTED 44fde: 4e92 jsr %a2@ <== NOT EXECUTED
fprintf(stdout, "/\n" );
44fe0: 2079 0006 4914 moveal 64914 <_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 301b pea 6301b <IntUartPollCallbacks.6368+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 4850 moveal 64850 <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 4914 moveal 64914 <_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 301e pea 6301e <IntUartPollCallbacks.6368+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 bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
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
*
*/
int IMFS_memfile_maximum_size( void )
{
return IMFS_MEMFILE_MAXIMUM_SIZE;
}
44f44: 2668 004c moveal %a0@(76),%a3 <== NOT EXECUTED
IMFS_assert( level >= 0 );
IMFS_assert( the_directory->type == IMFS_DIRECTORY );
the_chain = &the_directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
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 3fb4 lea 53fb4 <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 4914 moveal 64914 <_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 2fe1 pea 62fe1 <IntUartPollCallbacks.6368+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 = rtems_chain_first( the_chain );
!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 = rtems_chain_first( the_chain );
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 = rtems_chain_first( the_chain );
!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 = rtems_chain_first( the_chain );
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
0004a2e8 <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 ) ) {
4a2e8: 70f8 moveq #-8,%d0
const char *pathname, /* IN */
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
4a2ea: 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 ) ) {
4a2ee: 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 */
)
{
4a2f2: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a2f6: 2a6e 0008 moveal %fp@(8),%a5 4a2fa: 246e 000c moveal %fp@(12),%a2 4a2fe: 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 ) ) {
4a302: 4a80 tstl %d0 4a304: 6600 0238 bnew 4a53e <IMFS_eval_path+0x256> 4a308: 2c0e movel %fp,%d6 4a30a: 280e movel %fp,%d4
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
int i = 0;
4a30c: 4282 clrl %d2 4a30e: 5986 subql #4,%d6 4a310: 0684 ffff ffdb addil #-37,%d4 4a316: 2a3c 0004 aa7c movel #305788,%d5
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a31c: 2e3c 0004 a9f8 movel #305656,%d7
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
4a322: 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 );
4a324: 2f06 movel %d6,%sp@- 4a326: 2045 moveal %d5,%a0 4a328: 2f04 movel %d4,%sp@- 4a32a: 2f0a movel %a2,%sp@- 4a32c: 4875 2800 pea %a5@(00000000,%d2:l) 4a330: 4e90 jsr %a0@
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
4a332: 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 );
4a334: 2600 movel %d0,%d3
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
4a336: 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;
4a33a: 202e fffc movel %fp@(-4),%d0
i += len;
if ( !pathloc->node_access )
4a33e: 4a88 tstl %a0 4a340: 6700 00f8 beqw 4a43a <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;
4a344: 95c0 subal %d0,%a2
i += len;
4a346: 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 )
4a348: 4a83 tstl %d3
4a34a: 6662 bnes 4a3ae <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 ) {
4a34c: 7201 moveq #1,%d1 4a34e: b2a8 0048 cmpl %a0@(72),%d1 4a352: 6600 0132 bnew 4a486 <IMFS_eval_path+0x19e>
if ( node->info.directory.mt_fs != NULL ) {
4a356: 2068 0058 moveal %a0@(88),%a0 4a35a: 4a88 tstl %a0 4a35c: 6700 0128 beqw 4a486 <IMFS_eval_path+0x19e>
4a360: 28a8 001c movel %a0@(28),%a4@ <== NOT EXECUTED 4a364: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a368: 2628 0020 movel %a0@(32),%d3 <== NOT EXECUTED 4a36c: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a370: 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],
4a374: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a376: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a37a: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 4a37e: 4872 8800 pea %a2@(00000000,%a0:l) <== NOT EXECUTED 4a382: 9488 subl %a0,%d2 <== NOT EXECUTED 4a384: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a388: 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 ) {
4a38a: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a38e: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a392: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED 4a396: 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],
4a39a: 4e90 jsr %a0@ <== NOT EXECUTED 4a39c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a3a0: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a3a2: 2003 movel %d3,%d0 4a3a4: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a3aa: 4e5e unlk %fp 4a3ac: 4e75 rts
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
if ( node->type == IMFS_DIRECTORY )
4a3ae: 7001 moveq #1,%d0 4a3b0: b0ab 0048 cmpl %a3@(72),%d0 4a3b4: 6700 00b8 beqw 4a46e <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;
4a3b8: 2648 moveal %a0,%a3
switch( type ) {
4a3ba: 7003 moveq #3,%d0 4a3bc: b083 cmpl %d3,%d0
4a3be: 671c beqs 4a3dc <IMFS_eval_path+0xf4>
4a3c0: 7204 moveq #4,%d1 4a3c2: b283 cmpl %d3,%d1 4a3c4: 6700 008e beqw 4a454 <IMFS_eval_path+0x16c> 4a3c8: 103c 0002 moveb #2,%d0 4a3cc: b083 cmpl %d3,%d0
4a3ce: 6748 beqs 4a418 <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) ) {
4a3d0: 7004 moveq #4,%d0 4a3d2: b083 cmpl %d3,%d0 4a3d4: 6600 ff4e bnew 4a324 <IMFS_eval_path+0x3c>
4a3d8: 6000 ff72 braw 4a34c <IMFS_eval_path+0x64> <== NOT EXECUTED
case IMFS_NAME:
/*
* If we are at a link follow it.
*/
if ( node->type == IMFS_HARD_LINK ) {
4a3dc: 2028 0048 movel %a0@(72),%d0 4a3e0: 7203 moveq #3,%d1 4a3e2: b280 cmpl %d0,%d1 4a3e4: 6700 00d8 beqw 4a4be <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 ) {
4a3e8: 7204 moveq #4,%d1 4a3ea: b280 cmpl %d0,%d1 4a3ec: 6700 0134 beqw 4a522 <IMFS_eval_path+0x23a>
}
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
4a3f0: 7201 moveq #1,%d1 4a3f2: b280 cmpl %d0,%d1 4a3f4: 6600 0162 bnew 4a558 <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 ) {
4a3f8: 206b 0058 moveal %a3@(88),%a0 4a3fc: 4a88 tstl %a0 4a3fe: 6600 ff60 bnew 4a360 <IMFS_eval_path+0x78>
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a402: 2f04 movel %d4,%sp@- 4a404: 2047 moveal %d7,%a0 4a406: 2f0b movel %a3,%sp@- 4a408: 4e90 jsr %a0@
if ( !node )
4a40a: 508f addql #8,%sp
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a40c: 2640 moveal %d0,%a3
if ( !node )
4a40e: 4a80 tstl %d0
4a410: 6728 beqs 4a43a <IMFS_eval_path+0x152>
/*
* Set the node access to the point we have found.
*/
pathloc->node_access = node;
4a412: 288b movel %a3,%a4@ 4a414: 6000 ff0e braw 4a324 <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 )
4a418: 2279 0005 e5b0 moveal 5e5b0 <rtems_current_user_env>,%a1 <== NOT EXECUTED 4a41e: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a422: 6700 ff00 beqw 4a324 <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) {
4a426: 226c 0010 moveal %a4@(16),%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a42a: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a42e: 6700 00a4 beqw 4a4d4 <IMFS_eval_path+0x1ec> <== NOT EXECUTED
pathnamelen+len,
flags,pathloc);
}
} else {
if ( !node->Parent )
4a432: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED 4a436: 4a8b tstl %a3 <== NOT EXECUTED 4a438: 66d8 bnes 4a412 <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 );
4a43a: 4eb9 0004 e96c jsr 4e96c <__errno> 4a440: 76ff moveq #-1,%d3 4a442: 7a02 moveq #2,%d5 4a444: 2040 moveal %d0,%a0
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a446: 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 );
4a448: 2085 movel %d5,%a0@
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a44a: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a450: 4e5e unlk %fp 4a452: 4e75 rts
case IMFS_NO_MORE_PATH:
case IMFS_CURRENT_DIR:
break;
case IMFS_INVALID_TOKEN:
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
4a454: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a45a: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a45c: 785b moveq #91,%d4 <== NOT EXECUTED 4a45e: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a460: 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 );
4a462: 2084 movel %d4,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a464: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a46a: 4e5e unlk %fp <== NOT EXECUTED 4a46c: 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 ) )
4a46e: 4878 0001 pea 1 <ADD> 4a472: 2f0c movel %a4,%sp@- 4a474: 4eb9 0004 a202 jsr 4a202 <IMFS_evaluate_permission> 4a47a: 508f addql #8,%sp 4a47c: 4a80 tstl %d0
4a47e: 6724 beqs 4a4a4 <IMFS_eval_path+0x1bc> <== NEVER TAKEN
4a480: 2054 moveal %a4@,%a0 4a482: 6000 ff34 braw 4a3b8 <IMFS_eval_path+0xd0>
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
4a486: 2f0c movel %a4,%sp@- 4a488: 4eb9 0004 a178 jsr 4a178 <IMFS_Set_handlers>
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
4a48e: 2eae 0010 movel %fp@(16),%sp@
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
4a492: 2600 movel %d0,%d3
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
4a494: 2f0c movel %a4,%sp@- 4a496: 4eb9 0004 a202 jsr 4a202 <IMFS_evaluate_permission> 4a49c: 508f addql #8,%sp 4a49e: 4a80 tstl %d0 4a4a0: 6600 ff00 bnew 4a3a2 <IMFS_eval_path+0xba>
rtems_set_errno_and_return_minus_one( EACCES );
4a4a4: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a4aa: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a4ac: 740d moveq #13,%d2 <== NOT EXECUTED 4a4ae: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
4a4b0: 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 );
4a4b2: 2082 movel %d2,%a0@ <== NOT EXECUTED
return result;
}
4a4b4: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a4ba: 4e5e unlk %fp <== NOT EXECUTED 4a4bc: 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 );
4a4be: 42a7 clrl %sp@- <== NOT EXECUTED 4a4c0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a4c2: 4eb9 0004 a29c jsr 4a29c <IMFS_evaluate_hard_link> <== NOT EXECUTED
node = pathloc->node_access;
4a4c8: 2654 moveal %a4@,%a3 <== NOT EXECUTED 4a4ca: 508f addql #8,%sp <== NOT EXECUTED 4a4cc: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a4d0: 6000 ff1e braw 4a3f0 <IMFS_eval_path+0x108> <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a4d4: 28a9 0008 movel %a1@(8),%a4@ <== NOT EXECUTED 4a4d8: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a4dc: 2629 000c movel %a1@(12),%d3 <== NOT EXECUTED 4a4e0: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a4e4: 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]),
4a4e8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a4ea: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a4ee: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED 4a4f2: 4872 9800 pea %a2@(00000000,%a1:l) <== NOT EXECUTED 4a4f6: 9489 subl %a1,%d2 <== NOT EXECUTED 4a4f8: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a4fc: 2250 moveal %a0@,%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a4fe: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a502: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a506: 2948 000c movel %a0,%a4@(12) <== NOT EXECUTED 4a50a: 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]),
4a50e: 4e91 jsr %a1@ <== NOT EXECUTED 4a510: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a514: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a516: 2003 movel %d3,%d0 <== NOT EXECUTED 4a518: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a51e: 4e5e unlk %fp <== NOT EXECUTED 4a520: 4e75 rts <== NOT EXECUTED
* was broken.
*/
IMFS_assert( node );
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_sym_link( pathloc, 0 );
4a522: 42a7 clrl %sp@- <== NOT EXECUTED 4a524: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a526: 4eb9 0004 a580 jsr 4a580 <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;
4a52c: 2654 moveal %a4@,%a3 <== NOT EXECUTED
if ( result == -1 )
4a52e: 508f addql #8,%sp <== NOT EXECUTED 4a530: 72ff moveq #-1,%d1 <== NOT EXECUTED 4a532: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a534: 673c beqs 4a572 <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;
4a536: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a53a: 6000 feb4 braw 4a3f0 <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 );
4a53e: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a544: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a546: 7e05 moveq #5,%d7 <== NOT EXECUTED 4a548: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a54a: 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 );
4a54c: 2087 movel %d7,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a54e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a554: 4e5e unlk %fp <== NOT EXECUTED 4a556: 4e75 rts <== NOT EXECUTED
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
4a558: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a55e: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a560: 7c14 moveq #20,%d6 <== NOT EXECUTED 4a562: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a564: 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 );
4a566: 2086 movel %d6,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a568: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a56e: 4e5e unlk %fp <== NOT EXECUTED 4a570: 4e75 rts <== NOT EXECUTED 4a572: 2600 movel %d0,%d3 <== NOT EXECUTED 4a574: 2003 movel %d3,%d0 <== NOT EXECUTED 4a576: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a57c: 4e5e unlk %fp <== NOT EXECUTED
0004a6c2 <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 */
)
{
4a6c2: 4e56 ffb0 linkw %fp,#-80 4a6c6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a6ca: 286e 0008 moveal %fp@(8),%a4 4a6ce: 2e0e movel %fp,%d7 4a6d0: 2c0e movel %fp,%d6
int i = 0;
4a6d2: 4284 clrl %d4 4a6d4: 5987 subql #4,%d7 4a6d6: 0686 ffff ffdb addil #-37,%d6 4a6dc: 4bf9 0004 aa7c lea 4aa7c <IMFS_get_token>,%a5
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
4a6e2: 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 */
)
{
4a6e4: 266e 000c moveal %fp@(12),%a3
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
4a6e8: 4eb9 0004 fdc4 jsr 4fdc4 <strlen>
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
4a6ee: 2453 moveal %a3@,%a2
/*
* Get the path length.
*/
pathlen = strlen( path );
4a6f0: 588f addql #4,%sp 4a6f2: 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 );
4a6f4: 2f07 movel %d7,%sp@- 4a6f6: 2f06 movel %d6,%sp@- 4a6f8: 2f02 movel %d2,%sp@- 4a6fa: 4874 4800 pea %a4@(00000000,%d4:l) 4a6fe: 4e95 jsr %a5@
pathlen -= len;
4a700: 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 );
4a704: 2600 movel %d0,%d3
pathlen -= len;
i += len;
if ( !pathloc->node_access )
4a706: 4fef 0010 lea %sp@(16),%sp
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
4a70a: 9485 subl %d5,%d2
i += len;
if ( !pathloc->node_access )
4a70c: 2053 moveal %a3@,%a0 4a70e: 4a88 tstl %a0 4a710: 6700 00ca beqw 4a7dc <IMFS_evaluate_for_make+0x11a>
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
4a714: 4a80 tstl %d0
4a716: 6742 beqs 4a75a <IMFS_evaluate_for_make+0x98>
if ( node->type == IMFS_DIRECTORY )
4a718: 7001 moveq #1,%d0 4a71a: b0aa 0048 cmpl %a2@(72),%d0 4a71e: 6700 00d6 beqw 4a7f6 <IMFS_evaluate_for_make+0x134>
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
i += len;
4a722: 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;
4a724: 2448 moveal %a0,%a2
switch( type ) {
4a726: 7002 moveq #2,%d0 4a728: b083 cmpl %d3,%d0 4a72a: 6700 008e beqw 4a7ba <IMFS_evaluate_for_make+0xf8>
4a72e: 6426 bccs 4a756 <IMFS_evaluate_for_make+0x94>
4a730: 7203 moveq #3,%d1 4a732: b283 cmpl %d3,%d1
4a734: 673e beqs 4a774 <IMFS_evaluate_for_make+0xb2> <== ALWAYS TAKEN
4a736: 7004 moveq #4,%d0 <== NOT EXECUTED 4a738: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a73a: 66b8 bnes 4a6f4 <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 );
4a73c: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a742: 7c5b moveq #91,%d6 <== NOT EXECUTED 4a744: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a746: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a748: 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;
}
4a74a: 2003 movel %d3,%d0 4a74c: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a752: 4e5e unlk %fp 4a754: 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 ) {
4a756: 4a83 tstl %d3
4a758: 669a bnes 4a6f4 <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 );
4a75a: 4eb9 0004 e96c jsr 4e96c <__errno> 4a760: 76ff moveq #-1,%d3 4a762: 7e11 moveq #17,%d7 4a764: 2040 moveal %d0,%a0
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a766: 2003 movel %d3,%d0
pathloc->node_access = node;
break;
case IMFS_NO_MORE_PATH:
rtems_set_errno_and_return_minus_one( EEXIST );
4a768: 2087 movel %d7,%a0@
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a76a: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a770: 4e5e unlk %fp 4a772: 4e75 rts
pathloc->node_access = node;
break;
case IMFS_NAME:
if ( node->type == IMFS_HARD_LINK ) {
4a774: 2028 0048 movel %a0@(72),%d0 4a778: 7203 moveq #3,%d1 4a77a: b280 cmpl %d0,%d1 4a77c: 6700 014e beqw 4a8cc <IMFS_evaluate_for_make+0x20a>
result = IMFS_evaluate_link( pathloc, 0 );
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
4a780: 7204 moveq #4,%d1 4a782: b280 cmpl %d0,%d1 4a784: 6700 0146 beqw 4a8cc <IMFS_evaluate_for_make+0x20a>
if ( result == -1 )
return -1;
}
node = pathloc->node_access;
if ( !node )
4a788: 4a8a tstl %a2 4a78a: 6700 015c beqw 4a8e8 <IMFS_evaluate_for_make+0x226>
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
4a78e: 7001 moveq #1,%d0 4a790: b0aa 0048 cmpl %a2@(72),%d0 4a794: 6600 0152 bnew 4a8e8 <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 ) {
4a798: 206a 0058 moveal %a2@(88),%a0 4a79c: 4a88 tstl %a0 4a79e: 6600 0162 bnew 4a902 <IMFS_evaluate_for_make+0x240>
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a7a2: 2f06 movel %d6,%sp@- 4a7a4: 2f0a movel %a2,%sp@- 4a7a6: 4eb9 0004 a9f8 jsr 4a9f8 <IMFS_find_match_in_dir>
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
4a7ac: 508f addql #8,%sp
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a7ae: 2440 moveal %d0,%a2
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
4a7b0: 4a80 tstl %d0
4a7b2: 675a beqs 4a80e <IMFS_evaluate_for_make+0x14c>
done = true;
else
pathloc->node_access = node;
4a7b4: 268a movel %a2,%a3@ 4a7b6: 6000 ff3c braw 4a6f4 <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 )
4a7ba: 2279 0005 e5b0 moveal 5e5b0 <rtems_current_user_env>,%a1 <== NOT EXECUTED 4a7c0: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a7c4: 6700 ff2e beqw 4a6f4 <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){
4a7c8: 226b 0010 moveal %a3@(16),%a1 <== NOT EXECUTED 4a7cc: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a7d0: 6700 00b0 beqw 4a882 <IMFS_evaluate_for_make+0x1c0> <== NOT EXECUTED
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
}
} else {
if ( !node->Parent )
4a7d4: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED 4a7d8: 4a8a tstl %a2 <== NOT EXECUTED 4a7da: 66d8 bnes 4a7b4 <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 );
4a7dc: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a7e2: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a7e4: 7a02 moveq #2,%d5 <== NOT EXECUTED 4a7e6: 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;
}
4a7e8: 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 );
4a7ea: 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;
}
4a7ec: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a7f2: 4e5e unlk %fp <== NOT EXECUTED 4a7f4: 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 ) )
4a7f6: 4878 0001 pea 1 <ADD> 4a7fa: 2f0b movel %a3,%sp@- 4a7fc: 4eb9 0004 a202 jsr 4a202 <IMFS_evaluate_permission> 4a802: 508f addql #8,%sp 4a804: 4a80 tstl %d0
4a806: 6760 beqs 4a868 <IMFS_evaluate_for_make+0x1a6> <== NEVER TAKEN
4a808: 2053 moveal %a3@,%a0 4a80a: 6000 ff16 braw 4a722 <IMFS_evaluate_for_make+0x60>
case IMFS_CURRENT_DIR:
break;
}
}
*name = &path[ i - len ];
4a80e: 2004 movel %d4,%d0 4a810: 90ae fffc subl %fp@(-4),%d0 4a814: d08c addl %a4,%d0 4a816: 206e 0010 moveal %fp@(16),%a0 4a81a: 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++) {
4a81c: 1034 4800 moveb %a4@(00000000,%d4:l),%d0
4a820: 671a beqs 4a83c <IMFS_evaluate_for_make+0x17a> <== ALWAYS TAKEN
4a822: 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(
4a828: 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 ] ) )
4a82c: 49c0 extbl %d0 <== NOT EXECUTED 4a82e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a830: 4e95 jsr %a5@ <== NOT EXECUTED 4a832: 588f addql #4,%sp <== NOT EXECUTED 4a834: 4a80 tstl %d0 <== NOT EXECUTED 4a836: 67a4 beqs 4a7dc <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++) {
4a838: 101a moveb %a2@+,%d0 <== NOT EXECUTED 4a83a: 66f0 bnes 4a82c <IMFS_evaluate_for_make+0x16a> <== NOT EXECUTED
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4a83c: 2f0b movel %a3,%sp@- 4a83e: 4eb9 0004 a178 jsr 4a178 <IMFS_Set_handlers>
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4a844: 2053 moveal %a3@,%a0
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4a846: 2600 movel %d0,%d3
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4a848: 588f addql #4,%sp 4a84a: 7001 moveq #1,%d0 4a84c: b0a8 0048 cmpl %a0@(72),%d0 4a850: 6600 0096 bnew 4a8e8 <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 ) )
4a854: 4878 0003 pea 3 <DIVIDE> 4a858: 2f0b movel %a3,%sp@- 4a85a: 4eb9 0004 a202 jsr 4a202 <IMFS_evaluate_permission> 4a860: 508f addql #8,%sp 4a862: 4a80 tstl %d0 4a864: 6600 fee4 bnew 4a74a <IMFS_evaluate_for_make+0x88>
rtems_set_errno_and_return_minus_one( EACCES );
4a868: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a86e: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a870: 740d moveq #13,%d2 <== NOT EXECUTED 4a872: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
4a874: 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 );
4a876: 2082 movel %d2,%a0@ <== NOT EXECUTED
return result;
}
4a878: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a87e: 4e5e unlk %fp <== NOT EXECUTED 4a880: 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){
4a882: 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 );
4a886: 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){
4a88a: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED 4a88e: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a892: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a896: 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 );
4a89a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a89e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a8a0: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a8a4: 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){
4a8a8: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a8ac: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a8b0: 2748 000c movel %a0,%a3@(12) <== NOT EXECUTED 4a8b4: 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 );
4a8b8: 4e91 jsr %a1@ <== NOT EXECUTED 4a8ba: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a8be: 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;
}
4a8c0: 2003 movel %d3,%d0 <== NOT EXECUTED 4a8c2: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a8c8: 4e5e unlk %fp <== NOT EXECUTED 4a8ca: 4e75 rts <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
4a8cc: 42a7 clrl %sp@- <== NOT EXECUTED 4a8ce: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a8d0: 4eb9 0004 a608 jsr 4a608 <IMFS_evaluate_link> <== NOT EXECUTED
if ( result == -1 )
4a8d6: 508f addql #8,%sp <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
4a8d8: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( result == -1 )
4a8da: 70ff moveq #-1,%d0 <== NOT EXECUTED 4a8dc: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a8de: 6700 fe6a beqw 4a74a <IMFS_evaluate_for_make+0x88> <== NOT EXECUTED 4a8e2: 2453 moveal %a3@,%a2 <== NOT EXECUTED 4a8e4: 6000 fea2 braw 4a788 <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 );
4a8e8: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a8ee: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a8f0: 7814 moveq #20,%d4 <== NOT EXECUTED 4a8f2: 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;
}
4a8f4: 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 );
4a8f6: 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;
}
4a8f8: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a8fe: 4e5e unlk %fp <== NOT EXECUTED 4a900: 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 ) {
4a902: 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 );
4a906: 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 ) {
4a90a: 26a8 001c movel %a0@(28),%a3@ <== NOT EXECUTED 4a90e: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a912: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a916: 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 );
4a91a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a91e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a920: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a924: 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 ) {
4a928: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a92c: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a930: 2749 000c movel %a1,%a3@(12) <== NOT EXECUTED 4a934: 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 );
4a938: 4e90 jsr %a0@ <== NOT EXECUTED 4a93a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a93e: 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;
}
4a940: 2003 movel %d3,%d0 <== NOT EXECUTED 4a942: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a948: 4e5e unlk %fp <== NOT EXECUTED
0004a29c <IMFS_evaluate_hard_link>:
int IMFS_evaluate_hard_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a29c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a2a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2a2: 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;
4a2a6: 2052 moveal %a2@,%a0 <== NOT EXECUTED 4a2a8: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED
IMFS_Set_handlers( node );
4a2ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2ae: 4eb9 0004 a178 jsr 4a178 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
4a2b4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a2b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2ba: 4eb9 0004 a202 jsr 4a202 <IMFS_evaluate_permission> <== NOT EXECUTED 4a2c0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a2c4: 4a80 tstl %d0 <== NOT EXECUTED 4a2c6: 670a beqs 4a2d2 <IMFS_evaluate_hard_link+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a2c8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
*/
if ( !IMFS_evaluate_permission( node, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
4a2cc: 4280 clrl %d0 <== NOT EXECUTED
}
4a2ce: 4e5e unlk %fp <== NOT EXECUTED 4a2d0: 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 );
4a2d2: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED
return result;
}
4a2d8: 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 );
4a2dc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a2de: 720d moveq #13,%d1 <== NOT EXECUTED 4a2e0: 70ff moveq #-1,%d0 <== NOT EXECUTED
return result;
}
4a2e2: 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 );
4a2e4: 2081 movel %d1,%a0@ <== NOT EXECUTED
return result;
}
0004a608 <IMFS_evaluate_link>:
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a608: 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 );
4a60c: 2079 0005 e5b0 moveal 5e5b0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a612: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4a616: 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 );
4a61a: 4bf9 0004 a580 lea 4a580 <IMFS_evaluate_sym_link>,%a5 <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
4a620: 49f9 0004 a29c lea 4a29c <IMFS_evaluate_hard_link>,%a4 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a626: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
IMFS_jnode_t *jnode;
int result = 0;
do {
jnode = node->node_access;
4a62a: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a62c: 4281 clrl %d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4a62e: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED 4a632: 5280 addql #1,%d0 <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a634: 3200 movew %d0,%d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4a636: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a63a: 7005 moveq #5,%d0 <== NOT EXECUTED 4a63c: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a63e: 6564 bcss 4a6a4 <IMFS_evaluate_link+0x9c> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
4a640: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4a644: 7203 moveq #3,%d1 <== NOT EXECUTED 4a646: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a648: 6740 beqs 4a68a <IMFS_evaluate_link+0x82> <== NOT EXECUTED
result = IMFS_evaluate_hard_link( node, flags );
else if (jnode->type == IMFS_SYM_LINK )
4a64a: 7204 moveq #4,%d1 <== NOT EXECUTED 4a64c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a64e: 671a beqs 4a66a <IMFS_evaluate_link+0x62> <== NOT EXECUTED
result = IMFS_evaluate_sym_link( node, flags );
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
4a650: 5780 subql #3,%d0 <== NOT EXECUTED 4a652: 7201 moveq #1,%d1 <== NOT EXECUTED 4a654: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a656: 64d2 bccs 4a62a <IMFS_evaluate_link+0x22> <== NOT EXECUTED 4a658: 4280 clrl %d0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
4a65a: 4241 clrw %d1 <== NOT EXECUTED 4a65c: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
return result;
}
4a660: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a666: 4e5e unlk %fp <== NOT EXECUTED 4a668: 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 );
4a66a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a66c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a66e: 4e95 jsr %a5@ <== NOT EXECUTED 4a670: 508f addql #8,%sp <== NOT EXECUTED
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
( jnode->type == IMFS_HARD_LINK ) ) );
4a672: 4a80 tstl %d0 <== NOT EXECUTED 4a674: 6620 bnes 4a696 <IMFS_evaluate_link+0x8e> <== NOT EXECUTED 4a676: 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 ) ||
4a67a: 7201 moveq #1,%d1 <== NOT EXECUTED 4a67c: 5780 subql #3,%d0 <== NOT EXECUTED
( jnode->type == IMFS_HARD_LINK ) ) );
4a67e: 2079 0005 e5b0 moveal 5e5b0 <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 ) ||
4a684: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a686: 64a2 bccs 4a62a <IMFS_evaluate_link+0x22> <== NOT EXECUTED 4a688: 60ce bras 4a658 <IMFS_evaluate_link+0x50> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
4a68a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a68c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a68e: 4e94 jsr %a4@ <== NOT EXECUTED 4a690: 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 ) ) );
4a692: 4a80 tstl %d0 <== NOT EXECUTED 4a694: 67e0 beqs 4a676 <IMFS_evaluate_link+0x6e> <== NOT EXECUTED 4a696: 2079 0005 e5b0 moveal 5e5b0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
4a69c: 4241 clrw %d1 <== NOT EXECUTED 4a69e: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED 4a6a2: 60bc bras 4a660 <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;
4a6a4: 4241 clrw %d1 <== NOT EXECUTED 4a6a6: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ELOOP );
4a6aa: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a6b0: 725c moveq #92,%d1 <== NOT EXECUTED 4a6b2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a6b4: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
rtems_filesystem_link_counts = 0;
return result;
}
4a6b6: 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 );
4a6bc: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
rtems_filesystem_link_counts = 0;
return result;
}
4a6be: 4e5e unlk %fp <== NOT EXECUTED
0004a202 <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 ) )
4a202: 70f8 moveq #-8,%d0
*/
int IMFS_evaluate_permission(
rtems_filesystem_location_info_t *node,
int flags
)
{
4a204: 4e56 fff4 linkw %fp,#-12 4a208: 48d7 040c moveml %d2-%d3/%a2,%sp@ 4a20c: 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 ) )
4a210: c082 andl %d2,%d0
4a212: 6670 bnes 4a284 <IMFS_evaluate_permission+0x82> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EPERM );
jnode = node->node_access;
4a214: 206e 0008 moveal %fp@(8),%a0 4a218: 2450 moveal %a0@,%a2
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
4a21a: 4eb9 0004 b054 jsr 4b054 <geteuid> 4a220: 3600 movew %d0,%d3
st_gid = getegid();
4a222: 4eb9 0004 b040 jsr 4b040 <getegid>
* Check if I am owner or a group member or someone else.
*/
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
4a228: 4281 clrl %d1 4a22a: 0283 0000 ffff andil #65535,%d3 4a230: 322a 0038 movew %a2@(56),%d1 4a234: b681 cmpl %d1,%d3
4a236: 6728 beqs 4a260 <IMFS_evaluate_permission+0x5e> <== ALWAYS TAKEN
flags_to_test <<= 6;
else if ( st_gid == jnode->st_gid )
4a238: 4281 clrl %d1 <== NOT EXECUTED 4a23a: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 4a240: 322a 003a movew %a2@(58),%d1 <== NOT EXECUTED 4a244: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a246: 672a beqs 4a272 <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 )
4a248: 2002 movel %d2,%d0 <== NOT EXECUTED 4a24a: 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 );
4a24e: b082 cmpl %d2,%d0 <== NOT EXECUTED 4a250: 57c0 seq %d0 <== NOT EXECUTED 4a252: 49c0 extbl %d0 <== NOT EXECUTED 4a254: 4480 negl %d0 <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a256: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 4a25c: 4e5e unlk %fp 4a25e: 4e75 rts
*/
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
flags_to_test <<= 6;
4a260: 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 )
4a262: 2002 movel %d2,%d0 4a264: 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 );
4a268: b082 cmpl %d2,%d0 4a26a: 57c0 seq %d0 4a26c: 49c0 extbl %d0 4a26e: 4480 negl %d0 4a270: 60e4 bras 4a256 <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;
4a272: 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 )
4a274: 2002 movel %d2,%d0 <== NOT EXECUTED 4a276: 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 );
4a27a: b082 cmpl %d2,%d0 <== NOT EXECUTED 4a27c: 57c0 seq %d0 <== NOT EXECUTED 4a27e: 49c0 extbl %d0 <== NOT EXECUTED 4a280: 4480 negl %d0 <== NOT EXECUTED 4a282: 60d2 bras 4a256 <IMFS_evaluate_permission+0x54> <== NOT EXECUTED 4a284: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a28a: 7201 moveq #1,%d1 <== NOT EXECUTED 4a28c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a28e: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a290: 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 );
4a296: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a298: 4e5e unlk %fp <== NOT EXECUTED
0004a580 <IMFS_evaluate_sym_link>:
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a580: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4a584: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 4a588: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *jnode = node->node_access;
4a58c: 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;
4a58e: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a592: 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(
4a596: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a598: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4a59c: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED 4a5a0: 4eb9 0004 b5f8 jsr 4b5f8 <rtems_filesystem_get_sym_start_loc><== NOT EXECUTED
);
/*
* Use eval path to evaluate the path of the symbolic link.
*/
result = IMFS_eval_path(
4a5a6: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED 4a5aa: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED 4a5ae: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a5b0: 4eb9 0004 fdc4 jsr 4fdc4 <strlen> <== NOT EXECUTED 4a5b6: 2e8a movel %a2,%sp@ <== NOT EXECUTED 4a5b8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a5ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a5bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a5be: 4eb9 0004 a2e8 jsr 4a2e8 <IMFS_eval_path> <== NOT EXECUTED 4a5c4: 2600 movel %d0,%d3 <== NOT EXECUTED
strlen( &jnode->info.sym_link.name[i] ),
flags,
node
);
IMFS_Set_handlers( node );
4a5c6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a5c8: 4eb9 0004 a178 jsr 4a178 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
4a5ce: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4a5d2: 2e82 movel %d2,%sp@ <== NOT EXECUTED 4a5d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a5d6: 4eb9 0004 a202 jsr 4a202 <IMFS_evaluate_permission> <== NOT EXECUTED 4a5dc: 508f addql #8,%sp <== NOT EXECUTED 4a5de: 4a80 tstl %d0 <== NOT EXECUTED 4a5e0: 670c beqs 4a5ee <IMFS_evaluate_sym_link+0x6e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a5e2: 2003 movel %d3,%d0 <== NOT EXECUTED 4a5e4: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a5ea: 4e5e unlk %fp <== NOT EXECUTED 4a5ec: 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 );
4a5ee: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4a5f4: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a5f6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a5f8: 700d moveq #13,%d0 <== NOT EXECUTED 4a5fa: 2080 movel %d0,%a0@ <== NOT EXECUTED
return result;
}
4a5fc: 2003 movel %d3,%d0 <== NOT EXECUTED 4a5fe: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a604: 4e5e unlk %fp <== NOT EXECUTED
0004dee4 <IMFS_fchmod>:
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4dee4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4dee8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4deec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = loc->node_access;
4deee: 2450 moveal %a0@,%a2 <== NOT EXECUTED
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4def0: 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 ) )
4def2: 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();
4def4: 4eb9 0004 b054 jsr 4b054 <geteuid> <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
4defa: 4281 clrl %d1 <== NOT EXECUTED 4defc: 342a 0038 movew %a2@(56),%d2 <== NOT EXECUTED 4df00: 3200 movew %d0,%d1 <== NOT EXECUTED 4df02: b282 cmpl %d2,%d1 <== NOT EXECUTED 4df04: 6704 beqs 4df0a <IMFS_fchmod+0x26> <== NOT EXECUTED 4df06: 4a40 tstw %d0 <== NOT EXECUTED 4df08: 663c bnes 4df46 <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);
4df0a: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4df0e: 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);
4df12: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4df18: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED 4df1e: 8280 orl %d0,%d1 <== NOT EXECUTED 4df20: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4df24: 42a7 clrl %sp@- <== NOT EXECUTED 4df26: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4df2a: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4df30: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
4df36: 508f addql #8,%sp <== NOT EXECUTED 4df38: 4280 clrl %d0 <== NOT EXECUTED
}
4df3a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4df3e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4df42: 4e5e unlk %fp <== NOT EXECUTED 4df44: 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 );
4df46: 4eb9 0004 e96c jsr 4e96c <__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;
}
4df4c: 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 );
4df50: 2040 moveal %d0,%a0 <== NOT EXECUTED 4df52: 7201 moveq #1,%d1 <== NOT EXECUTED 4df54: 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;
}
4df56: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4df5a: 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 );
4df5c: 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;
}
0004df60 <IMFS_fdatasync>:
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
return 0;
}
4df60: 4280 clrl %d0 <== NOT EXECUTED
#include "imfs.h"
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
4df62: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; }
4df66: 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 cee2 jsr 4cee2 <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 d86c jsr 4d86c <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 0f38 jsr 50f38 <__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 0f38 jsr 50f38 <__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 d8cc jsr 4d8cc <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 0f38 jsr 50f38 <__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 cfb0 jsr 4cfb0 <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 0f38 jsr 50f38 <__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 d458 jsr 4d458 <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 0f38 jsr 50f38 <__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 d64e jsr 4d64e <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 0f38 jsr 50f38 <__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
0004a9f8 <IMFS_find_match_in_dir>:
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4a9f8: 4e56 fff0 linkw %fp,#-16 4a9fc: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4aa00: 4879 0005 d6da pea 5d6da <dotname> 4aa06: 47f9 0004 f86c lea 4f86c <strcmp>,%a3
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4aa0c: 242e 000c movel %fp@(12),%d2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4aa10: 2f02 movel %d2,%sp@-
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4aa12: 246e 0008 moveal %fp@(8),%a2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4aa16: 4e93 jsr %a3@ 4aa18: 508f addql #8,%sp 4aa1a: 4a80 tstl %d0
4aa1c: 6714 beqs 4aa32 <IMFS_find_match_in_dir+0x3a> <== NEVER TAKEN
return directory;
if ( !strcmp( name, dotdotname ) )
4aa1e: 4879 0005 d6dc pea 5d6dc <dotdotname> 4aa24: 2f02 movel %d2,%sp@- 4aa26: 4e93 jsr %a3@ 4aa28: 508f addql #8,%sp 4aa2a: 4a80 tstl %d0
4aa2c: 6610 bnes 4aa3e <IMFS_find_match_in_dir+0x46> <== ALWAYS TAKEN
return directory->Parent;
4aa2e: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
}
4aa32: 200a movel %a2,%d0 <== NOT EXECUTED 4aa34: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4aa3a: 4e5e unlk %fp <== NOT EXECUTED 4aa3c: 4e75 rts <== NOT EXECUTED
4aa3e: 286a 004c moveal %a2@(76),%a4
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
4aa42: 45ea 0050 lea %a2@(80),%a2
if ( !strcmp( name, dotdotname ) )
return directory->Parent;
the_chain = &directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
4aa46: b5cc cmpal %a4,%a2
4aa48: 6714 beqs 4aa5e <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 ) )
4aa4a: 486c 000c pea %a4@(12) 4aa4e: 2f02 movel %d2,%sp@- 4aa50: 4e93 jsr %a3@ 4aa52: 508f addql #8,%sp 4aa54: 4a80 tstl %d0
4aa56: 6714 beqs 4aa6c <IMFS_find_match_in_dir+0x74>
the_chain = &directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
4aa58: 2854 moveal %a4@,%a4
if ( !strcmp( name, dotdotname ) )
return directory->Parent;
the_chain = &directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
4aa5a: b5cc cmpal %a4,%a2
4aa5c: 66ec bnes 4aa4a <IMFS_find_match_in_dir+0x52>
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
4aa5e: 95ca subal %a2,%a2
}
4aa60: 200a movel %a2,%d0 4aa62: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4aa68: 4e5e unlk %fp 4aa6a: 4e75 rts
for ( the_node = rtems_chain_first( the_chain );
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
the_jnode = (IMFS_jnode_t *) the_node;
4aa6c: 244c moveal %a4,%a2
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
}
4aa6e: 200a movel %a2,%d0 4aa70: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4aa76: 4e5e unlk %fp
...
0004a94c <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
)
{
4a94c: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 4a950: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a954: 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;
4a958: 47ee ffec lea %fp@(-20),%a3 <== NOT EXECUTED 4a95c: 49f9 0004 a178 lea 4a178 <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 );
4a962: 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;
4a968: 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;
4a96c: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED
loc = temp_mt_entry->mt_fs_root;
4a970: 2d68 0020 fff0 movel %a0@(32),%fp@(-16) <== NOT EXECUTED 4a976: 2d68 0024 fff4 movel %a0@(36),%fp@(-12) <== NOT EXECUTED 4a97c: 2d68 0028 fff8 movel %a0@(40),%fp@(-8) <== NOT EXECUTED 4a982: 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;
4a988: 42a8 001c clrl %a0@(28) <== NOT EXECUTED
do {
next = jnode->Parent;
4a98c: 242a 0008 movel %a2@(8),%d2 <== NOT EXECUTED
loc.node_access = (void *)jnode;
4a990: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED
IMFS_Set_handlers( &loc );
4a994: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a996: 4e94 jsr %a4@ <== NOT EXECUTED
if ( jnode->type != IMFS_DIRECTORY ) {
4a998: 588f addql #4,%sp <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4a99a: 200a movel %a2,%d0 <== NOT EXECUTED 4a99c: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED 4a9a2: 7201 moveq #1,%d1 <== NOT EXECUTED 4a9a4: b2aa 0048 cmpl %a2@(72),%d1 <== NOT EXECUTED 4a9a8: 6634 bnes 4a9de <IMFS_fsunmount+0x92> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
} else if ( jnode_has_no_children( jnode ) ) {
4a9aa: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4a9ae: 672e beqs 4a9de <IMFS_fsunmount+0x92> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
}
if ( jnode != NULL ) {
4a9b0: 4a8a tstl %a2 <== NOT EXECUTED 4a9b2: 671e beqs 4a9d2 <IMFS_fsunmount+0x86> <== NOT EXECUTED
if ( jnode->type == IMFS_DIRECTORY ) {
4a9b4: 7001 moveq #1,%d0 <== NOT EXECUTED 4a9b6: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4a9ba: 66d0 bnes 4a98c <IMFS_fsunmount+0x40> <== NOT EXECUTED 4a9bc: 220a movel %a2,%d1 <== NOT EXECUTED 4a9be: 0681 0000 0050 addil #80,%d1 <== NOT EXECUTED
}
}
} while (jnode != NULL);
return 0;
}
4a9c4: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED
return -1;
jnode = next;
}
if ( jnode != NULL ) {
if ( jnode->type == IMFS_DIRECTORY ) {
if ( jnode_has_children( jnode ) )
4a9c8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a9ca: 67c0 beqs 4a98c <IMFS_fsunmount+0x40> <== NOT EXECUTED
jnode = jnode_get_first_child( jnode );
4a9cc: 2440 moveal %d0,%a2 <== NOT EXECUTED
}
}
} while (jnode != NULL);
4a9ce: 4a80 tstl %d0 <== NOT EXECUTED 4a9d0: 66ba bnes 4a98c <IMFS_fsunmount+0x40> <== NOT EXECUTED
return 0;
4a9d2: 4280 clrl %d0 <== NOT EXECUTED
}
4a9d4: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4a9da: 4e5e unlk %fp <== NOT EXECUTED 4a9dc: 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 );
4a9de: 2f0b movel %a3,%sp@- <== NOT EXECUTED
if (result != 0)
return -1;
jnode = next;
4a9e0: 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 );
4a9e2: 42a7 clrl %sp@- <== NOT EXECUTED 4a9e4: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0)
4a9e6: 508f addql #8,%sp <== NOT EXECUTED 4a9e8: 4a80 tstl %d0 <== NOT EXECUTED 4a9ea: 67c4 beqs 4a9b0 <IMFS_fsunmount+0x64> <== NOT EXECUTED
return -1;
4a9ec: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
}
} while (jnode != NULL);
return 0;
}
4a9ee: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4a9f4: 4e5e unlk %fp <== NOT EXECUTED
0004aa7c <IMFS_get_token>:
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aa7c: 4e56 ffe4 linkw %fp,#-28 4aa80: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aa84: 246e 0008 moveal %fp@(8),%a2 4aa88: 49f9 0004 3c28 lea 43c28 <rtems_filesystem_is_separator>,%a4
int pathlen,
char *token,
int *token_len
)
{
register int i = 0;
4aa8e: 4282 clrl %d2
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aa90: 161a moveb %a2@+,%d3
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aa92: 2a6e 0010 moveal %fp@(16),%a5
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aa96: 264d moveal %a5,%a3
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
4aa98: 1003 moveb %d3,%d0
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aa9a: 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) ) {
4aa9e: 49c0 extbl %d0 4aaa0: 2f00 movel %d0,%sp@- 4aaa2: 4e94 jsr %a4@ 4aaa4: 588f addql #4,%sp 4aaa6: 4a80 tstl %d0
4aaa8: 6620 bnes 4aaca <IMFS_get_token+0x4e>
4aaaa: b882 cmpl %d2,%d4
4aaac: 6f1c bles 4aaca <IMFS_get_token+0x4e> <== NEVER TAKEN
token[i] = c;
if ( i == IMFS_NAME_MAX )
4aaae: 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;
4aab0: 16c3 moveb %d3,%a3@+
if ( i == IMFS_NAME_MAX )
4aab2: b082 cmpl %d2,%d0 4aab4: 6700 0082 beqw 4ab38 <IMFS_get_token+0xbc>
return IMFS_INVALID_TOKEN;
if ( !IMFS_is_valid_name_char(c) )
type = IMFS_INVALID_TOKEN;
c = path [++i];
4aab8: 5282 addql #1,%d2 4aaba: 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) ) {
4aabc: 1003 moveb %d3,%d0 4aabe: 49c0 extbl %d0 4aac0: 2f00 movel %d0,%sp@- 4aac2: 4e94 jsr %a4@ 4aac4: 588f addql #4,%sp 4aac6: 4a80 tstl %d0
4aac8: 67e0 beqs 4aaaa <IMFS_get_token+0x2e>
/*
* Copy a seperator into token.
*/
if ( i == 0 ) {
4aaca: 4a82 tstl %d2
4aacc: 6626 bnes 4aaf4 <IMFS_get_token+0x78>
token[i] = c;
4aace: 1a83 moveb %d3,%a5@
if ( (token[i] != '\0') && pathlen ) {
4aad0: 6718 beqs 4aaea <IMFS_get_token+0x6e>
4aad2: 4a84 tstl %d4
4aad4: 6714 beqs 4aaea <IMFS_get_token+0x6e> <== NEVER TAKEN
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aad6: 206e 0014 moveal %fp@(20),%a0
if ( i == 0 ) {
token[i] = c;
if ( (token[i] != '\0') && pathlen ) {
i++;
4aada: 7401 moveq #1,%d2
type = IMFS_CURRENT_DIR;
4aadc: 7001 moveq #1,%d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aade: 2082 movel %d2,%a0@
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4aae0: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4aae6: 4e5e unlk %fp 4aae8: 4e75 rts
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aaea: 206e 0014 moveal %fp@(20),%a0
if ( (token[i] != '\0') && pathlen ) {
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
4aaee: 4280 clrl %d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aaf0: 2082 movel %d2,%a0@ 4aaf2: 60ec bras 4aae0 <IMFS_get_token+0x64>
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
}
} else if (token[ i-1 ] != '\0') {
4aaf4: 4a35 28ff tstb %a5@(ffffffff,%d2:l)
4aaf8: 6706 beqs 4ab00 <IMFS_get_token+0x84> <== NEVER TAKEN
token[i] = '\0';
4aafa: 4200 clrb %d0 4aafc: 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 )
4ab00: 4879 0005 d6df pea 5d6df <dotdotname+0x3> 4ab06: 45f9 0004 f86c lea 4f86c <strcmp>,%a2
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4ab0c: 206e 0014 moveal %fp@(20),%a0 4ab10: 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 )
4ab12: 2f0d movel %a5,%sp@- 4ab14: 4e92 jsr %a2@ 4ab16: 508f addql #8,%sp 4ab18: 4a80 tstl %d0
4ab1a: 6728 beqs 4ab44 <IMFS_get_token+0xc8> <== NEVER TAKEN
type = IMFS_UP_DIR;
else if ( strcmp( token, "." ) == 0 )
4ab1c: 4879 0005 d6e0 pea 5d6e0 <dotdotname+0x4> 4ab22: 2f0d movel %a5,%sp@- 4ab24: 4e92 jsr %a2@ 4ab26: 508f addql #8,%sp 4ab28: 4a80 tstl %d0
4ab2a: 6724 beqs 4ab50 <IMFS_get_token+0xd4> <== NEVER TAKEN
4ab2c: 7003 moveq #3,%d0
type = IMFS_CURRENT_DIR;
}
return type;
}
4ab2e: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4ab34: 4e5e unlk %fp 4ab36: 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;
4ab38: 7004 moveq #4,%d0 <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4ab3a: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab40: 4e5e unlk %fp <== NOT EXECUTED 4ab42: 4e75 rts <== NOT EXECUTED
* it was a special name.
*/
if ( type == IMFS_NAME ) {
if ( strcmp( token, "..") == 0 )
type = IMFS_UP_DIR;
4ab44: 7002 moveq #2,%d0 <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4ab46: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab4c: 4e5e unlk %fp <== NOT EXECUTED 4ab4e: 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;
4ab50: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return type;
}
4ab52: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab58: 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 e398 movel 5e398 <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 f3a4 movel %d1,5f3a4 <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 a13c jsr 4a13c <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 d6aa lea 5d6aa <IMFS_LIMITS_AND_OPTIONS>,%a0 4218e: 43f9 0005 d6ae lea 5d6ae <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 d6b2 lea 5d6b2 <IMFS_LIMITS_AND_OPTIONS+0x8>,%a0 421a0: 2551 003c movel %a1@,%a2@(60) 421a4: 43f9 0005 d6b6 lea 5d6b6 <IMFS_LIMITS_AND_OPTIONS+0xc>,%a1 421aa: 2550 0040 movel %a0@,%a2@(64) 421ae: 41f9 0005 d6ba lea 5d6ba <IMFS_LIMITS_AND_OPTIONS+0x10>,%a0 421b4: 2551 0044 movel %a1@,%a2@(68) 421b8: 43f9 0005 d6be lea 5d6be <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 d6c2 lea 5d6c2 <IMFS_LIMITS_AND_OPTIONS+0x18>,%a0 421cc: 2551 004c movel %a1@,%a2@(76) 421d0: 43f9 0005 d6c6 lea 5d6c6 <IMFS_LIMITS_AND_OPTIONS+0x1c>,%a1 421d6: 2550 0050 movel %a0@,%a2@(80) 421da: 41f9 0005 d6ca lea 5d6ca <IMFS_LIMITS_AND_OPTIONS+0x20>,%a0 421e0: 2551 0054 movel %a1@,%a2@(84) 421e4: 43f9 0005 d6ce lea 5d6ce <IMFS_LIMITS_AND_OPTIONS+0x24>,%a1 421ea: 2550 0058 movel %a0@,%a2@(88) 421ee: 41f9 0005 d6d2 lea 5d6d2 <IMFS_LIMITS_AND_OPTIONS+0x28>,%a0 421f4: 2551 005c movel %a1@,%a2@(92) 421f8: 43f9 0005 d6d6 lea 5d6d6 <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 f3a8 movel 5f3a8 <imfs_instance.5967>,%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 f3a8 movel %a1,5f3a8 <imfs_instance.5967>
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 e96c jsr 4e96c <__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 fdc4 jsr 4fdc4 <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 aa7c jsr 4aa7c <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 9f46 jsr 49f46 <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 e96c jsr 4e96c <__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 e96c jsr 4e96c <__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;
}
...
0004d2e4 <IMFS_memfile_addblock>:
*/
MEMFILE_STATIC int IMFS_memfile_addblock(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4d2e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4d2e8: 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 );
4d2ea: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4d2ee: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d2f2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d2f6: 4eb9 0004 ceb8 jsr 4ceb8 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( *block_entry_ptr )
4d2fc: 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 );
4d300: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( *block_entry_ptr )
4d302: 4a92 tstl %a2@ <== NOT EXECUTED 4d304: 670a beqs 4d310 <IMFS_memfile_addblock+0x2c> <== NOT EXECUTED
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4d306: 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;
4d30a: 4280 clrl %d0 <== NOT EXECUTED
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4d30c: 4e5e unlk %fp <== NOT EXECUTED 4d30e: 4e75 rts <== NOT EXECUTED
return 0;
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
4d310: 4eb9 0004 ce94 jsr 4ce94 <memfile_alloc_block> <== NOT EXECUTED
if ( !memory )
4d316: 4a80 tstl %d0 <== NOT EXECUTED 4d318: 670c beqs 4d326 <IMFS_memfile_addblock+0x42> <== NOT EXECUTED
return 1;
*block_entry_ptr = memory;
4d31a: 2480 movel %d0,%a2@ <== NOT EXECUTED
return 0; }
4d31c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
memory = memfile_alloc_block();
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
4d320: 4280 clrl %d0 <== NOT EXECUTED
}
4d322: 4e5e unlk %fp <== NOT EXECUTED 4d324: 4e75 rts <== NOT EXECUTED 4d326: 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;
4d32a: 7001 moveq #1,%d0 <== NOT EXECUTED
*block_entry_ptr = memory;
return 0;
}
4d32c: 4e5e unlk %fp <== NOT EXECUTED
0004d4d2 <IMFS_memfile_extend>:
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d4d2: 4280 clrl %d0 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d4d4: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4d4d8: 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 )
4d4dc: 2c39 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d4e2: 2406 movel %d6,%d2 <== NOT EXECUTED 4d4e4: e48a lsrl #2,%d2 <== NOT EXECUTED 4d4e6: 2802 movel %d2,%d4 <== NOT EXECUTED 4d4e8: 5284 addql #1,%d4 <== NOT EXECUTED 4d4ea: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d4ee: 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 )
4d4f2: 5284 addql #1,%d4 <== NOT EXECUTED 4d4f4: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d4f8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d4fc: 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 )
4d500: 5384 subql #1,%d4 <== NOT EXECUTED 4d502: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED 4d506: 2204 movel %d4,%d1 <== NOT EXECUTED 4d508: 2800 movel %d0,%d4 <== NOT EXECUTED 4d50a: 2a01 movel %d1,%d5 <== NOT EXECUTED 4d50c: 9a83 subl %d3,%d5 <== NOT EXECUTED 4d50e: 9982 subxl %d2,%d4 <== NOT EXECUTED 4d510: 6f00 00ae blew 4d5c0 <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 )
4d514: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d518: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d51c: 2002 movel %d2,%d0 <== NOT EXECUTED 4d51e: 2203 movel %d3,%d1 <== NOT EXECUTED 4d520: 9285 subl %d5,%d1 <== NOT EXECUTED 4d522: 9184 subxl %d4,%d0 <== NOT EXECUTED 4d524: 6f5e bles 4d584 <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;
4d526: 49f9 0005 a804 lea 5a804 <__divdi3>,%a4 <== NOT EXECUTED 4d52c: 2e06 movel %d6,%d7 <== NOT EXECUTED 4d52e: 5bc6 smi %d6 <== NOT EXECUTED 4d530: 49c6 extbl %d6 <== NOT EXECUTED 4d532: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d534: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d536: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d538: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d53a: 4e94 jsr %a4@ <== NOT EXECUTED 4d53c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d540: 2641 moveal %d1,%a3 <== NOT EXECUTED
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d542: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d544: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d546: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d548: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d54a: 4e94 jsr %a4@ <== NOT EXECUTED 4d54c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d550: 2c01 movel %d1,%d6 <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4d552: b28b cmpl %a3,%d1 <== NOT EXECUTED 4d554: 621a bhis 4d570 <IMFS_memfile_extend+0x9e> <== NOT EXECUTED 4d556: 2801 movel %d1,%d4 <== NOT EXECUTED 4d558: 49f9 0004 d2e4 lea 4d2e4 <IMFS_memfile_addblock>,%a4 <== NOT EXECUTED
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
4d55e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d560: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d562: 4e94 jsr %a4@ <== NOT EXECUTED 4d564: 508f addql #8,%sp <== NOT EXECUTED 4d566: 4a80 tstl %d0 <== NOT EXECUTED 4d568: 6626 bnes 4d590 <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++ ) {
4d56a: 5284 addql #1,%d4 <== NOT EXECUTED 4d56c: b88b cmpl %a3,%d4 <== NOT EXECUTED 4d56e: 63ee blss 4d55e <IMFS_memfile_extend+0x8c> <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
4d570: 4280 clrl %d0 <== NOT EXECUTED
}
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
4d572: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED 4d576: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED
return 0; }
4d57a: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d580: 4e5e unlk %fp <== NOT EXECUTED 4d582: 4e75 rts <== NOT EXECUTED
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
return 0;
4d584: 4280 clrl %d0 <== NOT EXECUTED
/* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; }
4d586: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d58c: 4e5e unlk %fp <== NOT EXECUTED 4d58e: 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-- ) {
4d590: b886 cmpl %d6,%d4 <== NOT EXECUTED 4d592: 6514 bcss 4d5a8 <IMFS_memfile_extend+0xd6> <== NOT EXECUTED 4d594: 47f9 0004 d4aa lea 4d4aa <IMFS_memfile_remove_block>,%a3 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4d59a: 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-- ) {
4d59c: 5384 subql #1,%d4 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4d59e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d5a0: 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-- ) {
4d5a2: 508f addql #8,%sp <== NOT EXECUTED 4d5a4: b886 cmpl %d6,%d4 <== NOT EXECUTED 4d5a6: 64f2 bccs 4d59a <IMFS_memfile_extend+0xc8> <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
}
rtems_set_errno_and_return_minus_one( ENOSPC );
4d5a8: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4d5ae: 721c moveq #28,%d1 <== NOT EXECUTED 4d5b0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d5b2: 70ff moveq #-1,%d0 <== NOT EXECUTED
/* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; }
4d5b4: 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 );
4d5ba: 2081 movel %d1,%a0@ <== NOT EXECUTED
/* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; }
4d5bc: 4e5e unlk %fp <== NOT EXECUTED 4d5be: 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 );
4d5c0: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4d5c6: 7416 moveq #22,%d2 <== NOT EXECUTED 4d5c8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d5ca: 70ff moveq #-1,%d0 <== NOT EXECUTED 4d5cc: 2082 movel %d2,%a0@ <== NOT EXECUTED
/* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; }
4d5ce: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d5d4: 4e5e unlk %fp <== NOT EXECUTED
0004ceb8 <IMFS_memfile_get_block_pointer>:
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4ceb8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
my_block = block;
/*
* Is the block number in the simple indirect portion?
*/
if ( my_block <= LAST_INDIRECT ) {
4cebc: 2239 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4cec2: e489 lsrl #2,%d1 <== NOT EXECUTED 4cec4: 2001 movel %d1,%d0 <== NOT EXECUTED 4cec6: 5380 subql #1,%d0 <== NOT EXECUTED
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4cec8: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4cecc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4ced0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4ced4: 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 ) {
4ced8: b082 cmpl %d2,%d0 <== NOT EXECUTED 4ceda: 651e bcss 4cefa <IMFS_memfile_get_block_pointer+0x42><== NOT EXECUTED
p = info->indirect;
4cedc: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED
if ( malloc_it ) {
4cee0: 4a88 tstl %a0 <== NOT EXECUTED 4cee2: 675a beqs 4cf3e <IMFS_memfile_get_block_pointer+0x86><== NOT EXECUTED
if ( !p ) {
4cee4: 4a89 tstl %a1 <== NOT EXECUTED 4cee6: 6700 00c0 beqw 4cfa8 <IMFS_memfile_get_block_pointer+0xf0><== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4ceea: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4ceee: 2009 movel %a1,%d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4cef0: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4cef6: 4e5e unlk %fp <== NOT EXECUTED 4cef8: 4e75 rts <== NOT EXECUTED
/*
* Is the block number in the doubly indirect portion?
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
4cefa: 2001 movel %d1,%d0 <== NOT EXECUTED 4cefc: 5280 addql #1,%d0 <== NOT EXECUTED 4cefe: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 4cf02: 2240 moveal %d0,%a1 <== NOT EXECUTED 4cf04: 5389 subql #1,%a1 <== NOT EXECUTED 4cf06: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4cf08: 6544 bcss 4cf4e <IMFS_memfile_get_block_pointer+0x96><== NOT EXECUTED
my_block -= FIRST_DOUBLY_INDIRECT;
4cf0a: 9481 subl %d1,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
4cf0c: 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;
4cf10: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4cf14: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
if ( malloc_it ) {
4cf18: 4a88 tstl %a0 <== NOT EXECUTED 4cf1a: 6700 0104 beqw 4d020 <IMFS_memfile_get_block_pointer+0x168><== NOT EXECUTED
if ( !p ) {
4cf1e: 4a89 tstl %a1 <== NOT EXECUTED 4cf20: 6700 00a0 beqw 4cfc2 <IMFS_memfile_get_block_pointer+0x10a><== NOT EXECUTED
if ( !p )
return 0;
info->doubly_indirect = p;
}
p1 = (block_p *)p[ doubly ];
4cf24: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cf28: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cf2a: 4a88 tstl %a0 <== NOT EXECUTED 4cf2c: 6764 beqs 4cf92 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4cf2e: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4cf32: 2008 movel %a0,%d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4cf34: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4cf3a: 4e5e unlk %fp <== NOT EXECUTED 4cf3c: 4e75 rts <== NOT EXECUTED
info->indirect = p;
}
return &info->indirect[ my_block ];
}
if ( !p )
4cf3e: 4a89 tstl %a1 <== NOT EXECUTED 4cf40: 66a8 bnes 4ceea <IMFS_memfile_get_block_pointer+0x32><== NOT EXECUTED
if ( !p1 )
return 0;
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
4cf42: 4280 clrl %d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4cf44: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4cf4a: 4e5e unlk %fp <== NOT EXECUTED 4cf4c: 4e75 rts <== NOT EXECUTED
}
/*
* Is the block number in the triply indirect portion?
*/
if ( my_block <= LAST_TRIPLY_INDIRECT ) {
4cf4e: 2600 movel %d0,%d3 <== NOT EXECUTED 4cf50: 5283 addql #1,%d3 <== NOT EXECUTED 4cf52: 4c01 3800 mulsl %d1,%d3 <== NOT EXECUTED 4cf56: 5383 subql #1,%d3 <== NOT EXECUTED 4cf58: b682 cmpl %d2,%d3 <== NOT EXECUTED 4cf5a: 65e6 bcss 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
my_block -= FIRST_TRIPLY_INDIRECT;
4cf5c: 9480 subl %d0,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4cf5e: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4cf62: 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;
4cf66: 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;
4cf6a: 4c41 2004 remul %d1,%d4,%d2 <== NOT EXECUTED 4cf6e: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
if ( malloc_it ) {
4cf72: 4a88 tstl %a0 <== NOT EXECUTED 4cf74: 6700 00c4 beqw 4d03a <IMFS_memfile_get_block_pointer+0x182><== NOT EXECUTED
if ( !p ) {
4cf78: 4a89 tstl %a1 <== NOT EXECUTED 4cf7a: 6700 0084 beqw 4d000 <IMFS_memfile_get_block_pointer+0x148><== NOT EXECUTED
if ( !p )
return 0;
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
4cf7e: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cf82: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cf84: 4a88 tstl %a0 <== NOT EXECUTED 4cf86: 675a beqs 4cfe2 <IMFS_memfile_get_block_pointer+0x12a><== NOT EXECUTED
if ( !p1 )
return 0;
p[ triply ] = (block_p) p1;
}
p2 = (block_p *)p1[ doubly ];
4cf88: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4cf8c: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p2 ) {
4cf8e: 4a88 tstl %a0 <== NOT EXECUTED 4cf90: 669c bnes 4cf2e <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED
p2 = memfile_alloc_block();
4cf92: 4eb9 0004 ce94 jsr 4ce94 <memfile_alloc_block> <== NOT EXECUTED 4cf98: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !p2 )
4cf9a: 4a80 tstl %d0 <== NOT EXECUTED 4cf9c: 67a4 beqs 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p1[ doubly ] = (block_p) p2;
4cf9e: 2480 movel %d0,%a2@ <== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4cfa0: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4cfa4: 2008 movel %a0,%d0 <== NOT EXECUTED 4cfa6: 608c bras 4cf34 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
p = info->indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cfa8: 4eb9 0004 ce94 jsr 4ce94 <memfile_alloc_block> <== NOT EXECUTED 4cfae: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4cfb0: 4a80 tstl %d0 <== NOT EXECUTED 4cfb2: 678e beqs 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->indirect = p;
4cfb4: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4cfb8: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4cfbc: 2009 movel %a1,%d0 <== NOT EXECUTED 4cfbe: 6000 ff30 braw 4cef0 <IMFS_memfile_get_block_pointer+0x38><== NOT EXECUTED
p = info->doubly_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cfc2: 4eb9 0004 ce94 jsr 4ce94 <memfile_alloc_block> <== NOT EXECUTED 4cfc8: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4cfca: 4a80 tstl %d0 <== NOT EXECUTED 4cfcc: 6700 ff74 beqw 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->doubly_indirect = p;
4cfd0: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED
}
p1 = (block_p *)p[ doubly ];
4cfd4: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cfd8: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cfda: 4a88 tstl %a0 <== NOT EXECUTED 4cfdc: 6600 ff50 bnew 4cf2e <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED 4cfe0: 60b0 bras 4cf92 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
if ( !p1 ) {
p1 = memfile_alloc_block();
4cfe2: 4eb9 0004 ce94 jsr 4ce94 <memfile_alloc_block> <== NOT EXECUTED 4cfe8: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !p1 )
4cfea: 4a80 tstl %d0 <== NOT EXECUTED 4cfec: 6700 ff54 beqw 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p[ triply ] = (block_p) p1;
4cff0: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
p2 = (block_p *)p1[ doubly ];
4cff2: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4cff6: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p2 ) {
4cff8: 4a88 tstl %a0 <== NOT EXECUTED 4cffa: 6600 ff32 bnew 4cf2e <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED 4cffe: 6092 bras 4cf92 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
p = info->triply_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4d000: 4eb9 0004 ce94 jsr 4ce94 <memfile_alloc_block> <== NOT EXECUTED 4d006: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4d008: 4a80 tstl %d0 <== NOT EXECUTED 4d00a: 6700 ff36 beqw 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->triply_indirect = p;
4d00e: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
}
p1 = (block_p *) p[ triply ];
4d012: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4d016: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4d018: 4a88 tstl %a0 <== NOT EXECUTED 4d01a: 6600 ff6c bnew 4cf88 <IMFS_memfile_get_block_pointer+0xd0><== NOT EXECUTED 4d01e: 60c2 bras 4cfe2 <IMFS_memfile_get_block_pointer+0x12a><== NOT EXECUTED
}
return (block_p *)&p1[ singly ];
}
if ( !p )
4d020: 4a89 tstl %a1 <== NOT EXECUTED 4d022: 6700 ff1e beqw 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p = (block_p *)p[ doubly ];
4d026: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p )
4d02a: 4a88 tstl %a0 <== NOT EXECUTED 4d02c: 6700 ff14 beqw 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4d030: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4d034: 2008 movel %a0,%d0 <== NOT EXECUTED 4d036: 6000 fefc braw 4cf34 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
p1[ doubly ] = (block_p) p2;
}
return (block_p *)&p2[ singly ];
}
if ( !p )
4d03a: 4a89 tstl %a1 <== NOT EXECUTED 4d03c: 6700 ff04 beqw 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p1 = (block_p *) p[ triply ];
4d040: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p1 )
4d044: 4a88 tstl %a0 <== NOT EXECUTED 4d046: 6700 fefa beqw 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p2 = (block_p *)p1[ doubly ];
4d04a: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED
if ( !p2 )
4d04e: 4a88 tstl %a0 <== NOT EXECUTED 4d050: 6700 fef0 beqw 4cf42 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
return (block_p *)&p2[ singly ];
4d054: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4d058: 2008 movel %a0,%d0 <== NOT EXECUTED 4d05a: 6000 fed8 braw 4cf34 <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 5684 movel 65684 <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
0004d05e <IMFS_memfile_read>:
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4d05e: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4d062: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4d066: 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) {
4d06a: 7806 moveq #6,%d4 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4d06c: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED 4d070: 2a6e 0018 moveal %fp@(24),%a5 <== NOT EXECUTED 4d074: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d078: 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) {
4d07c: b8aa 0048 cmpl %a2@(72),%d4 <== NOT EXECUTED 4d080: 6700 017c beqw 4d1fe <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;
4d084: 43f5 3800 lea %a5@(00000000,%d3:l),%a1 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size )
4d088: 4280 clrl %d0 <== NOT EXECUTED 4d08a: 2209 movel %a1,%d1 <== NOT EXECUTED 4d08c: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d090: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d094: 2c00 movel %d0,%d6 <== NOT EXECUTED 4d096: 2e01 movel %d1,%d7 <== NOT EXECUTED 4d098: 9e85 subl %d5,%d7 <== NOT EXECUTED 4d09a: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4d09c: 6f00 0110 blew 4d1ae <IMFS_memfile_read+0x150> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d0a0: 2c39 0005 f3a4 movel 5f3a4 <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;
4d0a6: 2e05 movel %d5,%d7 <== NOT EXECUTED 4d0a8: 9e83 subl %d3,%d7 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d0aa: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d0ac: 5bc4 smi %d4 <== NOT EXECUTED 4d0ae: 49c4 extbl %d4 <== NOT EXECUTED 4d0b0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d0b2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d0b4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d0b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d0b8: 4eb9 0005 abb8 jsr 5abb8 <__moddi3> <== NOT EXECUTED 4d0be: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d0c2: 2841 moveal %d1,%a4 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d0c4: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d0c6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d0c8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d0ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d0cc: 4eb9 0005 a804 jsr 5a804 <__divdi3> <== NOT EXECUTED 4d0d2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d0d6: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d0d8: 4a8c tstl %a4 <== NOT EXECUTED 4d0da: 6700 010e beqw 4d1ea <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 );
4d0de: 42a7 clrl %sp@- <== NOT EXECUTED 4d0e0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d0e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d0e4: 4eb9 0004 ceb8 jsr 4ceb8 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d0ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0ee: 4a80 tstl %d0 <== NOT EXECUTED 4d0f0: 6700 01c0 beqw 4d2b2 <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;
4d0f4: 9c8c subl %a4,%d6 <== NOT EXECUTED 4d0f6: 2207 movel %d7,%d1 <== NOT EXECUTED 4d0f8: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d0fa: 6500 0162 bcsw 4d25e <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 );
4d0fe: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d100: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d102: d9d0 addal %a0@,%a4 <== NOT EXECUTED
dest += to_copy;
4d104: 280b movel %a3,%d4 <== NOT EXECUTED 4d106: d881 addl %d1,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d108: 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++;
4d10a: 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 );
4d10c: 2f0c movel %a4,%sp@- <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d10e: 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 );
4d110: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d112: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4d118: 2c39 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d11e: 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 ) {
4d122: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d124: 623c bhis 4d162 <IMFS_memfile_read+0x104> <== NOT EXECUTED 4d126: 47f9 0004 ceb8 lea 4ceb8 <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 );
4d12c: 4bf9 0004 f218 lea 4f218 <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 );
4d132: 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;
4d134: 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 );
4d136: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
dest += to_copy;
block++;
4d138: 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 );
4d13a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d13c: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !block_ptr )
4d13e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d142: 4a80 tstl %d0 <== NOT EXECUTED 4d144: 6700 00ac beqw 4d1f2 <IMFS_memfile_read+0x194> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4d148: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d14a: 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 );
4d14c: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d14e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d150: 2f04 movel %d4,%sp@- <== NOT EXECUTED
dest += to_copy;
4d152: 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 );
4d154: 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 ) {
4d156: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d15a: beb9 0005 f3a4 cmpl 5f3a4 <imfs_memfile_bytes_per_block>,%d7<== NOT EXECUTED 4d160: 64d0 bccs 4d132 <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 ) {
4d162: 4a87 tstl %d7 <== NOT EXECUTED 4d164: 6728 beqs 4d18e <IMFS_memfile_read+0x130> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d166: 42a7 clrl %sp@- <== NOT EXECUTED 4d168: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d16a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d16c: 4eb9 0004 ceb8 jsr 4ceb8 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d172: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d176: 4a80 tstl %d0 <== NOT EXECUTED 4d178: 6778 beqs 4d1f2 <IMFS_memfile_read+0x194> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], my_length );
4d17a: 2040 moveal %d0,%a0 <== NOT EXECUTED
copied += my_length;
4d17c: 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 );
4d17e: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d180: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d182: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d184: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
copied += my_length;
4d18a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
4d18e: 42a7 clrl %sp@- <== NOT EXECUTED 4d190: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d194: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d19a: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return copied;
4d1a0: 200c movel %a4,%d0 <== NOT EXECUTED 4d1a2: 508f addql #8,%sp <== NOT EXECUTED
}
4d1a4: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d1aa: 4e5e unlk %fp <== NOT EXECUTED 4d1ac: 4e75 rts <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d1ae: 2c39 0005 f3a4 movel 5f3a4 <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;
4d1b4: 2e0d movel %a5,%d7 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d1b6: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d1b8: 5bc4 smi %d4 <== NOT EXECUTED 4d1ba: 49c4 extbl %d4 <== NOT EXECUTED 4d1bc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d1be: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d1c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d1c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d1c4: 4eb9 0005 abb8 jsr 5abb8 <__moddi3> <== NOT EXECUTED 4d1ca: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d1ce: 2841 moveal %d1,%a4 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d1d0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d1d2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d1d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d1d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d1d8: 4eb9 0005 a804 jsr 5a804 <__divdi3> <== NOT EXECUTED 4d1de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d1e2: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d1e4: 4a8c tstl %a4 <== NOT EXECUTED 4d1e6: 6600 fef6 bnew 4d0de <IMFS_memfile_read+0x80> <== NOT EXECUTED
unsigned int last_byte;
unsigned int copied;
unsigned int start_offset;
unsigned char *dest;
dest = destination;
4d1ea: 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;
4d1ec: 99cc subal %a4,%a4 <== NOT EXECUTED 4d1ee: 6000 ff32 braw 4d122 <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;
4d1f2: 200c movel %a4,%d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d1f4: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d1fa: 4e5e unlk %fp <== NOT EXECUTED 4d1fc: 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))
4d1fe: 91c8 subal %a0,%a0 <== NOT EXECUTED 4d200: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED 4d204: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED 4d208: 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;
4d20c: 286a 0054 moveal %a2@(84),%a4 <== NOT EXECUTED
if (my_length > (the_jnode->info.linearfile.size - start))
4d210: 2800 movel %d0,%d4 <== NOT EXECUTED 4d212: 2a01 movel %d1,%d5 <== NOT EXECUTED 4d214: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED 4d218: 9a83 subl %d3,%d5 <== NOT EXECUTED 4d21a: 9982 subxl %d2,%d4 <== NOT EXECUTED 4d21c: 2c2e fff0 movel %fp@(-16),%d6 <== NOT EXECUTED 4d220: 2e2e fff4 movel %fp@(-12),%d7 <== NOT EXECUTED 4d224: 9e85 subl %d5,%d7 <== NOT EXECUTED 4d226: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4d228: 6f5e bles 4d288 <IMFS_memfile_read+0x22a> <== NOT EXECUTED
my_length = the_jnode->info.linearfile.size - start;
4d22a: 2e01 movel %d1,%d7 <== NOT EXECUTED 4d22c: 9e83 subl %d3,%d7 <== NOT EXECUTED
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 f218 jsr 4f218 <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
}
IMFS_update_atime( the_jnode );
return copied;
}
4d254: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d25a: 4e5e unlk %fp <== NOT EXECUTED 4d25c: 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;
4d25e: 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 );
4d260: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
4d262: 280b movel %a3,%d4 <== NOT EXECUTED 4d264: d881 addl %d1,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d266: 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++;
4d268: 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 );
4d26a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d26c: d9d0 addal %a0@,%a4 <== NOT EXECUTED 4d26e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d270: 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 );
4d272: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d274: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4d27a: 2c39 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d280: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d284: 6000 fe9c braw 4d122 <IMFS_memfile_read+0xc4> <== NOT EXECUTED
/*
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
4d288: 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);
4d28a: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d28c: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4d290: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d292: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d298: 42a7 clrl %sp@- <== NOT EXECUTED 4d29a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d29e: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d2a4: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return my_length;
4d2aa: 2007 movel %d7,%d0 <== NOT EXECUTED 4d2ac: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4d2b0: 60a2 bras 4d254 <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;
4d2b2: 4280 clrl %d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d2b4: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d2ba: 4e5e unlk %fp <== NOT EXECUTED
0004d390 <IMFS_memfile_remove>:
* is better to stick to simple, easy to understand algorithms.
*/
int IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4d390: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4d394: 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;
4d398: 2839 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d4<== NOT EXECUTED 4d39e: 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
)
{
4d3a0: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
* + doubly indirect
* + triply indirect
*/
info = &the_jnode->info.file;
if ( info->indirect ) {
4d3a4: 4aac 0054 tstl %a4@(84) <== NOT EXECUTED 4d3a8: 670e beqs 4d3b8 <IMFS_memfile_remove+0x28> <== NOT EXECUTED
memfile_free_blocks_in_table( &info->indirect, to_free );
4d3aa: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d3ac: 486c 0054 pea %a4@(84) <== NOT EXECUTED 4d3b0: 4eb9 0004 d34a jsr 4d34a <memfile_free_blocks_in_table> <== NOT EXECUTED 4d3b6: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->doubly_indirect ) {
4d3b8: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4d3bc: 4a88 tstl %a0 <== NOT EXECUTED 4d3be: 6750 beqs 4d410 <IMFS_memfile_remove+0x80> <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d3c0: 2239 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d3c6: 2001 movel %d1,%d0 <== NOT EXECUTED 4d3c8: e488 lsrl #2,%d0 <== NOT EXECUTED 4d3ca: 47f9 0004 d34a lea 4d34a <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED 4d3d0: 6734 beqs 4d406 <IMFS_memfile_remove+0x76> <== NOT EXECUTED 4d3d2: 4280 clrl %d0 <== NOT EXECUTED 4d3d4: 4282 clrl %d2 <== NOT EXECUTED 4d3d6: 47f9 0004 d34a lea 4d34a <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED 4d3dc: 5282 addql #1,%d2 <== NOT EXECUTED
if ( info->doubly_indirect[i] ) {
4d3de: e588 lsll #2,%d0 <== NOT EXECUTED 4d3e0: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED 4d3e4: 6710 beqs 4d3f6 <IMFS_memfile_remove+0x66> <== NOT EXECUTED
memfile_free_blocks_in_table(
4d3e6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d3e8: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 4d3ec: 4e93 jsr %a3@ <== NOT EXECUTED 4d3ee: 2239 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d3f4: 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++ ) {
4d3f6: 2601 movel %d1,%d3 <== NOT EXECUTED 4d3f8: 2002 movel %d2,%d0 <== NOT EXECUTED 4d3fa: e48b lsrl #2,%d3 <== NOT EXECUTED 4d3fc: b483 cmpl %d3,%d2 <== NOT EXECUTED 4d3fe: 6406 bccs 4d406 <IMFS_memfile_remove+0x76> <== NOT EXECUTED 4d400: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4d404: 60d6 bras 4d3dc <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 );
4d406: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d408: 486c 0058 pea %a4@(88) <== NOT EXECUTED 4d40c: 4e93 jsr %a3@ <== NOT EXECUTED 4d40e: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->triply_indirect ) {
4d410: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED 4d414: 4a88 tstl %a0 <== NOT EXECUTED 4d416: 6700 0086 beqw 4d49e <IMFS_memfile_remove+0x10e> <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d41a: 2239 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d420: 2001 movel %d1,%d0 <== NOT EXECUTED 4d422: e488 lsrl #2,%d0 <== NOT EXECUTED 4d424: 47f9 0004 d34a lea 4d34a <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED 4d42a: 6768 beqs 4d494 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
p = (block_p *) info->triply_indirect[i];
4d42c: 2450 moveal %a0@,%a2 <== NOT EXECUTED 4d42e: 47f9 0004 d34a lea 4d34a <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d434: 4a8a tstl %a2 <== NOT EXECUTED 4d436: 675c beqs 4d494 <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];
4d438: 4286 clrl %d6 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d43a: 4285 clrl %d5 <== NOT EXECUTED
break;
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
4d43c: 4a80 tstl %d0 <== NOT EXECUTED 4d43e: 6728 beqs 4d468 <IMFS_memfile_remove+0xd8> <== NOT EXECUTED 4d440: 4280 clrl %d0 <== NOT EXECUTED 4d442: 4282 clrl %d2 <== NOT EXECUTED 4d444: 5282 addql #1,%d2 <== NOT EXECUTED
if ( p[j] ) {
4d446: e588 lsll #2,%d0 <== NOT EXECUTED 4d448: 4ab2 0800 tstl %a2@(00000000,%d0:l) <== NOT EXECUTED 4d44c: 6710 beqs 4d45e <IMFS_memfile_remove+0xce> <== NOT EXECUTED
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
4d44e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d450: 4872 0800 pea %a2@(00000000,%d0:l) <== NOT EXECUTED 4d454: 4e93 jsr %a3@ <== NOT EXECUTED 4d456: 2239 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d45c: 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++ ) {
4d45e: 2601 movel %d1,%d3 <== NOT EXECUTED 4d460: 2002 movel %d2,%d0 <== NOT EXECUTED 4d462: e48b lsrl #2,%d3 <== NOT EXECUTED 4d464: b682 cmpl %d2,%d3 <== NOT EXECUTED 4d466: 62dc bhis 4d444 <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(
4d468: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d46a: 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++ ) {
4d46e: 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(
4d470: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d472: 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++ ) {
4d474: 2239 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED 4d47a: 2001 movel %d1,%d0 <== NOT EXECUTED 4d47c: 508f addql #8,%sp <== NOT EXECUTED 4d47e: e488 lsrl #2,%d0 <== NOT EXECUTED 4d480: ba80 cmpl %d0,%d5 <== NOT EXECUTED 4d482: 6410 bccs 4d494 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
p = (block_p *) info->triply_indirect[i];
if ( !p ) /* ensure we have a valid pointer */
4d484: 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];
4d486: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d48a: 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];
4d48c: 2470 6800 moveal %a0@(00000000,%d6:l),%a2 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d490: 4a8a tstl %a2 <== NOT EXECUTED 4d492: 66a8 bnes 4d43c <IMFS_memfile_remove+0xac> <== NOT EXECUTED
}
}
memfile_free_blocks_in_table(
(block_p **)&info->triply_indirect[i], to_free );
}
memfile_free_blocks_in_table(
4d494: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d496: 486c 005c pea %a4@(92) <== NOT EXECUTED 4d49a: 4e93 jsr %a3@ <== NOT EXECUTED 4d49c: 508f addql #8,%sp <== NOT EXECUTED
(block_p **)&info->triply_indirect, to_free );
}
return 0;
}
4d49e: 4280 clrl %d0 <== NOT EXECUTED 4d4a0: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 4d4a6: 4e5e unlk %fp <== NOT EXECUTED
0004d4aa <IMFS_memfile_remove_block>:
*/
MEMFILE_STATIC int IMFS_memfile_remove_block(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4d4aa: 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 );
4d4ae: 42a7 clrl %sp@- <== NOT EXECUTED 4d4b0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d4b4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d4b8: 4eb9 0004 ceb8 jsr 4ceb8 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
IMFS_assert( block_ptr );
ptr = *block_ptr;
4d4be: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d4c0: 2210 movel %a0@,%d1 <== NOT EXECUTED
*block_ptr = 0;
4d4c2: 4290 clrl %a0@ <== NOT EXECUTED
memfile_free_block( ptr );
4d4c4: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d4c6: 4eb9 0004 d330 jsr 4d330 <memfile_free_block> <== NOT EXECUTED
return 1;
}
4d4cc: 7001 moveq #1,%d0 <== NOT EXECUTED 4d4ce: 4e5e unlk %fp <== NOT EXECUTED
0004d5d8 <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 ) {
4d5d8: 4280 clrl %d0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d5da: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 4d5de: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED 4d5e2: 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;
4d5e6: 2047 moveal %d7,%a0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d5e8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d5ec: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4d5f0: 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;
4d5f4: d1c3 addal %d3,%a0 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size ) {
4d5f6: 2208 movel %a0,%d1 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d5f8: 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 ) {
4d5fc: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d600: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d604: 9a81 subl %d1,%d5 <== NOT EXECUTED 4d606: 9980 subxl %d0,%d4 <== NOT EXECUTED 4d608: 6d00 0116 bltw 4d720 <IMFS_memfile_write+0x148> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d60c: 2c39 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d612: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d614: 5bc4 smi %d4 <== NOT EXECUTED 4d616: 49c4 extbl %d4 <== NOT EXECUTED 4d618: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d61a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d61c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d61e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d620: 4eb9 0005 abb8 jsr 5abb8 <__moddi3> <== NOT EXECUTED 4d626: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d62a: 2641 moveal %d1,%a3 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d62c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d62e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d630: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d632: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d634: 4eb9 0005 a804 jsr 5a804 <__divdi3> <== NOT EXECUTED 4d63a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d63e: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d640: 4a8b tstl %a3 <== NOT EXECUTED 4d642: 6700 00d4 beqw 4d718 <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 );
4d646: 42a7 clrl %sp@- <== NOT EXECUTED 4d648: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d64a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d64c: 4eb9 0004 ceb8 jsr 4ceb8 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d652: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d656: 4a80 tstl %d0 <== NOT EXECUTED 4d658: 6700 0120 beqw 4d77a <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;
4d65c: 9c8b subl %a3,%d6 <== NOT EXECUTED 4d65e: be86 cmpl %d6,%d7 <== NOT EXECUTED 4d660: 6500 00ee bcsw 4d750 <IMFS_memfile_write+0x178> <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d664: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d666: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
4d668: 280c movel %a4,%d4 <== NOT EXECUTED 4d66a: d886 addl %d6,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d66c: 9e86 subl %d6,%d7 <== NOT EXECUTED
copied += to_copy;
4d66e: 2606 movel %d6,%d3 <== NOT EXECUTED
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4d670: 5282 addql #1,%d2 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d672: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d674: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4d676: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d678: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d67e: 2c39 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d684: 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 ) {
4d688: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d68a: 623a bhis 4d6c6 <IMFS_memfile_write+0xee> <== NOT EXECUTED 4d68c: 47f9 0004 ceb8 lea 4ceb8 <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 );
4d692: 49f9 0004 f218 lea 4f218 <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 );
4d698: 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;
4d69a: 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 );
4d69c: 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++;
4d69e: 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 );
4d6a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d6a2: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !block_ptr )
4d6a4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d6a8: 4a80 tstl %d0 <== NOT EXECUTED 4d6aa: 6760 beqs 4d70c <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 );
4d6ac: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d6ae: 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(
4d6b0: 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 );
4d6b2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d6b4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
src += to_copy;
4d6b6: 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 );
4d6b8: 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 ) {
4d6ba: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d6be: beb9 0005 f3a4 cmpl 5f3a4 <imfs_memfile_bytes_per_block>,%d7<== NOT EXECUTED 4d6c4: 64d2 bccs 4d698 <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 ) {
4d6c6: 4a87 tstl %d7 <== NOT EXECUTED 4d6c8: 6728 beqs 4d6f2 <IMFS_memfile_write+0x11a> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d6ca: 42a7 clrl %sp@- <== NOT EXECUTED 4d6cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d6ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d6d0: 4eb9 0004 ceb8 jsr 4ceb8 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d6d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d6da: 4a80 tstl %d0 <== NOT EXECUTED 4d6dc: 672e beqs 4d70c <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 );
4d6de: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d6e0: 2040 moveal %d0,%a0 <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4d6e2: 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 );
4d6e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d6e6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d6e8: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4d6ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
4d6f2: 42a7 clrl %sp@- <== NOT EXECUTED 4d6f4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d6f8: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d6fe: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
return copied;
4d702: 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 );
4d704: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 4d708: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
return copied;
}
4d70c: 2003 movel %d3,%d0 <== NOT EXECUTED 4d70e: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d714: 4e5e unlk %fp <== NOT EXECUTED 4d716: 4e75 rts <== NOT EXECUTED
unsigned int last_byte;
unsigned int start_offset;
int copied;
const unsigned char *src;
src = source;
4d718: 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;
4d71a: 4283 clrl %d3 <== NOT EXECUTED 4d71c: 6000 ff6a braw 4d688 <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 );
4d720: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d722: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d724: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d726: 4eb9 0004 d4d2 jsr 4d4d2 <IMFS_memfile_extend> <== NOT EXECUTED
if ( status )
4d72c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d730: 4a80 tstl %d0 <== NOT EXECUTED 4d732: 6700 fed8 beqw 4d60c <IMFS_memfile_write+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4d736: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4d73c: 76ff moveq #-1,%d3 <== NOT EXECUTED 4d73e: 781c moveq #28,%d4 <== NOT EXECUTED 4d740: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d742: 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 );
4d744: 2084 movel %d4,%a0@ <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d746: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d74c: 4e5e unlk %fp <== NOT EXECUTED 4d74e: 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;
4d750: 2c07 movel %d7,%d6 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d752: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
4d754: 280c movel %a4,%d4 <== NOT EXECUTED 4d756: d886 addl %d6,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d758: 9e86 subl %d6,%d7 <== NOT EXECUTED
copied += to_copy;
4d75a: 2606 movel %d6,%d3 <== NOT EXECUTED
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4d75c: 5282 addql #1,%d2 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d75e: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d760: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d762: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4d764: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d766: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d76c: 2c39 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED 4d772: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d776: 6000 ff10 braw 4d688 <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;
4d77a: 4283 clrl %d3 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d77c: 2003 movel %d3,%d0 <== NOT EXECUTED 4d77e: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d784: 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 fdc4 jsr 4fdc4 <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 aa7c jsr 4aa7c <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>
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 9f46 jsr 49f46 <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 423fa: 60c4 bras 423c0 <IMFS_mknod+0x70>
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 e96c jsr 4e96c <__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 e96c jsr 4e96c <__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 4914 moveal 64914 <_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 3444 jsr 53444 <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 2fd3 pea 62fd3 <IntUartPollCallbacks.6368+0x75> <== NOT EXECUTED 44dd2: 2079 0006 4914 moveal 64914 <_impure_ptr>,%a0 <== NOT EXECUTED 44dd8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ddc: 4eb9 0005 32f6 jsr 532f6 <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 .short 0xffd2 <== NOT EXECUTED 44dfa: 003a .short 0x003a <== NOT EXECUTED 44dfc: 0066 .short 0x0066 <== NOT EXECUTED 44dfe: 0010 .short 0x0010 <== NOT EXECUTED 44e00: 0010 .short 0x0010 <== 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 4914 moveal 64914 <_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 2fac pea 62fac <IntUartPollCallbacks.6368+0x4e> <== NOT EXECUTED 44e20: 4eb9 0005 3fb4 jsr 53fb4 <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 4914 moveal 64914 <_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 3374 jsr 53374 <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 3686 movel #407174,%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 4cd6 jmp 54cd6 <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 4914 moveal 64914 <_impure_ptr>,%a0 <== NOT EXECUTED 44e6c: 4879 0006 2f7e pea 62f7e <IntUartPollCallbacks.6368+0x20> <== NOT EXECUTED 44e72: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e76: 4eb9 0005 32f6 jsr 532f6 <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 3686 movel #407174,%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 4cd6 jmp 54cd6 <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 4914 moveal 64914 <_impure_ptr>,%a0 <== NOT EXECUTED 44ea0: 4879 0006 2fa0 pea 62fa0 <IntUartPollCallbacks.6368+0x42> <== NOT EXECUTED 44ea6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44eaa: 4eb9 0005 32f6 jsr 532f6 <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 3686 movel #407174,%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 4cd6 jmp 54cd6 <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 4914 moveal 64914 <_impure_ptr>,%a0 <== NOT EXECUTED 44ed8: 4879 0006 2f91 pea 62f91 <IntUartPollCallbacks.6368+0x33> <== NOT EXECUTED 44ede: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ee2: 4eb9 0005 32f6 jsr 532f6 <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 3686 movel #407174,%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 4cd6 jmp 54cd6 <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 4914 moveal 64914 <_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 2fc0 pea 62fc0 <IntUartPollCallbacks.6368+0x62> <== NOT EXECUTED 44f1a: 4eb9 0005 3fb4 jsr 53fb4 <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 fddc jsr 4fddc <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 6f28 jsr 46f28 <_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 6ef0 jsr 46ef0 <_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
0004ac38 <IMFS_rmnod>:
int IMFS_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4ac38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ac3c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4ac40: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access;
4ac42: 2410 movel %a0@,%d2 <== NOT EXECUTED
IMFS_create_orphan( jnode );
4ac44: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ac46: 4eb9 0004 ab5c jsr 4ab5c <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( jnode );
4ac4c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ac4e: 4eb9 0004 aba0 jsr 4aba0 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4ac54: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4ac58: 4280 clrl %d0 <== NOT EXECUTED 4ac5a: 4e5e unlk %fp <== NOT EXECUTED
...
0004ac60 <IMFS_stat>:
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4ac60: 7007 moveq #7,%d0
int IMFS_stat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4ac62: 4e56 0000 linkw %fp,#0 4ac66: 206e 000c moveal %fp@(12),%a0 4ac6a: 2f0a movel %a2,%sp@- 4ac6c: 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;
4ac70: 2252 moveal %a2@,%a1
switch ( the_jnode->type ) {
4ac72: b0a9 0048 cmpl %a1@(72),%d0
4ac76: 6418 bccs 4ac90 <IMFS_stat+0x30> <== ALWAYS TAKEN
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4ac78: 4eb9 0004 e96c jsr 4e96c <__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;
}
4ac7e: 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 );
4ac82: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ac84: 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;
}
4ac86: 4e5e unlk %fp <== NOT EXECUTED
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4ac88: 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;
}
4ac8e: 4e75 rts <== NOT EXECUTED
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4ac90: 2029 0048 movel %a1@(72),%d0 4ac94: d080 addl %d0,%d0 4ac96: 303b 0808 movew %pc@(4aca0 <IMFS_stat+0x40>,%d0:l),%d0 4ac9a: 48c0 extl %d0 4ac9c: 4efb 0802 jmp %pc@(4aca0 <IMFS_stat+0x40>,%d0:l)
4aca0: ffd8 .short 0xffd8 <== NOT EXECUTED 4aca2: ffd8 .short 0xffd8 <== NOT EXECUTED 4aca4: 00c2 bitrev %d2 <== NOT EXECUTED 4aca6: ffd8 .short 0xffd8 <== NOT EXECUTED 4aca8: 0010 .short 0x0010 <== NOT EXECUTED 4acaa: 006a .short 0x006a <== NOT EXECUTED 4acac: 006a .short 0x006a <== NOT EXECUTED 4acae: 0010 .short 0x0010 <== 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;
4acb0: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
4acb4: 4280 clrl %d0 <== NOT EXECUTED 4acb6: 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 );
4acb8: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
4acbc: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4acc0: 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 );
4acc4: 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;
4acc6: 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;
4acc8: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4acce: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino;
4acd4: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4acda: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4ace0: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
4ace6: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4acec: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4acf2: 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 =
4acf8: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4acfe: 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;
}
4ad02: 246e fffc moveal %fp@(-4),%a2 4ad06: 4e5e unlk %fp 4ad08: 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;
4ad0a: 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;
4ad0e: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 4ad12: 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 );
4ad16: 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;
4ad1a: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4ad1e: 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 );
4ad22: 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;
4ad24: 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;
4ad26: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4ad2c: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino;
4ad32: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4ad38: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4ad3e: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
4ad44: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4ad4a: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4ad50: 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 =
4ad56: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4ad5c: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED 4ad60: 60a0 bras 4ad02 <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;
4ad62: 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 );
4ad66: 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 );
4ad6a: 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 );
4ad6e: 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 );
4ad74: 2212 movel %a2@,%d1
buf->st_mode = the_jnode->st_mode;
4ad76: 2169 002e 000c movel %a1@(46),%a0@(12)
buf->st_nlink = the_jnode->st_nlink;
4ad7c: 3169 0032 0010 movew %a1@(50),%a0@(16)
buf->st_ino = the_jnode->st_ino;
4ad82: 2169 0034 0008 movel %a1@(52),%a0@(8)
buf->st_uid = the_jnode->st_uid;
4ad88: 3169 0038 0012 movew %a1@(56),%a0@(18)
buf->st_gid = the_jnode->st_gid;
4ad8e: 3169 003a 0014 movew %a1@(58),%a0@(20)
buf->st_atime = the_jnode->stat_atime;
4ad94: 2169 003c 0026 movel %a1@(60),%a0@(38)
buf->st_mtime = the_jnode->stat_mtime;
4ad9a: 2169 0040 002e movel %a1@(64),%a0@(46)
buf->st_ctime = the_jnode->stat_ctime;
4ada0: 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 );
4ada6: 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;
4adaa: 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 =
4adac: 20bc 0000 fffe movel #65534,%a0@ 4adb2: 2141 0004 movel %d1,%a0@(4) 4adb6: 6000 ff4a braw 4ad02 <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 fdc4 jsr 4fdc4 <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 aa7c jsr 4aa7c <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 f934 jsr 4f934 <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 9f46 jsr 49f46 <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 e96c jsr 4e96c <__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 e96c jsr 4e96c <__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 a178 jsr 4a178 <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 e96c jsr 4e96c <__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 e96c jsr 4e96c <__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 e96c jsr 4e96c <__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 208c jsr 5208c <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 eb36 moveal 5eb36 <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 eb3a moveal 5eb3a <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 eb34 tstb 5eb34 <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 e470 tstb 5e470 <Configuration+0x2c>
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 e3a0 movel 5e3a0 <RTEMS_Malloc_Heap>,%sp@- 42fba: 4eb9 0004 7606 jsr 47606 <_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 e3a0 movel 5e3a0 <RTEMS_Malloc_Heap>,%sp@- 42fce: 2439 0005 fbbc movel 5fbbc <rtems_malloc_statistics>,%d2 42fd4: 4eb9 0004 8148 jsr 48148 <_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 fbbc movel %d0,5fbbc <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 f288 jsr 4f288 <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 eb34 tstb 5eb34 <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 e3a0 movel 5e3a0 <RTEMS_Malloc_Heap>,%sp@- 43014: 4eb9 0004 7606 jsr 47606 <_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 6bcc jsr 46bcc <rtems_fatal_error_occurred>
00042860 <Stack_check_Dump_threads_usage>:
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
42860: 70ff moveq #-1,%d0 <== NOT EXECUTED
static rtems_printk_plugin_t print_handler;
void Stack_check_Dump_threads_usage(
Thread_Control *the_thread
)
{
42862: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 42866: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4286a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
4286e: b08a cmpl %a2,%d0 <== NOT EXECUTED 42870: 6700 015e beqw 429d0 <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 );
42874: 282a 00f2 movel %a2@(242),%d4 <== NOT EXECUTED
the_thread = 0;
current = 0;
} else
#endif
{
stack = &the_thread->Start.Initial_stack;
42878: 47ea 00b2 lea %a2@(178),%a3 <== NOT EXECUTED
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
4287c: 206a 00b6 moveal %a2@(182),%a0 <== NOT EXECUTED
}
low = Stack_check_usable_stack_start(stack);
size = Stack_check_usable_stack_size(stack);
42880: 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++)
42882: 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);
42884: 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);
4288a: 2608 movel %a0,%d3 <== NOT EXECUTED 4288c: 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;
42892: 2243 moveal %d3,%a1 <== NOT EXECUTED 42894: 43e9 0010 lea %a1@(16),%a1 <== NOT EXECUTED
for (ebase = base + length; base < ebase; base++)
42898: c082 andl %d2,%d0 <== NOT EXECUTED 4289a: d089 addl %a1,%d0 <== NOT EXECUTED 4289c: b089 cmpl %a1,%d0 <== NOT EXECUTED 4289e: 6300 00ba blsw 4295a <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
if (*base != U32_PATTERN)
428a2: 223c a5a5 a5a5 movel #-1515870811,%d1 <== NOT EXECUTED 428a8: b291 cmpl %a1@,%d1 <== NOT EXECUTED 428aa: 6600 013e bnew 429ea <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(
428ae: 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)
428b2: 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++)
428b4: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 428b6: 6400 00a2 bccw 4295a <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
if (*base != U32_PATTERN)
428ba: 227c a5a5 a5a5 moveal #-1515870811,%a1 <== NOT EXECUTED 428c0: b3d8 cmpal %a0@+,%a1 <== NOT EXECUTED 428c2: 67ee beqs 428b2 <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 )
428c4: 4a81 tstl %d1 <== NOT EXECUTED 428c6: 6700 0092 beqw 4295a <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
used = Stack_check_Calculate_used( low, size, high_water_mark );
428ca: d682 addl %d2,%d3 <== NOT EXECUTED 428cc: 9681 subl %d1,%d3 <== NOT EXECUTED
else
used = 0;
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
428ce: 4a8a tstl %a2 <== NOT EXECUTED 428d0: 6700 0090 beqw 42962 <Stack_check_Dump_threads_usage+0x102><== NOT EXECUTED
#endif
{
(*print_handler)(
428d4: 486e fffb pea %fp@(-5) <== NOT EXECUTED 428d8: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 428dc: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 428e0: 2879 0006 256c moveal 6256c <print_handler>,%a4 <== NOT EXECUTED 428e6: 4eb9 0004 90e0 jsr 490e0 <rtems_object_get_name> <== NOT EXECUTED 428ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 428ee: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 428f2: 4879 0005 ff2a pea 5ff2a <IntUartPollCallbacks.6368+0x20> <== NOT EXECUTED 428f8: 2f39 0006 2568 movel 62568 <print_context>,%sp@- <== NOT EXECUTED 428fe: 4e94 jsr %a4@ <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
42900: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
#endif
{
(*print_handler)(
42904: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
42908: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4290a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
4290c: 2013 movel %a3@,%d0 <== NOT EXECUTED 4290e: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
42910: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 42914: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42916: 4879 0005 ff45 pea 5ff45 <IntUartPollCallbacks.6368+0x3b> <== NOT EXECUTED 4291c: 2f39 0006 2568 movel 62568 <print_context>,%sp@- <== NOT EXECUTED 42922: 2079 0006 256c moveal 6256c <print_handler>,%a0 <== NOT EXECUTED 42928: 4e90 jsr %a0@ <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
4292a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4292e: 4ab9 0006 2570 tstl 62570 <Stack_check_Initialized> <== NOT EXECUTED 42934: 677a beqs 429b0 <Stack_check_Dump_threads_usage+0x150><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
42936: 2f03 movel %d3,%sp@- <== NOT EXECUTED 42938: 4879 0005 ff70 pea 5ff70 <IntUartPollCallbacks.6368+0x66> <== NOT EXECUTED 4293e: 2f39 0006 2568 movel 62568 <print_context>,%sp@- <== NOT EXECUTED 42944: 2079 0006 256c moveal 6256c <print_handler>,%a0 <== NOT EXECUTED 4294a: 4e90 jsr %a0@ <== NOT EXECUTED 4294c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
42950: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED 42956: 4e5e unlk %fp <== NOT EXECUTED 42958: 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;
4295a: 4283 clrl %d3 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
4295c: 4a8a tstl %a2 <== NOT EXECUTED 4295e: 6600 ff74 bnew 428d4 <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 );
42962: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 42966: 4879 0005 ff37 pea 5ff37 <IntUartPollCallbacks.6368+0x2d> <== NOT EXECUTED 4296c: 2f39 0006 2568 movel 62568 <print_context>,%sp@- <== NOT EXECUTED 42972: 2079 0006 256c moveal 6256c <print_handler>,%a0 <== NOT EXECUTED 42978: 4e90 jsr %a0@ <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
4297a: 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 );
4297e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
#endif
(*print_handler)(
42982: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42984: 2f04 movel %d4,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
42986: 2013 movel %a3@,%d0 <== NOT EXECUTED 42988: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
4298a: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 4298e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42990: 4879 0005 ff45 pea 5ff45 <IntUartPollCallbacks.6368+0x3b> <== NOT EXECUTED 42996: 2f39 0006 2568 movel 62568 <print_context>,%sp@- <== NOT EXECUTED 4299c: 2079 0006 256c moveal 6256c <print_handler>,%a0 <== NOT EXECUTED 429a2: 4e90 jsr %a0@ <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
429a4: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 429a8: 4ab9 0006 2570 tstl 62570 <Stack_check_Initialized> <== NOT EXECUTED 429ae: 6686 bnes 42936 <Stack_check_Dump_threads_usage+0xd6><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
429b0: 4879 0005 ff63 pea 5ff63 <IntUartPollCallbacks.6368+0x59> <== NOT EXECUTED 429b6: 2f39 0006 2568 movel 62568 <print_context>,%sp@- <== NOT EXECUTED 429bc: 2079 0006 256c moveal 6256c <print_handler>,%a0 <== NOT EXECUTED 429c2: 4e90 jsr %a0@ <== NOT EXECUTED 429c4: 508f addql #8,%sp <== NOT EXECUTED
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
}
}
429c6: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED 429cc: 4e5e unlk %fp <== NOT EXECUTED 429ce: 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)
429d0: 2079 0006 2d88 moveal 62d88 <Stack_check_Interrupt_stack+0x4>,%a0<== NOT EXECUTED 429d6: 4a88 tstl %a0 <== NOT EXECUTED 429d8: 6700 ff76 beqw 42950 <Stack_check_Dump_threads_usage+0xf0><== NOT EXECUTED
return;
stack = &Stack_check_Interrupt_stack;
429dc: 47f9 0006 2d84 lea 62d84 <Stack_check_Interrupt_stack>,%a3 <== NOT EXECUTED
the_thread = 0;
current = 0;
429e2: 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;
429e4: 95ca subal %a2,%a2 <== NOT EXECUTED 429e6: 6000 fe98 braw 42880 <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)
429ea: 2209 movel %a1,%d1 <== NOT EXECUTED 429ec: 6000 fed6 braw 428c4 <Stack_check_Dump_threads_usage+0x64><== NOT EXECUTED
000429f0 <Stack_check_Initialize>:
/*
* Stack_check_Initialize
*/
void Stack_check_Initialize( void )
{
429f0: 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 )
429f4: 4ab9 0006 2570 tstl 62570 <Stack_check_Initialized>
429fa: 666a bnes 42a66 <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) {
429fc: 2039 0006 33d2 movel 633d2 <_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 ];
42a02: 223c feed f00d movel #-17960947,%d1 42a08: 23c1 0006 2d74 movel %d1,62d74 <Stack_check_Pattern> 42a0e: 223c 0bad 0d06 movel #195890438,%d1 42a14: 23c1 0006 2d78 movel %d1,62d78 <Stack_check_Pattern+0x4> 42a1a: 223c dead f00d movel #-559026163,%d1 42a20: 23c1 0006 2d7c movel %d1,62d7c <Stack_check_Pattern+0x8> 42a26: 223c 600d 0d06 movel #1611468038,%d1 42a2c: 23c1 0006 2d80 movel %d1,62d80 <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) {
42a32: 4a80 tstl %d0
42a34: 6728 beqs 42a5e <Stack_check_Initialize+0x6e> <== NEVER TAKEN
42a36: 2239 0006 33d6 movel 633d6 <_Per_CPU_Information+0x4>,%d1
42a3c: 6720 beqs 42a5e <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 -
42a3e: 9280 subl %d0,%d1 <== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
42a40: 2f01 movel %d1,%sp@- <== NOT EXECUTED 42a42: 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;
42a46: 23c0 0006 2d88 movel %d0,62d88 <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);
42a4c: 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 -
42a4e: 23c1 0006 2d84 movel %d1,62d84 <Stack_check_Interrupt_stack><== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
42a54: 4eb9 0005 2100 jsr 52100 <memset> <== NOT EXECUTED 42a5a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
#endif
Stack_check_Initialized = 1;
42a5e: 7001 moveq #1,%d0 42a60: 23c0 0006 2570 movel %d0,62570 <Stack_check_Initialized>
}
42a66: 4e5e unlk %fp <== NOT EXECUTED
00042adc <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)
{
42adc: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 42ae0: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern(stack);
char name[32];
printk("BLOWN STACK!!!\n");
42ae4: 4879 0005 ff76 pea 5ff76 <IntUartPollCallbacks.6368+0x6c> <== NOT EXECUTED 42aea: 47f9 0004 4bf4 lea 44bf4 <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)
{
42af0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack; void *pattern_area = Stack_check_Get_pattern(stack);
42af4: 286a 00b6 moveal %a2@(182),%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)
{
42af8: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern(stack);
char name[32];
printk("BLOWN STACK!!!\n");
42afc: 4e93 jsr %a3@ <== NOT EXECUTED
printk("task control block: 0x%08" PRIxPTR "\n", running);
42afe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42b00: 4879 0005 ff86 pea 5ff86 <IntUartPollCallbacks.6368+0x7c> <== NOT EXECUTED 42b06: 4e93 jsr %a3@ <== NOT EXECUTED
printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
42b08: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 42b0c: 4879 0005 ffa3 pea 5ffa3 <IntUartPollCallbacks.6368+0x99> <== NOT EXECUTED 42b12: 4e93 jsr %a3@ <== NOT EXECUTED
printk(
42b14: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 42b18: 4879 0005 ffb5 pea 5ffb5 <IntUartPollCallbacks.6368+0xab> <== NOT EXECUTED 42b1e: 4e93 jsr %a3@ <== NOT EXECUTED
"task name: 0x%08" PRIx32 "\n",
running->Object.name.name_u32
);
printk(
42b20: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED 42b24: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED 42b28: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 42b2c: 4eb9 0004 90e0 jsr 490e0 <rtems_object_get_name> <== NOT EXECUTED 42b32: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 42b36: 2e80 movel %d0,%sp@ <== NOT EXECUTED 42b38: 4879 0005 ffc9 pea 5ffc9 <IntUartPollCallbacks.6368+0xbf> <== NOT EXECUTED 42b3e: 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)
42b40: 206a 00b6 moveal %a2@(182),%a0 <== NOT EXECUTED 42b44: 202a 00b2 movel %a2@(178),%d0 <== NOT EXECUTED
);
printk(
"task name string: %s\n",
rtems_object_get_name(running->Object.id, sizeof(name), name)
);
printk(
42b48: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 42b4c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42b4e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42b50: 4879 0005 ffdf pea 5ffdf <IntUartPollCallbacks.6368+0xd5> <== NOT EXECUTED 42b56: 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) {
42b58: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 42b5c: 4a02 tstb %d2 <== NOT EXECUTED 42b5e: 670a beqs 42b6a <Stack_check_report_blown_task+0x8e><== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal_error_occurred(0x81);
42b60: 4878 0081 pea 81 <DBL_MANT_DIG+0x4c> <== NOT EXECUTED 42b64: 4eb9 0004 9a04 jsr 49a04 <rtems_fatal_error_occurred> <== NOT EXECUTED
(unsigned long) stack->size,
stack->area,
((char *) stack->area + stack->size)
);
if (!pattern_ok) {
printk(
42b6a: 486c 0018 pea %a4@(24) <== NOT EXECUTED 42b6e: 486c 0008 pea %a4@(8) <== NOT EXECUTED 42b72: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 42b76: 4879 0006 0010 pea 60010 <IntUartPollCallbacks.6368+0x106> <== NOT EXECUTED 42b7c: 4e93 jsr %a3@ <== NOT EXECUTED 42b7e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal_error_occurred(0x81);
42b82: 4878 0081 pea 81 <DBL_MANT_DIG+0x4c> <== NOT EXECUTED 42b86: 4eb9 0004 9a04 jsr 49a04 <rtems_fatal_error_occurred> <== NOT EXECUTED
0004c950 <TOD_MICROSECONDS_TO_TICKS>:
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4c950: 41f9 0006 3e90 lea 63e90 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
4c956: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (microseconds / rtems_configuration_get_microseconds_per_tick()); }
4c95a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c95e: 4e5e unlk %fp <== NOT EXECUTED 4c960: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
...
00048008 <TOD_MILLISECONDS_TO_TICKS>:
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
48008: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
4800c: 2039 0005 fa20 movel 5fa20 <Configuration+0xc>,%d0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
48012: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
48014: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 4801a: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
}
4801e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 48022: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED 48026: 2002 movel %d2,%d0 <== NOT EXECUTED 48028: 241f movel %sp@+,%d2 <== NOT EXECUTED 4802a: 4e5e unlk %fp <== NOT EXECUTED
...
0004e6f8 <TOD_TICKS_PER_SECOND_method>:
uint32_t TOD_TICKS_PER_SECOND_method(void)
{
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4e6f8: 41f9 0005 e450 lea 5e450 <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)
{
4e6fe: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4e702: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 4e708: 4e5e unlk %fp <== NOT EXECUTED 4e70a: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00046ebc <_API_Mutex_Unlock>:
#include <rtems/score/apimutex.h>
void _API_Mutex_Unlock(
API_Mutex_Control *the_mutex
)
{
46ebc: 4e56 0000 linkw %fp,#0
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46ec0: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0 46ec6: 5280 addql #1,%d0 46ec8: 206e 0008 moveal %fp@(8),%a0 46ecc: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
_CORE_mutex_Surrender(
46ed2: 42a7 clrl %sp@- 46ed4: 2f28 0008 movel %a0@(8),%sp@- 46ed8: 4868 0010 pea %a0@(16) 46edc: 4eb9 0004 71c4 jsr 471c4 <_CORE_mutex_Surrender>
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46ee2: 4fef 000c lea %sp@(12),%sp
}
46ee6: 4e5e unlk %fp
_CORE_mutex_Surrender(
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46ee8: 4ef9 0004 8996 jmp 48996 <_Thread_Enable_dispatch>
...
00046d96 <_API_extensions_Run_postdriver>:
*
* _API_extensions_Run_postdriver
*/
void _API_extensions_Run_postdriver( void )
{
46d96: 4e56 0000 linkw %fp,#0 46d9a: 2f0a movel %a2,%sp@-
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46d9c: 2479 0005 fe78 moveal 5fe78 <_API_extensions_List>,%a2
void _API_extensions_Run_postdriver( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
46da2: b5fc 0005 fe7c cmpal #392828,%a2
46da8: 6710 beqs 46dba <_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)();
46daa: 206a 0008 moveal %a2@(8),%a0 46dae: 4e90 jsr %a0@
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
46db0: 2452 moveal %a2@,%a2
void _API_extensions_Run_postdriver( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
46db2: b5fc 0005 fe7c cmpal #392828,%a2
46db8: 66f0 bnes 46daa <_API_extensions_Run_postdriver+0x14>
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
if ( the_extension->postdriver_hook )
#endif
(*the_extension->postdriver_hook)();
}
}
46dba: 246e fffc moveal %fp@(-4),%a2
46dbe: 4e5e unlk %fp <== NOT EXECUTED
00046dc2 <_API_extensions_Run_postswitch>:
*
* _API_extensions_Run_postswitch
*/
void _API_extensions_Run_postswitch( void )
{
46dc2: 4e56 0000 linkw %fp,#0 46dc6: 2f0a movel %a2,%sp@-
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46dc8: 2479 0005 fe78 moveal 5fe78 <_API_extensions_List>,%a2
void _API_extensions_Run_postswitch( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
46dce: b5fc 0005 fe7c cmpal #392828,%a2
46dd4: 6718 beqs 46dee <_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 );
46dd6: 2f39 0006 0186 movel 60186 <_Per_CPU_Information+0xc>,%sp@- 46ddc: 206a 000c moveal %a2@(12),%a0 46de0: 4e90 jsr %a0@
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
46de2: 2452 moveal %a2@,%a2
void _API_extensions_Run_postswitch( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
46de4: 588f addql #4,%sp 46de6: b5fc 0005 fe7c cmpal #392828,%a2
46dec: 66e8 bnes 46dd6 <_API_extensions_Run_postswitch+0x14>
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46dee: 246e fffc moveal %fp@(-4),%a2 46df2: 4e5e unlk %fp
...
00050b60 <_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];
50b60: 41f9 0006 1024 lea 61024 <_Barrier_Translate_core_barrier_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Barrier_Translate_core_barrier_return_code (
CORE_barrier_Status the_barrier_status
)
{
50b66: 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];
}
50b6a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 50b6e: 4e5e unlk %fp <== NOT EXECUTED 50b70: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004960c <_CORE_RWLock_Initialize>:
void _CORE_RWLock_Initialize(
CORE_RWLock_Control *the_rwlock,
CORE_RWLock_Attributes *the_rwlock_attributes
)
{
4960c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49610: 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(
49614: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
CORE_RWLock_Control *the_rwlock,
CORE_RWLock_Attributes *the_rwlock_attributes
)
{
the_rwlock->Attributes = *the_rwlock_attributes;
49618: 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(
4961c: 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;
49622: 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(
49626: 42a7 clrl %sp@- <== NOT EXECUTED
the_rwlock->Attributes = *the_rwlock_attributes;
/*
the_rwlock->number_of_waiting_threads = 0;
*/
the_rwlock->number_of_readers = 0;
49628: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
4962c: 42a8 0044 clrl %a0@(68) <== NOT EXECUTED
_Thread_queue_Initialize(
49630: 2f08 movel %a0,%sp@- <== NOT EXECUTED 49632: 4eb9 0004 b840 jsr 4b840 <_Thread_queue_Initialize> <== NOT EXECUTED 49638: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
&the_rwlock->Wait_queue,
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_RWLOCK,
CORE_RWLOCK_TIMEOUT
);
}
4963c: 4e5e unlk %fp <== NOT EXECUTED
00049640 <_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 );
49640: 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
)
{
49646: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4964a: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4964e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 49652: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 49656: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED 4965a: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED
ISR_Level level; Thread_Control *executing = _Thread_Executing;
4965e: 2679 0006 32ea moveal 632ea <_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 );
49664: 40c2 movew %sr,%d2 <== NOT EXECUTED 49666: 8082 orl %d2,%d0 <== NOT EXECUTED 49668: 46c0 movew %d0,%sr <== NOT EXECUTED
switch ( the_rwlock->current_state ) {
4966a: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 4966e: 661a bnes 4968a <_CORE_RWLock_Obtain_for_reading+0x4a><== NOT EXECUTED
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
49670: 7001 moveq #1,%d0 <== NOT EXECUTED
the_rwlock->number_of_readers += 1;
49672: 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;
49676: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
the_rwlock->number_of_readers += 1; _ISR_Enable( level );
4967a: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
4967c: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49680: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 49686: 4e5e unlk %fp <== NOT EXECUTED 49688: 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 ) {
4968a: 7201 moveq #1,%d1 <== NOT EXECUTED 4968c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4968e: 674e beqs 496de <_CORE_RWLock_Obtain_for_reading+0x9e><== NOT EXECUTED
/*
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
49690: 4a03 tstb %d3 <== NOT EXECUTED 49692: 6612 bnes 496a6 <_CORE_RWLock_Obtain_for_reading+0x66><== NOT EXECUTED
_ISR_Enable( level );
49694: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
49696: 7202 moveq #2,%d1 <== NOT EXECUTED 49698: 2741 0034 movel %d1,%a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4969c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 496a2: 4e5e unlk %fp <== NOT EXECUTED 496a4: 4e75 rts <== NOT EXECUTED 496a6: 7001 moveq #1,%d0 <== NOT EXECUTED 496a8: 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;
496ac: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED
executing->Wait.id = id;
496b0: 2745 0020 movel %d5,%a3@(32) <== NOT EXECUTED
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
496b4: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
496b8: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
_ISR_Enable( level );
496bc: 46c2 movew %d2,%sr <== NOT EXECUTED
_Thread_queue_Enqueue_with_handler(
496be: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 496c2: 223c 0004 986c movel #301164,%d1 <== NOT EXECUTED 496c8: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
496cc: 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(
496d2: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
496d6: 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(
496d8: 4ef9 0004 b3f8 jmp 4b3f8 <_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 );
496de: 2f0a movel %a2,%sp@- <== NOT EXECUTED 496e0: 4eb9 0004 b79c jsr 4b79c <_Thread_queue_First> <== NOT EXECUTED
if ( !waiter ) {
496e6: 588f addql #4,%sp <== NOT EXECUTED 496e8: 4a80 tstl %d0 <== NOT EXECUTED 496ea: 66a4 bnes 49690 <_CORE_RWLock_Obtain_for_reading+0x50><== NOT EXECUTED
the_rwlock->number_of_readers += 1;
496ec: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
_ISR_Enable( level );
496f0: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
496f2: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
496f6: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 496fc: 4e5e unlk %fp <== NOT EXECUTED
00049700 <_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 );
49700: 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
)
{
49706: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4970a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4970e: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 49712: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 49716: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
ISR_Level level; Thread_Control *executing = _Thread_Executing;
4971a: 2279 0006 32ea moveal 632ea <_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
)
{
49720: 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 );
49724: 40c1 movew %sr,%d1 <== NOT EXECUTED 49726: 8081 orl %d1,%d0 <== NOT EXECUTED 49728: 46c0 movew %d0,%sr <== NOT EXECUTED
switch ( the_rwlock->current_state ) {
4972a: 4aa8 0044 tstl %a0@(68) <== NOT EXECUTED 4972e: 6614 bnes 49744 <_CORE_RWLock_Obtain_for_writing+0x44><== NOT EXECUTED
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;
49730: 7002 moveq #2,%d0 <== NOT EXECUTED 49732: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
_ISR_Enable( level );
49736: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
49738: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4973c: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 49740: 4e5e unlk %fp <== NOT EXECUTED 49742: 4e75 rts <== NOT EXECUTED
/*
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
49744: 4a02 tstb %d2 <== NOT EXECUTED 49746: 6610 bnes 49758 <_CORE_RWLock_Obtain_for_writing+0x58><== NOT EXECUTED
_ISR_Enable( level );
49748: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
4974a: 7002 moveq #2,%d0 <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4974c: 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;
49750: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49754: 4e5e unlk %fp <== NOT EXECUTED 49756: 4e75 rts <== NOT EXECUTED 49758: 7001 moveq #1,%d0 <== NOT EXECUTED 4975a: 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;
4975e: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
49762: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
49766: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
4976a: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
4976e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue_with_handler(
49770: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 49774: 203c 0004 986c movel #301164,%d0 <== NOT EXECUTED 4977a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4977e: 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(
49782: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49786: 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(
49788: 4ef9 0004 b3f8 jmp 4b3f8 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
...
00049790 <_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 );
49790: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
CORE_RWLock_Status _CORE_RWLock_Release(
CORE_RWLock_Control *the_rwlock
)
{
49796: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level; Thread_Control *executing = _Thread_Executing;
4979a: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
CORE_RWLock_Status _CORE_RWLock_Release(
CORE_RWLock_Control *the_rwlock
)
{
497a0: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 497a4: 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 );
497a8: 40c1 movew %sr,%d1 <== NOT EXECUTED 497aa: 8081 orl %d1,%d0 <== NOT EXECUTED 497ac: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){
497ae: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 497b2: 6700 0090 beqw 49844 <_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 ) {
497b6: 7401 moveq #1,%d2 <== NOT EXECUTED 497b8: b480 cmpl %d0,%d2 <== NOT EXECUTED 497ba: 676e beqs 4982a <_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;
497bc: 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;
497c0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
497c4: 46c1 movew %d1,%sr <== NOT EXECUTED
next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );
497c6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 497c8: 4eb9 0004 b280 jsr 4b280 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( next ) {
497ce: 588f addql #4,%sp <== NOT EXECUTED 497d0: 4a80 tstl %d0 <== NOT EXECUTED 497d2: 674a beqs 4981e <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED
if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
497d4: 7201 moveq #1,%d1 <== NOT EXECUTED 497d6: 2040 moveal %d0,%a0 <== NOT EXECUTED 497d8: b2a8 0030 cmpl %a0@(48),%d1 <== NOT EXECUTED 497dc: 677c beqs 4985a <_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;
497de: 7201 moveq #1,%d1 <== NOT EXECUTED
}
/*
* Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING
*/
the_rwlock->number_of_readers += 1;
497e0: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED 497e4: 47f9 0004 b79c lea 4b79c <_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 );
497ea: 49f9 0004 b644 lea 4b644 <_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;
497f0: 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 );
497f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 497f6: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !next ||
497f8: 588f addql #4,%sp <== NOT EXECUTED 497fa: 4a80 tstl %d0 <== NOT EXECUTED 497fc: 6720 beqs 4981e <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED 497fe: 7401 moveq #1,%d2 <== NOT EXECUTED 49800: 2040 moveal %d0,%a0 <== NOT EXECUTED 49802: b4a8 0030 cmpl %a0@(48),%d2 <== NOT EXECUTED 49806: 6716 beqs 4981e <_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;
49808: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
_Thread_queue_Extract( &the_rwlock->Wait_queue, next );
4980c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4980e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49810: 4e94 jsr %a4@ <== NOT EXECUTED
}
49812: 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 );
49814: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49816: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !next ||
49818: 588f addql #4,%sp <== NOT EXECUTED 4981a: 4a80 tstl %d0 <== NOT EXECUTED 4981c: 66e0 bnes 497fe <_CORE_RWLock_Release+0x6e> <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
4981e: 4280 clrl %d0 <== NOT EXECUTED 49820: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 49826: 4e5e unlk %fp <== NOT EXECUTED 49828: 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;
4982a: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4982e: 5380 subql #1,%d0 <== NOT EXECUTED 49830: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
if ( the_rwlock->number_of_readers != 0 ) {
49834: 6786 beqs 497bc <_CORE_RWLock_Release+0x2c> <== NOT EXECUTED
/* must be unlocked again */
_ISR_Enable( level );
49836: 46c1 movew %d1,%sr <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
49838: 4280 clrl %d0 <== NOT EXECUTED 4983a: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 49840: 4e5e unlk %fp <== NOT EXECUTED 49842: 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 );
49844: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
49846: 103c 0002 moveb #2,%d0 <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
4984a: 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;
49850: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
49854: 4280 clrl %d0 <== NOT EXECUTED 49856: 4e5e unlk %fp <== NOT EXECUTED 49858: 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;
4985a: 7002 moveq #2,%d0 <== NOT EXECUTED 4985c: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
49860: 4280 clrl %d0 <== NOT EXECUTED 49862: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 49868: 4e5e unlk %fp <== NOT EXECUTED
0004986c <_CORE_RWLock_Timeout>:
void _CORE_RWLock_Timeout(
Objects_Id id,
void *ignored
)
{
4986c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49870: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49874: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49878: 4eb9 0004 af44 jsr 4af44 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
4987e: 508f addql #8,%sp <== NOT EXECUTED 49880: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49884: 6618 bnes 4989e <_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 );
49886: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49888: 4eb9 0004 b8d8 jsr 4b8d8 <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4988e: 588f addql #4,%sp <== NOT EXECUTED 49890: 2039 0006 2e5c movel 62e5c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 49896: 5380 subql #1,%d0 <== NOT EXECUTED 49898: 23c0 0006 2e5c movel %d0,62e5c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
4989e: 4e5e unlk %fp <== NOT EXECUTED
...
0004d758 <_CORE_barrier_Release>:
#else
Objects_Id id __attribute__((unused)),
CORE_barrier_API_mp_support_callout api_barrier_mp_support __attribute__((unused))
#endif
)
{
4d758: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4d75c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4d760: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4d764: 47f9 0004 9ff0 lea 49ff0 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t count;
count = 0;
4d76a: 4282 clrl %d2 <== NOT EXECUTED
while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) {
4d76c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d76e: 4e93 jsr %a3@ <== NOT EXECUTED 4d770: 588f addql #4,%sp <== NOT EXECUTED 4d772: 4a80 tstl %d0 <== NOT EXECUTED 4d774: 670c beqs 4d782 <_CORE_barrier_Release+0x2a> <== NOT EXECUTED 4d776: 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++;
4d778: 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)) ) {
4d77a: 4e93 jsr %a3@ <== NOT EXECUTED 4d77c: 588f addql #4,%sp <== NOT EXECUTED 4d77e: 4a80 tstl %d0 <== NOT EXECUTED 4d780: 66f4 bnes 4d776 <_CORE_barrier_Release+0x1e> <== NOT EXECUTED
#endif
count++;
}
the_barrier->number_of_waiting_threads = 0;
return count;
}
4d782: 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;
4d784: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
return count; }
4d788: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4d78e: 4e5e unlk %fp <== NOT EXECUTED
...
00048270 <_CORE_barrier_Wait>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
48270: 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
)
{
48276: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
4827a: 2279 0006 1a2a moveal 61a2a <_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
)
{
48280: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 48284: 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;
48288: 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
)
{
4828c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 48290: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 48294: 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 );
48298: 40c1 movew %sr,%d1 <== NOT EXECUTED 4829a: 8081 orl %d1,%d0 <== NOT EXECUTED 4829c: 46c0 movew %d0,%sr <== NOT EXECUTED
the_barrier->number_of_waiting_threads++;
4829e: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 482a2: 5280 addql #1,%d0 <== NOT EXECUTED 482a4: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
482a8: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED 482ac: 6606 bnes 482b4 <_CORE_barrier_Wait+0x44> <== NOT EXECUTED
if ( the_barrier->number_of_waiting_threads ==
482ae: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED 482b2: 672e beqs 482e2 <_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;
482b4: 7001 moveq #1,%d0 <== NOT EXECUTED 482b6: 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;
482ba: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
482be: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
482c2: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
482c4: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 482c8: 203c 0004 a52c movel #304428,%d0 <== NOT EXECUTED 482ce: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
482d2: 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 );
482d6: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
482da: 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 );
482dc: 4ef9 0004 a168 jmp 4a168 <_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;
482e2: 7001 moveq #1,%d0 <== NOT EXECUTED 482e4: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
482e8: 46c1 movew %d1,%sr <== NOT EXECUTED
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
482ea: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED 482ee: 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 );
}
482f2: 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 );
482f6: 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 );
}
482fa: 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 );
482fc: 4ef9 0004 d758 jmp 4d758 <_CORE_barrier_Release> <== NOT EXECUTED
...
00059d5c <_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
)
{
59d5c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 59d60: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 59d64: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 59d68: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 59d6c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 59d70: 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 ) {
59d74: b4ab 004c cmpl %a3@(76),%d2 <== NOT EXECUTED 59d78: 6262 bhis 59ddc <_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 ) {
59d7a: 4aab 0048 tstl %a3@(72) <== NOT EXECUTED 59d7e: 664c bnes 59dcc <_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 =
59d80: 2f0b movel %a3,%sp@- <== NOT EXECUTED 59d82: 49f9 0005 c88c lea 5c88c <_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 ) {
59d88: 4283 clrl %d3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
59d8a: 4bf9 0006 2be4 lea 62be4 <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 =
59d90: 4e94 jsr %a4@ <== NOT EXECUTED 59d92: 588f addql #4,%sp <== NOT EXECUTED 59d94: 2440 moveal %d0,%a2 <== NOT EXECUTED 59d96: 4a80 tstl %d0 <== NOT EXECUTED 59d98: 6722 beqs 59dbc <_CORE_message_queue_Broadcast+0x60><== NOT EXECUTED 59d9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {
waitp = &the_thread->Wait;
number_broadcasted += 1;
59d9c: 5283 addql #1,%d3 <== NOT EXECUTED 59d9e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 59da0: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 59da4: 4e95 jsr %a5@ <== NOT EXECUTED
buffer,
waitp->return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
59da6: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 59daa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 59dae: 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 =
59db0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 59db2: 4e94 jsr %a4@ <== NOT EXECUTED 59db4: 588f addql #4,%sp <== NOT EXECUTED 59db6: 2440 moveal %d0,%a2 <== NOT EXECUTED 59db8: 4a80 tstl %d0 <== NOT EXECUTED 59dba: 66de bnes 59d9a <_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;
59dbc: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59dbe: 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;
59dc0: 2083 movel %d3,%a0@ <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; }
59dc2: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 59dc8: 4e5e unlk %fp <== NOT EXECUTED 59dca: 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;
59dcc: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59dce: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59dd0: 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;
59dd6: 4290 clrl %a0@ <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59dd8: 4e5e unlk %fp <== NOT EXECUTED 59dda: 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;
59ddc: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59dde: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 59de4: 4e5e unlk %fp <== NOT EXECUTED
0004e514 <_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
)
{
4e514: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e518: 2f0a movel %a2,%sp@- <== NOT EXECUTED
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
4e51a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4e51e: 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
)
{
4e522: 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(
4e526: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e528: 4eb9 0005 09cc jsr 509cc <_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 )
4e52e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4e532: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED 4e536: 6612 bnes 4e54a <_CORE_message_queue_Close+0x36> <== NOT EXECUTED
(void) _CORE_message_queue_Flush_support( the_message_queue );
(void) _Workspace_Free( the_message_queue->message_buffers );
4e538: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED
}
4e53e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e542: 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 );
4e544: 4ef9 0005 159e jmp 5159e <_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 );
4e54a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e54c: 4eb9 0004 e568 jsr 4e568 <_CORE_message_queue_Flush_support><== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
4e552: 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 );
4e558: 588f addql #4,%sp <== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
}
4e55a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e55e: 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 );
4e560: 4ef9 0005 159e jmp 5159e <_Workspace_Free> <== NOT EXECUTED
...
00059e3c <_CORE_message_queue_Flush>:
*/
uint32_t _CORE_message_queue_Flush(
CORE_message_queue_Control *the_message_queue
)
{
59e3c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 59e40: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( the_message_queue->number_of_pending_messages != 0 )
59e44: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED 59e48: 6606 bnes 59e50 <_CORE_message_queue_Flush+0x14> <== NOT EXECUTED
return _CORE_message_queue_Flush_support( the_message_queue );
else
return 0;
}
59e4a: 4280 clrl %d0 <== NOT EXECUTED 59e4c: 4e5e unlk %fp <== NOT EXECUTED 59e4e: 4e75 rts <== NOT EXECUTED 59e50: 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 );
59e52: 4ef9 0005 9e58 jmp 59e58 <_CORE_message_queue_Flush_support><== NOT EXECUTED
0004e568 <_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 );
4e568: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
uint32_t _CORE_message_queue_Flush_support(
CORE_message_queue_Control *the_message_queue
)
{
4e56e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4e572: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4e576: 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 );
4e57a: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e57c: 8081 orl %d1,%d0 <== NOT EXECUTED 4e57e: 46c0 movew %d0,%sr <== NOT EXECUTED
count = the_message_queue->number_of_pending_messages;
the_message_queue->number_of_pending_messages = 0;
_ISR_Enable( level );
return count;
}
4e580: 2668 0050 moveal %a0@(80),%a3 <== 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_head = _Chain_Head( &the_message_queue->Inactive_messages );
4e584: 49e8 0068 lea %a0@(104),%a4 <== NOT EXECUTED
count = the_message_queue->number_of_pending_messages;
the_message_queue->number_of_pending_messages = 0;
_ISR_Enable( level );
return count;
}
4e588: 2268 0058 moveal %a0@(88),%a1 <== NOT EXECUTED
inactive_first->previous = message_queue_last;
message_queue_first->previous = inactive_head;
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
count = the_message_queue->number_of_pending_messages;
4e58c: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
* fixed execution time that only deals with pending messages.
*/
_ISR_Disable( level );
inactive_head = _Chain_Head( &the_message_queue->Inactive_messages );
inactive_first = inactive_head->next;;
4e590: 2468 0068 moveal %a0@(104),%a2 <== NOT EXECUTED
message_queue_first = _Chain_First( &the_message_queue->Pending_messages );
message_queue_last = _Chain_Last( &the_message_queue->Pending_messages );
inactive_head->next = message_queue_first;
4e594: 214b 0068 movel %a3,%a0@(104) <== NOT EXECUTED
message_queue_last->next = inactive_first;
inactive_first->previous = message_queue_last;
4e598: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
inactive_first = inactive_head->next;;
message_queue_first = _Chain_First( &the_message_queue->Pending_messages );
message_queue_last = _Chain_Last( &the_message_queue->Pending_messages );
inactive_head->next = message_queue_first;
message_queue_last->next = inactive_first;
4e59c: 228a movel %a2,%a1@ <== 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_head = _Chain_Head( &the_message_queue->Inactive_messages );
4e59e: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4e5a2: 47e8 0050 lea %a0@(80),%a3 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
4e5a6: 49e8 0054 lea %a0@(84),%a4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4e5aa: 214b 0058 movel %a3,%a0@(88) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
4e5ae: 214c 0050 movel %a4,%a0@(80) <== NOT EXECUTED
head->next = tail;
head->previous = NULL;
4e5b2: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED
message_queue_first->previous = inactive_head;
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
count = the_message_queue->number_of_pending_messages;
the_message_queue->number_of_pending_messages = 0;
4e5b6: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
4e5ba: 46c1 movew %d1,%sr <== NOT EXECUTED
return count; }
4e5bc: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED 4e5c0: 4e5e unlk %fp <== NOT EXECUTED
00050164 <_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)) {
50164: 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
)
{
50166: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 5016a: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED 5016e: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 50172: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 50176: 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)) {
5017a: 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;
5017c: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED
the_message_queue->number_of_pending_messages = 0;
50180: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
the_message_queue->maximum_message_size = maximum_message_size;
50184: 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;
50188: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
5018c: 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)) {
50190: 4a81 tstl %d1 <== NOT EXECUTED 50192: 6718 beqs 501ac <_CORE_message_queue_Initialize+0x48><== NOT EXECUTED
allocated_message_size += sizeof(uint32_t);
50194: 2200 movel %d0,%d1 <== NOT EXECUTED 50196: 5881 addql #4,%d1 <== NOT EXECUTED
allocated_message_size &= ~(sizeof(uint32_t) - 1);
50198: 76fc moveq #-4,%d3 <== NOT EXECUTED 5019a: c283 andl %d3,%d1 <== NOT EXECUTED
}
if (allocated_message_size < maximum_message_size)
5019c: b280 cmpl %d0,%d1 <== NOT EXECUTED 5019e: 640e bccs 501ae <_CORE_message_queue_Initialize+0x4a><== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
501a0: 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;
501a6: 4200 clrb %d0 <== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
501a8: 4e5e unlk %fp <== NOT EXECUTED 501aa: 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)) {
501ac: 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));
501ae: 2601 movel %d1,%d3 <== NOT EXECUTED 501b0: 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 *
501b6: 2003 movel %d3,%d0 <== NOT EXECUTED 501b8: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
(allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
if (message_buffering_required < allocated_message_size)
501bc: b280 cmpl %d0,%d1 <== NOT EXECUTED 501be: 62e0 bhis 501a0 <_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 );
501c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 501c2: 4eb9 0005 3136 jsr 53136 <_Workspace_Allocate> <== NOT EXECUTED
if (the_message_queue->message_buffers == 0)
501c8: 588f addql #4,%sp <== NOT EXECUTED
return false;
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
501ca: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
501ce: 67d0 beqs 501a0 <_CORE_message_queue_Initialize+0x3c><== NOT EXECUTED
/*
* Initialize the pool of inactive messages, pending messages,
* and set of waiting threads.
*/
_Chain_Initialize (
501d0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 501d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 501d4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 501d6: 486a 0068 pea %a2@(104) <== NOT EXECUTED 501da: 4eb9 0005 59d8 jsr 559d8 <_Chain_Initialize> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
501e0: 41ea 0054 lea %a2@(84),%a0 <== NOT EXECUTED
allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
);
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
_Thread_queue_Initialize(
501e4: 7001 moveq #1,%d0 <== NOT EXECUTED 501e6: 2548 0050 movel %a0,%a2@(80) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
501ea: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED 501ee: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED 501f2: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED 501f6: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b> <== NOT EXECUTED 501fa: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
501fe: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED 50202: b090 cmpl %a0@,%d0 <== NOT EXECUTED 50204: 57c0 seq %d0 <== NOT EXECUTED 50206: 49c0 extbl %d0 <== NOT EXECUTED 50208: 4480 negl %d0 <== NOT EXECUTED 5020a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5020c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5020e: 4eb9 0005 26c0 jsr 526c0 <_Thread_queue_Initialize> <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
50214: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
50218: 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;
5021e: 7001 moveq #1,%d0 <== NOT EXECUTED
}
50220: 4e5e unlk %fp <== NOT EXECUTED
00055a4c <_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
)
{
55a4c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 55a50: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 55a54: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 55a58: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 55a5c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 55a60: 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 ) {
55a64: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 55a6a: 677a beqs 55ae6 <_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 ) {
55a6c: 0c80 8000 0000 cmpil #-2147483648,%d0 <== NOT EXECUTED 55a72: 6700 00a8 beqw 55b1c <_CORE_message_queue_Insert_message+0xd0><== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
55a76: 2208 movel %a0,%d1 <== NOT EXECUTED 55a78: 0681 0000 0054 addil #84,%d1 <== NOT EXECUTED
* 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);
#endif
}
55a7e: 2468 0050 moveal %a0@(80),%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 = _Chain_First( the_header );
while ( !_Chain_Is_tail( the_header, the_node ) ) {
55a82: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 55a84: 670c beqs 55a92 <_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 ) {
55a86: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED 55a8a: 6d06 blts 55a92 <_CORE_message_queue_Insert_message+0x46><== NOT EXECUTED
the_node = the_node->next;
55a8c: 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 = _Chain_First( the_header );
while ( !_Chain_Is_tail( the_header, the_node ) ) {
55a8e: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 55a90: 66f4 bnes 55a86 <_CORE_message_queue_Insert_message+0x3a><== NOT EXECUTED
the_node = the_node->next;
continue;
}
break;
}
_ISR_Disable( level );
55a92: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55a98: 40c1 movew %sr,%d1 <== NOT EXECUTED 55a9a: 8081 orl %d1,%d0 <== NOT EXECUTED 55a9c: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55a9e: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55aa2: 2400 movel %d0,%d2 <== NOT EXECUTED 55aa4: 5282 addql #1,%d2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55aa6: 4a80 tstl %d0 <== NOT EXECUTED 55aa8: 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 );
55aaa: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55aae: 4480 negl %d0 <== NOT EXECUTED
}
break;
}
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
55ab0: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
55ab4: 2652 moveal %a2@,%a3 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
55ab6: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
before_node = after_node->next; after_node->next = the_node;
55aba: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->next = before_node; before_node->previous = the_node;
55abc: 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;
55ac0: 228b movel %a3,%a1@ <== NOT EXECUTED
_Chain_Insert_unprotected( the_node->previous, &the_message->Node );
_ISR_Enable( level );
55ac2: 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 )
55ac4: 4a00 tstb %d0 <== NOT EXECUTED 55ac6: 6716 beqs 55ade <_CORE_message_queue_Insert_message+0x92><== NOT EXECUTED 55ac8: 2268 0060 moveal %a0@(96),%a1 <== NOT EXECUTED 55acc: 4a89 tstl %a1 <== NOT EXECUTED 55ace: 670e beqs 55ade <_CORE_message_queue_Insert_message+0x92><== NOT EXECUTED
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
55ad0: 2d68 0064 0008 movel %a0@(100),%fp@(8) <== NOT EXECUTED
#endif }
55ad6: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 55ada: 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);
55adc: 4ed1 jmp %a1@ <== NOT EXECUTED
#endif }
55ade: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 55ae2: 4e5e unlk %fp <== NOT EXECUTED 55ae4: 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 );
55ae6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55aec: 40c1 movew %sr,%d1 <== NOT EXECUTED 55aee: 8081 orl %d1,%d0 <== NOT EXECUTED 55af0: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55af2: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55af6: 2400 movel %d0,%d2 <== NOT EXECUTED 55af8: 5282 addql #1,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
55afa: 47e8 0054 lea %a0@(84),%a3 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55afe: 4a80 tstl %d0 <== NOT EXECUTED 55b00: 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++;
55b02: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
55b06: 2468 0058 moveal %a0@(88),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55b0a: 4480 negl %d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
55b0c: 228b movel %a3,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
55b0e: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED
old_last->next = the_node;
55b12: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
55b14: 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 );
55b18: 46c1 movew %d1,%sr <== NOT EXECUTED 55b1a: 60a8 bras 55ac4 <_CORE_message_queue_Insert_message+0x78><== NOT EXECUTED
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
_ISR_Disable( level );
55b1c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 55b22: 40c1 movew %sr,%d1 <== NOT EXECUTED 55b24: 8081 orl %d1,%d0 <== NOT EXECUTED 55b26: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55b28: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55b2c: 2400 movel %d0,%d2 <== NOT EXECUTED 55b2e: 5282 addql #1,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert_unprotected(_Chain_Head(the_chain), the_node);
55b30: 47e8 0050 lea %a0@(80),%a3 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55b34: 4a80 tstl %d0 <== NOT EXECUTED 55b36: 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++;
55b38: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
55b3c: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55b40: 4480 negl %d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert_unprotected(_Chain_Head(the_chain), the_node);
55b42: 234b 0004 movel %a3,%a1@(4) <== NOT EXECUTED
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
55b46: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED
the_node->next = before_node; before_node->previous = the_node;
55b4a: 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;
55b4e: 228a movel %a2,%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 );
55b50: 46c1 movew %d1,%sr <== NOT EXECUTED 55b52: 6000 ff70 braw 55ac4 <_CORE_message_queue_Insert_message+0x78><== NOT EXECUTED
...
00050224 <_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 );
50224: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
5022a: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
5022e: 2279 0006 a18e moveal 6a18e <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
50234: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 50238: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5023c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 50240: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 50244: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 50248: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED 5024c: 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;
50250: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Disable( level );
50254: 40c1 movew %sr,%d1 <== NOT EXECUTED 50256: 8081 orl %d1,%d0 <== NOT EXECUTED 50258: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
5025a: 200a movel %a2,%d0 <== NOT EXECUTED 5025c: 0680 0000 0054 addil #84,%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 );
}
50262: 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))
50266: b08b cmpl %a3,%d0 <== NOT EXECUTED 50268: 6700 0088 beqw 502f2 <_CORE_message_queue_Seize+0xce> <== NOT EXECUTED
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
5026c: 2253 moveal %a3@,%a1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5026e: 49ea 0050 lea %a2@(80),%a4 <== NOT EXECUTED 50272: 234c 0004 movel %a4,%a1@(4) <== NOT EXECUTED
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
_ISR_Disable( level );
the_message = _CORE_message_queue_Get_pending_message( the_message_queue );
if ( the_message != NULL ) {
the_message_queue->number_of_pending_messages -= 1;
50276: 53aa 0048 subql #1,%a2@(72) <== NOT EXECUTED
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
5027a: 2549 0050 movel %a1,%a2@(80) <== NOT EXECUTED
_ISR_Enable( level );
5027e: 46c1 movew %d1,%sr <== NOT EXECUTED
*size_p = the_message->Contents.size;
_Thread_Executing->Wait.count =
50280: 2279 0006 a18e moveal 6a18e <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
_CORE_message_queue_Get_message_priority( the_message );
_CORE_message_queue_Copy_buffer(
the_message->Contents.buffer,
50286: 240b movel %a3,%d2 <== NOT EXECUTED 50288: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
5028e: 49f9 0005 8860 lea 58860 <memcpy>,%a4 <== 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;
50294: 20ab 000c movel %a3@(12),%a0@ <== NOT EXECUTED
_Thread_Executing->Wait.count =
50298: 236b 0008 0024 movel %a3@(8),%a1@(36) <== NOT EXECUTED 5029e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 502a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 502a2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 502a4: 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 );
502a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 502a8: 4eb9 0005 2290 jsr 52290 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( !the_thread ) {
502ae: 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 );
502b2: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !the_thread ) {
502b4: 4a80 tstl %d0 <== NOT EXECUTED 502b6: 6700 0088 beqw 50340 <_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;
502ba: 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;
502be: 2768 0024 0008 movel %a0@(36),%a3@(8) <== NOT EXECUTED 502c4: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
502c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 502ca: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED 502ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED 502d0: 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(
502d2: 2d6b 0008 0010 movel %a3@(8),%fp@(16) <== NOT EXECUTED 502d8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 502dc: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 502e0: 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 );
}
502e4: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 502ea: 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(
502ec: 4ef9 0005 5a4c jmp 55a4c <_CORE_message_queue_Insert_message><== NOT EXECUTED
return;
}
#endif
}
if ( !wait ) {
502f2: 4a02 tstb %d2 <== NOT EXECUTED 502f4: 6612 bnes 50308 <_CORE_message_queue_Seize+0xe4> <== NOT EXECUTED
_ISR_Enable( level );
502f6: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
502f8: 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 );
}
502fa: 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;
50300: 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 );
}
50304: 4e5e unlk %fp <== NOT EXECUTED 50306: 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;
50308: 7001 moveq #1,%d0 <== NOT EXECUTED 5030a: 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;
5030e: 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;
50312: 234a 0044 movel %a2,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
50316: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
executing->Wait.return_argument_second.mutable_object = buffer; executing->Wait.return_argument = size_p;
5031a: 2348 0028 movel %a0,%a1@(40) <== NOT EXECUTED
/* Wait.count will be filled in with the message priority */ _ISR_Enable( level );
5031e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
50320: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED 50324: 49f9 0005 27cc lea 527cc <_Thread_queue_Timeout>,%a4 <== NOT EXECUTED 5032a: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 5032e: 2d4c 0010 movel %a4,%fp@(16) <== NOT EXECUTED
}
50332: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 50338: 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 );
5033a: 4ef9 0005 2408 jmp 52408 <_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 );
50340: 45ea 0068 lea %a2@(104),%a2 <== NOT EXECUTED 50344: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 50348: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
5034c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 50352: 4e5e unlk %fp <== NOT EXECUTED 50354: 4ef9 0005 0098 jmp 50098 <_Chain_Append> <== NOT EXECUTED
...
0005035c <_CORE_message_queue_Submit>:
#endif
CORE_message_queue_Submit_types submit_type,
bool wait,
Watchdog_Interval timeout
)
{
5035c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 50360: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 50364: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 50368: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 5036c: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED 50370: 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 ) {
50374: b4aa 004c cmpl %a2@(76),%d2 <== NOT EXECUTED 50378: 6228 bhis 503a2 <_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 ) {
5037a: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 5037e: 672e beqs 503ae <_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 <
50380: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED 50384: 6500 00ba bcsw 50440 <_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 ) {
50388: 4a03 tstb %d3 <== NOT EXECUTED 5038a: 6700 00f4 beqw 50480 <_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() ) {
5038e: 4ab9 0006 a18a tstl 6a18a <_Per_CPU_Information+0x8> <== NOT EXECUTED 50394: 6754 beqs 503ea <_CORE_message_queue_Submit+0x8e><== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
50396: 7003 moveq #3,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50398: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5039e: 4e5e unlk %fp <== NOT EXECUTED 503a0: 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;
503a2: 7001 moveq #1,%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
/*
* 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 );
503ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 503b0: 4eb9 0005 2290 jsr 52290 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( the_thread ) {
503b6: 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 );
503b8: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( the_thread ) {
503ba: 4a80 tstl %d0 <== NOT EXECUTED 503bc: 6700 00ce beqw 5048c <_CORE_message_queue_Submit+0x130><== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
503c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 503c2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 503c6: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED 503ca: 4eb9 0005 8860 jsr 58860 <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;
503d0: 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;
503d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 503d8: 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;
503da: 2082 movel %d2,%a0@ <== NOT EXECUTED
the_thread->Wait.count = (uint32_t) submit_type;
503dc: 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
}
503e0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 503e6: 4e5e unlk %fp <== NOT EXECUTED 503e8: 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;
503ea: 2079 0006 a18e moveal 6a18e <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
503f0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 503f6: 40c1 movew %sr,%d1 <== NOT EXECUTED 503f8: 8081 orl %d1,%d0 <== NOT EXECUTED 503fa: 46c0 movew %d0,%sr <== NOT EXECUTED 503fc: 7001 moveq #1,%d0 <== NOT EXECUTED 503fe: 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;
50402: 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;
50406: 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;
5040c: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.return_argument_second.immutable_object = buffer;
50410: 2140 002c movel %d0,%a0@(44) <== NOT EXECUTED
executing->Wait.option = (uint32_t) size;
50414: 2142 0030 movel %d2,%a0@(48) <== NOT EXECUTED
executing->Wait.count = submit_type;
50418: 2144 0024 movel %d4,%a0@(36) <== NOT EXECUTED
_ISR_Enable( level );
5041c: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
5041e: 4879 0005 27cc pea 527cc <_Thread_queue_Timeout> <== NOT EXECUTED 50424: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED 50428: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5042a: 4eb9 0005 2408 jsr 52408 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
50430: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 50434: 7007 moveq #7,%d0 <== NOT EXECUTED
#endif }
50436: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5043c: 4e5e unlk %fp <== NOT EXECUTED 5043e: 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 );
50440: 486a 0068 pea %a2@(104) <== NOT EXECUTED 50444: 4eb9 0005 00f8 jsr 500f8 <_Chain_Get> <== NOT EXECUTED 5044a: 2640 moveal %d0,%a3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
5044c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5044e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 50452: 486b 0010 pea %a3@(16) <== NOT EXECUTED 50456: 4eb9 0005 8860 jsr 58860 <memcpy> <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_message->Contents.buffer,
size
);
the_message->Contents.size = size;
5045c: 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;
50460: 2744 0008 movel %d4,%a3@(8) <== NOT EXECUTED
_CORE_message_queue_Set_message_priority( the_message, submit_type );
_CORE_message_queue_Insert_message(
50464: 2f04 movel %d4,%sp@- <== NOT EXECUTED 50466: 2f0b movel %a3,%sp@- <== NOT EXECUTED 50468: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5046a: 4eb9 0005 5a4c jsr 55a4c <_CORE_message_queue_Insert_message><== NOT EXECUTED
the_message_queue,
the_message,
submit_type
);
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
50470: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 50474: 4280 clrl %d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50476: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5047c: 4e5e unlk %fp <== NOT EXECUTED 5047e: 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;
50480: 7002 moveq #2,%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
/*
* 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 ) {
5048c: 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 <
50490: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED 50494: 6400 fef2 bccw 50388 <_CORE_message_queue_Submit+0x2c><== NOT EXECUTED 50498: 60a6 bras 50440 <_CORE_message_queue_Submit+0xe4><== NOT EXECUTED
...
00046f98 <_CORE_mutex_Initialize>:
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46f98: 4e56 0000 linkw %fp,#0 46f9c: 206e 0008 moveal %fp@(8),%a0 46fa0: 2f0a movel %a2,%sp@- 46fa2: 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;
46fa6: 224a moveal %a2,%a1 46fa8: 2159 0040 movel %a1@+,%a0@(64) 46fac: 2159 0044 movel %a1@+,%a0@(68) 46fb0: 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
)
{
46fb4: 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;
46fb8: 3151 004c movew %a1@,%a0@(76)
the_mutex->lock = initial_lock;
46fbc: 2140 004e movel %d0,%a0@(78)
the_mutex->blocked_count = 0;
46fc0: 42a8 0056 clrl %a0@(86)
if ( initial_lock == CORE_MUTEX_LOCKED ) {
46fc4: 4a80 tstl %d0
46fc6: 6654 bnes 4701c <_CORE_mutex_Initialize+0x84>
the_mutex->nest_count = 1;
the_mutex->holder = _Thread_Executing;
46fc8: 2279 0006 0186 moveal 60186 <_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;
46fce: 7201 moveq #1,%d1
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
46fd0: 2169 0008 005e movel %a1@(8),%a0@(94)
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
46fd6: 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;
46fda: 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 ) ||
46fde: 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;
46fe2: 2149 005a movel %a1,%a0@(90)
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
46fe6: b280 cmpl %d0,%d1
46fe8: 6762 beqs 4704c <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
46fea: 123c 0003 moveb #3,%d1 46fee: b280 cmpl %d0,%d1
46ff0: 675a beqs 4704c <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46ff2: 4aaa 0006 tstl %a2@(6) 46ff6: 56c0 sne %d0 46ff8: 4878 0005 pea 5 <COMPARE> 46ffc: 49c0 extbl %d0 46ffe: 4878 0400 pea 400 <D_BIAS+0x2> 47002: 4480 negl %d0 47004: 2f00 movel %d0,%sp@- 47006: 2f08 movel %a0,%sp@- 47008: 4eb9 0004 9128 jsr 49128 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
4700e: 4fef 0010 lea %sp@(16),%sp 47012: 4280 clrl %d0
}
47014: 246e fffc moveal %fp@(-4),%a2 47018: 4e5e unlk %fp 4701a: 4e75 rts
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
4701c: 4aaa 0006 tstl %a2@(6) 47020: 56c0 sne %d0
#endif
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
47022: 42a8 0052 clrl %a0@(82)
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
47026: 49c0 extbl %d0 47028: 4480 negl %d0
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
4702a: 42a8 005a clrl %a0@(90)
the_mutex->holder_id = 0;
4702e: 42a8 005e clrl %a0@(94)
}
_Thread_queue_Initialize(
47032: 4878 0005 pea 5 <COMPARE> 47036: 4878 0400 pea 400 <D_BIAS+0x2> 4703a: 2f00 movel %d0,%sp@- 4703c: 2f08 movel %a0,%sp@- 4703e: 4eb9 0004 9128 jsr 49128 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
47044: 4fef 0010 lea %sp@(16),%sp 47048: 4280 clrl %d0 4704a: 60c8 bras 47014 <_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 <
4704c: 2028 004a movel %a0@(74),%d0 <== NOT EXECUTED 47050: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED 47054: 6228 bhis 4707e <_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++;
47056: 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(
4705a: 4aaa 0006 tstl %a2@(6) <== NOT EXECUTED 4705e: 56c0 sne %d0 <== NOT EXECUTED 47060: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 47064: 49c0 extbl %d0 <== NOT EXECUTED 47066: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED 4706a: 4480 negl %d0 <== NOT EXECUTED 4706c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4706e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47070: 4eb9 0004 9128 jsr 49128 <_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;
47076: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4707a: 4280 clrl %d0 <== NOT EXECUTED 4707c: 6096 bras 47014 <_CORE_mutex_Initialize+0x7c> <== NOT EXECUTED
}
4707e: 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;
47082: 7006 moveq #6,%d0 <== NOT EXECUTED
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47084: 4e5e unlk %fp <== NOT EXECUTED
00047114 <_CORE_mutex_Seize>:
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
47114: 4e56 0000 linkw %fp,#0
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
47118: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
4711e: 2f0a movel %a2,%sp@- 47120: 246e 0008 moveal %fp@(8),%a2 47124: 2f02 movel %d2,%sp@- 47126: 142e 0013 moveb %fp@(19),%d2
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
4712a: 4a80 tstl %d0
4712c: 6704 beqs 47132 <_CORE_mutex_Seize+0x1e>
4712e: 4a02 tstb %d2
47130: 6634 bnes 47166 <_CORE_mutex_Seize+0x52> <== ALWAYS TAKEN
47132: 486e 0018 pea %fp@(24) 47136: 2f0a movel %a2,%sp@- 47138: 4eb9 0004 c4a0 jsr 4c4a0 <_CORE_mutex_Seize_interrupt_trylock> 4713e: 508f addql #8,%sp 47140: 4a80 tstl %d0
47142: 6716 beqs 4715a <_CORE_mutex_Seize+0x46>
47144: 4a02 tstb %d2
47146: 6636 bnes 4717e <_CORE_mutex_Seize+0x6a> <== ALWAYS TAKEN
47148: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED 4714c: 46c0 movew %d0,%sr <== NOT EXECUTED 4714e: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47154: 7001 moveq #1,%d0 <== NOT EXECUTED 47156: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
}
4715a: 242e fff8 movel %fp@(-8),%d2 4715e: 246e fffc moveal %fp@(-4),%a2 47162: 4e5e unlk %fp 47164: 4e75 rts
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
47166: 7001 moveq #1,%d0 47168: b0b9 0005 fe64 cmpl 5fe64 <_System_state_Current>,%d0
4716e: 64c2 bccs 47132 <_CORE_mutex_Seize+0x1e>
47170: 4878 0012 pea 12 <INVALID_OPERATION+0x2> 47174: 42a7 clrl %sp@- 47176: 42a7 clrl %sp@- 47178: 4eb9 0004 7868 jsr 47868 <_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;
4717e: 7001 moveq #1,%d0 47180: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0 47186: 2540 0030 movel %d0,%a2@(48) 4718a: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0 47190: 5280 addql #1,%d0 47192: 216e 000c 0020 movel %fp@(12),%a0@(32) 47198: 214a 0044 movel %a2,%a0@(68) 4719c: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level> 471a2: 202e 0018 movel %fp@(24),%d0 471a6: 46c0 movew %d0,%sr 471a8: 2f2e 0014 movel %fp@(20),%sp@- 471ac: 2f0a movel %a2,%sp@- 471ae: 4eb9 0004 7088 jsr 47088 <_CORE_mutex_Seize_interrupt_blocking>
}
471b4: 242e fff8 movel %fp@(-8),%d2
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
471b8: 508f addql #8,%sp
}
471ba: 246e fffc moveal %fp@(-4),%a2 471be: 4e5e unlk %fp
...
00047088 <_CORE_mutex_Seize_interrupt_blocking>:
)
{
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
47088: 7002 moveq #2,%d0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
4708a: 4e56 0000 linkw %fp,#0
Thread_Control *executing;
executing = _Thread_Executing;
4708e: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
47094: 2f0a movel %a2,%sp@- 47096: 246e 0008 moveal %fp@(8),%a2 4709a: 2f02 movel %d2,%sp@- 4709c: 242e 000c movel %fp@(12),%d2
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
470a0: b0aa 0046 cmpl %a2@(70),%d0
470a4: 6728 beqs 470ce <_CORE_mutex_Seize_interrupt_blocking+0x46>
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470a6: 4879 0004 9234 pea 49234 <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
470ac: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470b0: 2f02 movel %d2,%sp@- 470b2: 2f0a movel %a2,%sp@- 470b4: 4eb9 0004 8e70 jsr 48e70 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
470ba: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470be: 4fef 000c lea %sp@(12),%sp
}
470c2: 246e fffc moveal %fp@(-4),%a2 470c6: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470c8: 4ef9 0004 8996 jmp 48996 <_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 ) {
470ce: 226a 005a moveal %a2@(90),%a1 470d2: 2028 0014 movel %a0@(20),%d0 470d6: b0a9 0014 cmpl %a1@(20),%d0
470da: 64ca bccs 470a6 <_CORE_mutex_Seize_interrupt_blocking+0x1e><== NEVER TAKEN
_Thread_Change_priority(
470dc: 42a7 clrl %sp@- 470de: 2f00 movel %d0,%sp@- 470e0: 2f09 movel %a1,%sp@- 470e2: 4eb9 0004 84a0 jsr 484a0 <_Thread_Change_priority> 470e8: 4fef 000c lea %sp@(12),%sp
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470ec: 4879 0004 9234 pea 49234 <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
470f2: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470f6: 2f02 movel %d2,%sp@- 470f8: 2f0a movel %a2,%sp@- 470fa: 4eb9 0004 8e70 jsr 48e70 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
47100: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
47104: 4fef 000c lea %sp@(12),%sp
}
47108: 246e fffc moveal %fp@(-4),%a2 4710c: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
4710e: 4ef9 0004 8996 jmp 48996 <_Thread_Enable_dispatch>
0004c4a0 <_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
)
{
4c4a0: 4e56 0000 linkw %fp,#0
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
4c4a4: 2279 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a1 4c4aa: 2f0a movel %a2,%sp@- 4c4ac: 206e 0008 moveal %fp@(8),%a0 4c4b0: 2f02 movel %d2,%sp@- 4c4b2: 246e 000c moveal %fp@(12),%a2
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
4c4b6: 42a9 0034 clrl %a1@(52)
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
4c4ba: 4aa8 004e tstl %a0@(78)
4c4be: 673a beqs 4c4fa <_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;
4c4c0: 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;
4c4c2: 2169 0008 005e movel %a1@(8),%a0@(94)
return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p ); }
4c4c8: 2028 0046 movel %a0@(70),%d0
the_mutex->nest_count = 1;
4c4cc: 2141 0052 movel %d1,%a0@(82)
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
4c4d0: 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;
4c4d4: 42a8 004e clrl %a0@(78)
the_mutex->holder = executing;
4c4d8: 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 ) ||
4c4dc: b280 cmpl %d0,%d1
4c4de: 672e beqs 4c50e <_CORE_mutex_Seize_interrupt_trylock+0x6e>
4c4e0: 123c 0003 moveb #3,%d1 4c4e4: b280 cmpl %d0,%d1
4c4e6: 674e beqs 4c536 <_CORE_mutex_Seize_interrupt_trylock+0x96><== NEVER TAKEN
executing->resource_count++;
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4c4e8: 2012 movel %a2@,%d0 4c4ea: 46c0 movew %d0,%sr
return 0;
4c4ec: 4280 clrl %d0 4c4ee: 242e fff8 movel %fp@(-8),%d2 4c4f2: 246e fffc moveal %fp@(-4),%a2 4c4f6: 4e5e unlk %fp 4c4f8: 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 ) ) {
4c4fa: b3e8 005a cmpal %a0@(90),%a1
4c4fe: 671a beqs 4c51a <_CORE_mutex_Seize_interrupt_trylock+0x7a>
4c500: 242e fff8 movel %fp@(-8),%d2
/*
* The mutex is not available and the caller must deal with the possibility
* of blocking.
*/
return 1;
4c504: 7001 moveq #1,%d0 4c506: 246e fffc moveal %fp@(-4),%a2 4c50a: 4e5e unlk %fp 4c50c: 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++;
4c50e: 52a9 001c addql #1,%a1@(28)
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4c512: 2012 movel %a2@,%d0 4c514: 46c0 movew %d0,%sr
return 0;
4c516: 4280 clrl %d0 4c518: 60d4 bras 4c4ee <_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 ) {
4c51a: 2028 0040 movel %a0@(64),%d0
4c51e: 6658 bnes 4c578 <_CORE_mutex_Seize_interrupt_trylock+0xd8><== ALWAYS TAKEN
case CORE_MUTEX_NESTING_ACQUIRES:
the_mutex->nest_count++;
4c520: 52a8 0052 addql #1,%a0@(82) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c524: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c526: 46c0 movew %d0,%sr <== NOT EXECUTED 4c528: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c52c: 4280 clrl %d0 <== NOT EXECUTED 4c52e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c532: 4e5e unlk %fp <== NOT EXECUTED 4c534: 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++;
4c536: 2429 001c movel %a1@(28),%d2 <== NOT EXECUTED 4c53a: 2002 movel %d2,%d0 <== NOT EXECUTED 4c53c: 5280 addql #1,%d0 <== NOT EXECUTED 4c53e: 2340 001c movel %d0,%a1@(28) <== NOT EXECUTED
*/
{
Priority_Control ceiling;
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
4c542: 2228 004a movel %a0@(74),%d1 <== NOT EXECUTED
current = executing->current_priority;
4c546: 2029 0014 movel %a1@(20),%d0 <== NOT EXECUTED
if ( current == ceiling ) {
4c54a: b081 cmpl %d1,%d0 <== NOT EXECUTED 4c54c: 6700 0082 beqw 4c5d0 <_CORE_mutex_Seize_interrupt_trylock+0x130><== NOT EXECUTED
_ISR_Enable( *level_p );
return 0;
}
if ( current > ceiling ) {
4c550: 6244 bhis 4c596 <_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;
4c552: 7206 moveq #6,%d1 <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4c554: 7001 moveq #1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4c556: 2341 0034 movel %d1,%a1@(52) <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4c55a: 2140 004e movel %d0,%a0@(78) <== NOT EXECUTED
the_mutex->nest_count = 0; /* undo locking above */
4c55e: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
executing->resource_count--; /* undo locking above */
4c562: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c566: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c568: 46c0 movew %d0,%sr <== NOT EXECUTED 4c56a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c56e: 4280 clrl %d0 <== NOT EXECUTED 4c570: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c574: 4e5e unlk %fp <== NOT EXECUTED 4c576: 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 ) {
4c578: 7201 moveq #1,%d1 4c57a: b280 cmpl %d0,%d1
4c57c: 6682 bnes 4c500 <_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;
4c57e: 7002 moveq #2,%d0 <== NOT EXECUTED 4c580: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c584: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c586: 46c0 movew %d0,%sr <== NOT EXECUTED 4c588: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c58c: 4280 clrl %d0 <== NOT EXECUTED 4c58e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c592: 4e5e unlk %fp <== NOT EXECUTED 4c594: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4c596: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4c59c: 5280 addql #1,%d0 <== NOT EXECUTED 4c59e: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return 0;
}
if ( current > ceiling ) {
_Thread_Disable_dispatch();
_ISR_Enable( *level_p );
4c5a4: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c5a6: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_Change_priority(
4c5a8: 42a7 clrl %sp@- <== NOT EXECUTED 4c5aa: 2f28 004a movel %a0@(74),%sp@- <== NOT EXECUTED 4c5ae: 2f28 005a movel %a0@(90),%sp@- <== NOT EXECUTED 4c5b2: 4eb9 0004 84a0 jsr 484a0 <_Thread_Change_priority> <== NOT EXECUTED
the_mutex->holder,
the_mutex->Attributes.priority_ceiling,
false
);
_Thread_Enable_dispatch();
4c5b8: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED 4c5be: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c5c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
4c5c6: 4280 clrl %d0 <== NOT EXECUTED 4c5c8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c5cc: 4e5e unlk %fp <== NOT EXECUTED 4c5ce: 4e75 rts <== NOT EXECUTED
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
current = executing->current_priority;
if ( current == ceiling ) {
_ISR_Enable( *level_p );
4c5d0: 2012 movel %a2@,%d0 <== NOT EXECUTED 4c5d2: 46c0 movew %d0,%sr <== NOT EXECUTED 4c5d4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c5d8: 4280 clrl %d0 <== NOT EXECUTED 4c5da: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c5de: 4e5e unlk %fp <== NOT EXECUTED
...
000471c4 <_CORE_mutex_Surrender>:
#else
Objects_Id id __attribute__((unused)),
CORE_mutex_API_mp_support_callout api_mutex_mp_support __attribute__((unused))
#endif
)
{
471c4: 4e56 0000 linkw %fp,#0 471c8: 2f0a movel %a2,%sp@- 471ca: 246e 0008 moveal %fp@(8),%a2
Thread_Control *the_thread;
Thread_Control *holder;
holder = the_mutex->holder;
471ce: 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 ) {
471d2: 4a2a 0044 tstb %a2@(68)
471d6: 6712 beqs 471ea <_CORE_mutex_Surrender+0x26>
if ( !_Thread_Is_executing( holder ) )
471d8: b1f9 0006 0186 cmpal 60186 <_Per_CPU_Information+0xc>,%a0
471de: 670a beqs 471ea <_CORE_mutex_Surrender+0x26> <== ALWAYS TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471e0: 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;
471e4: 7003 moveq #3,%d0 <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471e6: 4e5e unlk %fp <== NOT EXECUTED 471e8: 4e75 rts <== NOT EXECUTED
return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
}
/* XXX already unlocked -- not right status */
if ( !the_mutex->nest_count )
471ea: 202a 0052 movel %a2@(82),%d0
471ee: 6758 beqs 47248 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
return CORE_MUTEX_STATUS_SUCCESSFUL;
the_mutex->nest_count--;
471f0: 5380 subql #1,%d0 471f2: 2540 0052 movel %d0,%a2@(82)
if ( the_mutex->nest_count != 0 ) {
471f6: 6650 bnes 47248 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471f8: 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 ) ||
471fc: 7202 moveq #2,%d1 471fe: b280 cmpl %d0,%d1
47200: 6750 beqs 47252 <_CORE_mutex_Surrender+0x8e>
47202: 123c 0003 moveb #3,%d1 47206: b280 cmpl %d0,%d1
47208: 6748 beqs 47252 <_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;
4720a: 42aa 005a clrl %a2@(90)
the_mutex->holder_id = 0;
4720e: 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 ) ) ) {
47212: 2f0a movel %a2,%sp@- 47214: 4eb9 0004 8cf8 jsr 48cf8 <_Thread_queue_Dequeue> 4721a: 588f addql #4,%sp 4721c: 2040 moveal %d0,%a0 4721e: 4a80 tstl %d0 47220: 6700 0090 beqw 472b2 <_CORE_mutex_Surrender+0xee>
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
47224: 7201 moveq #1,%d1
} else
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
47226: 2568 0008 005e movel %a0@(8),%a2@(94)
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
4722c: 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;
47230: 2541 0052 movel %d1,%a2@(82)
switch ( the_mutex->Attributes.discipline ) {
47234: 123c 0002 moveb #2,%d1
} else
#endif
{
the_mutex->holder = the_thread;
47238: 2548 005a movel %a0,%a2@(90)
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
4723c: b280 cmpl %d0,%d1
4723e: 6764 beqs 472a4 <_CORE_mutex_Surrender+0xe0> <== ALWAYS TAKEN
47240: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 47244: b280 cmpl %d0,%d1 <== NOT EXECUTED 47246: 6734 beqs 4727c <_CORE_mutex_Surrender+0xb8> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47248: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
4724c: 4280 clrl %d0 <== NOT EXECUTED
}
4724e: 4e5e unlk %fp <== NOT EXECUTED 47250: 4e75 rts <== NOT EXECUTED
_CORE_mutex_Pop_priority( the_mutex, holder );
if ( pop_status != CORE_MUTEX_STATUS_SUCCESSFUL )
return pop_status;
holder->resource_count--;
47252: 2028 001c movel %a0@(28),%d0 47256: 5380 subql #1,%d0 47258: 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 &&
4725c: 66ac bnes 4720a <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
4725e: 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 &&
47262: b0a8 0014 cmpl %a0@(20),%d0
47266: 67a2 beqs 4720a <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
_Thread_Change_priority( holder, holder->real_priority, true );
47268: 4878 0001 pea 1 <ADD> 4726c: 2f00 movel %d0,%sp@- 4726e: 2f08 movel %a0,%sp@- 47270: 4eb9 0004 84a0 jsr 484a0 <_Thread_Change_priority> 47276: 4fef 000c lea %sp@(12),%sp 4727a: 608e bras 4720a <_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 <
4727c: 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++;
47280: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED
if (the_mutex->Attributes.priority_ceiling <
47284: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 47288: 64be bccs 47248 <_CORE_mutex_Surrender+0x84> <== NOT EXECUTED
the_thread->current_priority){
_Thread_Change_priority(
4728a: 42a7 clrl %sp@- <== NOT EXECUTED 4728c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4728e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47290: 4eb9 0004 84a0 jsr 484a0 <_Thread_Change_priority> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47296: 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(
4729a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
4729e: 4280 clrl %d0 <== NOT EXECUTED
}
472a0: 4e5e unlk %fp <== NOT EXECUTED 472a2: 4e75 rts <== NOT EXECUTED
472a4: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
472a8: 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++;
472aa: 52a8 001c addql #1,%a0@(28)
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
472ae: 4e5e unlk %fp 472b0: 4e75 rts
}
break;
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
472b2: 7001 moveq #1,%d0 472b4: 2540 004e movel %d0,%a2@(78)
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
472b8: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
472bc: 4200 clrb %d0
}
472be: 4e5e unlk %fp
...
0005049c <_CORE_semaphore_Seize>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
_ISR_Disable( level );
5049c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
bool wait,
Watchdog_Interval timeout
)
{
504a2: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
504a6: 2279 0006 5482 moveal 65482 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
bool wait,
Watchdog_Interval timeout
)
{
504ac: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 504b0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 504b4: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 504b8: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 504bc: 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;
504c0: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Disable( level );
504c4: 40c1 movew %sr,%d1 <== NOT EXECUTED 504c6: 8081 orl %d1,%d0 <== NOT EXECUTED 504c8: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count != 0 ) {
504ca: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 504ce: 6642 bnes 50512 <_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 ) {
504d0: 4a02 tstb %d2 <== NOT EXECUTED 504d2: 6610 bnes 504e4 <_CORE_semaphore_Seize+0x48> <== NOT EXECUTED
_ISR_Enable( level );
504d4: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
504d6: 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 ); }
504d8: 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;
504dc: 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 ); }
504e0: 4e5e unlk %fp <== NOT EXECUTED 504e2: 4e75 rts <== NOT EXECUTED 504e4: 7001 moveq #1,%d0 <== NOT EXECUTED 504e6: 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;
504ea: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
504ee: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
504f2: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
504f4: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 504f8: 203c 0004 c9f4 movel #313844,%d0 <== NOT EXECUTED 504fe: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
50502: 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 );
50506: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
5050a: 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 );
5050c: 4ef9 0004 c630 jmp 4c630 <_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;
50512: 5380 subql #1,%d0 <== NOT EXECUTED 50514: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
50518: 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 ); }
5051a: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 5051e: 4e5e unlk %fp <== NOT EXECUTED
...
00047318 <_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
)
{
47318: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4731c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4731e: 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)) ) {
47322: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47324: 4eb9 0004 8cf8 jsr 48cf8 <_Thread_queue_Dequeue> <== NOT EXECUTED 4732a: 588f addql #4,%sp <== NOT EXECUTED 4732c: 4a80 tstl %d0 <== NOT EXECUTED 4732e: 670a beqs 4733a <_CORE_semaphore_Surrender+0x22> <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
47330: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
47334: 4280 clrl %d0 <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
47336: 4e5e unlk %fp <== NOT EXECUTED 47338: 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 );
4733a: 303c 0700 movew #1792,%d0 <== NOT EXECUTED 4733e: 40c1 movew %sr,%d1 <== NOT EXECUTED 47340: 8081 orl %d1,%d0 <== NOT EXECUTED 47342: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
47344: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 47348: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED 4734c: 6412 bccs 47360 <_CORE_semaphore_Surrender+0x48> <== NOT EXECUTED
the_semaphore->count += 1;
4734e: 5280 addql #1,%d0 <== NOT EXECUTED 47350: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
47354: 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 );
47356: 46c1 movew %d1,%sr <== NOT EXECUTED
}
return status;
}
47358: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4735c: 4e5e unlk %fp <== NOT EXECUTED 4735e: 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;
47360: 7004 moveq #4,%d0 <== NOT EXECUTED
_ISR_Enable( level );
47362: 46c1 movew %d1,%sr <== NOT EXECUTED 47364: 60f2 bras 47358 <_CORE_semaphore_Surrender+0x40> <== NOT EXECUTED
...
00047dd8 <_CORE_spinlock_Initialize>:
void _CORE_spinlock_Initialize(
CORE_spinlock_Control *the_spinlock,
CORE_spinlock_Attributes *the_spinlock_attributes
)
{
47dd8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47ddc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47de0: 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;
}
47de4: 4e5e unlk %fp <== NOT EXECUTED
CORE_spinlock_Control *the_spinlock,
CORE_spinlock_Attributes *the_spinlock_attributes
)
{
the_spinlock->Attributes = *the_spinlock_attributes;
47de6: 2091 movel %a1@,%a0@ <== NOT EXECUTED
the_spinlock->lock = 0;
47de8: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
the_spinlock->users = 0;
47dec: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
the_spinlock->holder = 0;
47df0: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
}
...
00047df8 <_CORE_spinlock_Release>:
CORE_spinlock_Control *the_spinlock
)
{
ISR_Level level;
_ISR_Disable( level );
47df8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
CORE_spinlock_Status _CORE_spinlock_Release(
CORE_spinlock_Control *the_spinlock
)
{
47dfe: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47e02: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
47e06: 40c1 movew %sr,%d1 <== NOT EXECUTED 47e08: 8081 orl %d1,%d0 <== NOT EXECUTED 47e0a: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* It must locked before it can be unlocked.
*/
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
47e0c: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 47e10: 660a bnes 47e1c <_CORE_spinlock_Release+0x24> <== NOT EXECUTED
_ISR_Enable( level );
47e12: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_NOT_LOCKED;
47e14: 103c 0006 moveb #6,%d0 <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
the_spinlock->holder = 0;
_ISR_Enable( level );
return CORE_SPINLOCK_SUCCESSFUL;
}
47e18: 4e5e unlk %fp <== NOT EXECUTED 47e1a: 4e75 rts <== NOT EXECUTED
}
/*
* It must locked by the current thread before it can be unlocked.
*/
if ( the_spinlock->holder != _Thread_Executing->Object.id ) {
47e1c: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED 47e20: 2279 0006 1316 moveal 61316 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 47e26: b0a9 0008 cmpl %a1@(8),%d0 <== NOT EXECUTED 47e2a: 6708 beqs 47e34 <_CORE_spinlock_Release+0x3c> <== NOT EXECUTED
_ISR_Enable( level );
47e2c: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_NOT_HOLDER;
47e2e: 7002 moveq #2,%d0 <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
the_spinlock->holder = 0;
_ISR_Enable( level );
return CORE_SPINLOCK_SUCCESSFUL;
}
47e30: 4e5e unlk %fp <== NOT EXECUTED 47e32: 4e75 rts <== NOT EXECUTED
}
/*
* Let it be unlocked.
*/
the_spinlock->users -= 1;
47e34: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 47e38: 5380 subql #1,%d0 <== NOT EXECUTED 47e3a: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
47e3e: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
the_spinlock->holder = 0;
47e42: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
_ISR_Enable( level );
47e46: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_SUCCESSFUL;
47e48: 4280 clrl %d0 <== NOT EXECUTED
}
47e4a: 4e5e unlk %fp <== NOT EXECUTED
...
00047e50 <_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 );
47e50: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
CORE_spinlock_Status _CORE_spinlock_Wait(
CORE_spinlock_Control *the_spinlock,
bool wait,
Watchdog_Interval timeout
)
{
47e56: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47e5a: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 47e5e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47e62: 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 );
47e66: 40c2 movew %sr,%d2 <== NOT EXECUTED 47e68: 8082 orl %d2,%d0 <== NOT EXECUTED 47e6a: 46c0 movew %d0,%sr <== NOT EXECUTED 47e6c: 2202 movel %d2,%d1 <== NOT EXECUTED
if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) &&
47e6e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47e72: 7801 moveq #1,%d4 <== NOT EXECUTED 47e74: b880 cmpl %d0,%d4 <== NOT EXECUTED 47e76: 6762 beqs 47eda <_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;
47e78: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 47e7c: 5280 addql #1,%d0 <== NOT EXECUTED 47e7e: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
for ( ;; ) {
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
47e82: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47e86: 6730 beqs 47eb8 <_CORE_spinlock_Wait+0x68> <== NOT EXECUTED
}
/*
* Spinlock is unavailable. If not willing to wait, return.
*/
if ( !wait ) {
47e88: 4a03 tstb %d3 <== NOT EXECUTED 47e8a: 676c beqs 47ef8 <_CORE_spinlock_Wait+0xa8> <== NOT EXECUTED 47e8c: 47f9 0004 94be lea 494be <_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 );
47e92: 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 );
47e98: 46c1 movew %d1,%sr <== NOT EXECUTED
/* An ISR could occur here */
_Thread_Enable_dispatch();
47e9a: 4e93 jsr %a3@ <== NOT EXECUTED 47e9c: 2039 0006 0e88 movel 60e88 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47ea2: 5280 addql #1,%d0 <== NOT EXECUTED 47ea4: 23c0 0006 0e88 movel %d0,60e88 <_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 );
47eaa: 2002 movel %d2,%d0 <== NOT EXECUTED 47eac: 40c1 movew %sr,%d1 <== NOT EXECUTED 47eae: 8081 orl %d1,%d0 <== NOT EXECUTED 47eb0: 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 ) {
47eb2: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 47eb6: 66e0 bnes 47e98 <_CORE_spinlock_Wait+0x48> <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_LOCKED;
the_spinlock->holder = _Thread_Executing->Object.id;
47eb8: 2079 0006 1316 moveal 61316 <_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;
47ebe: 7001 moveq #1,%d0 <== NOT EXECUTED 47ec0: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
the_spinlock->holder = _Thread_Executing->Object.id;
47ec4: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 47ec8: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
_ISR_Enable( level );
47ecc: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_SUCCESSFUL;
47ece: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47ed0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47ed6: 4e5e unlk %fp <== NOT EXECUTED 47ed8: 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) ) {
47eda: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 47ede: 2079 0006 1316 moveal 61316 <_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) &&
47ee4: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 47ee8: 668e bnes 47e78 <_CORE_spinlock_Wait+0x28> <== NOT EXECUTED
(the_spinlock->holder == _Thread_Executing->Object.id) ) {
_ISR_Enable( level );
47eea: 46c2 movew %d2,%sr <== NOT EXECUTED
return CORE_SPINLOCK_HOLDER_RELOCKING;
47eec: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47eee: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47ef4: 4e5e unlk %fp <== NOT EXECUTED 47ef6: 4e75 rts <== NOT EXECUTED
/*
* Spinlock is unavailable. If not willing to wait, return.
*/
if ( !wait ) {
the_spinlock->users -= 1;
47ef8: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 47efc: 5380 subql #1,%d0 <== NOT EXECUTED 47efe: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
_ISR_Enable( level );
47f02: 46c2 movew %d2,%sr <== NOT EXECUTED
return CORE_SPINLOCK_UNAVAILABLE;
47f04: 7005 moveq #5,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47f06: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 47f0c: 4e5e unlk %fp <== NOT EXECUTED
000475f4 <_Chain_Append_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
475f4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Append_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
475fa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 475fe: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 47602: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47604: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 47608: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
4760a: 40c2 movew %sr,%d2 <== NOT EXECUTED 4760c: 8082 orl %d2,%d0 <== NOT EXECUTED 4760e: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
47610: 2209 movel %a1,%d1 <== NOT EXECUTED 47612: 5881 addql #4,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
47614: b291 cmpl %a1@,%d1 <== NOT EXECUTED 47616: 57c0 seq %d0 <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
47618: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
4761c: 4480 negl %d0 <== NOT EXECUTED
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
4761e: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
47622: 2081 movel %d1,%a0@ <== NOT EXECUTED
tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last;
47624: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
47628: 2488 movel %a0,%a2@ <== NOT EXECUTED
was_empty = _Chain_Append_with_empty_check_unprotected( chain, node ); _ISR_Enable( level );
4762a: 46c2 movew %d2,%sr <== NOT EXECUTED
return was_empty;
}
4762c: 241f movel %sp@+,%d2 <== NOT EXECUTED 4762e: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47630: 4e5e unlk %fp <== NOT EXECUTED
00047694 <_Chain_Get_with_empty_check>:
)
{
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
47694: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Get_with_empty_check(
Chain_Control *chain,
Chain_Node **node
)
{
4769a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4769e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 476a2: 2f0b movel %a3,%sp@- <== NOT EXECUTED 476a4: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 476a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
476aa: 40c1 movew %sr,%d1 <== NOT EXECUTED 476ac: 8081 orl %d1,%d0 <== NOT EXECUTED 476ae: 46c0 movew %d0,%sr <== NOT EXECUTED
Chain_Node **the_node
)
{
bool is_empty_now = true;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
476b0: 2008 movel %a0,%d0 <== NOT EXECUTED 476b2: 5880 addql #4,%d0 <== NOT EXECUTED
Chain_Node *old_first = head->next;
476b4: 2250 moveal %a0@,%a1 <== NOT EXECUTED
if ( old_first != tail ) {
476b6: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 476b8: 671a beqs 476d4 <_Chain_Get_with_empty_check+0x40><== NOT EXECUTED
Chain_Node *new_first = old_first->next;
476ba: 2451 moveal %a1@,%a2 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
476bc: b5c0 cmpal %d0,%a2 <== NOT EXECUTED 476be: 57c0 seq %d0 <== NOT EXECUTED
Chain_Node *old_first = head->next;
if ( old_first != tail ) {
Chain_Node *new_first = old_first->next;
head->next = new_first;
476c0: 208a movel %a2,%a0@ <== NOT EXECUTED
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
476c2: 4480 negl %d0 <== NOT EXECUTED
if ( old_first != tail ) {
Chain_Node *new_first = old_first->next;
head->next = new_first;
new_first->previous = head;
476c4: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
*the_node = old_first;
476c8: 2689 movel %a1,%a3@ <== NOT EXECUTED
is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node ); _ISR_Enable( level );
476ca: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
476cc: 245f moveal %sp@+,%a2 <== NOT EXECUTED 476ce: 265f moveal %sp@+,%a3 <== NOT EXECUTED 476d0: 4e5e unlk %fp <== NOT EXECUTED 476d2: 4e75 rts <== NOT EXECUTED
is_empty_now = new_first == tail;
} else
*the_node = NULL;
476d4: 4293 clrl %a3@ <== 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;
476d6: 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 );
476d8: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
476da: 245f moveal %sp@+,%a2 <== NOT EXECUTED 476dc: 265f moveal %sp@+,%a3 <== NOT EXECUTED 476de: 4e5e unlk %fp <== NOT EXECUTED
...
0004c42c <_Chain_Initialize>:
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4c42c: 4e56 ffec linkw %fp,#-20 4c430: 202e 0010 movel %fp@(16),%d0 4c434: 48d7 043c moveml %d2-%d5/%a2,%sp@ 4c438: 246e 0008 moveal %fp@(8),%a2
size_t count = number_nodes; Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain );
4c43c: 280a movel %a2,%d4 4c43e: 5884 addql #4,%d4
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4c440: 262e 000c movel %fp@(12),%d3 4c444: 242e 0014 movel %fp@(20),%d2
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
4c448: 42aa 0004 clrl %a2@(4)
while ( count-- ) {
4c44c: 4a80 tstl %d0
4c44e: 6740 beqs 4c490 <_Chain_Initialize+0x64> <== NEVER TAKEN
{
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
Chain_Node *next = starting_address;
4c450: 2043 moveal %d3,%a0
)
{
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
4c452: 224a moveal %a2,%a1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c454: 5380 subql #1,%d0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c456: 2208 movel %a0,%d1
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c458: 2a00 movel %d0,%d5
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c45a: d282 addl %d2,%d1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
current->next = next;
4c45c: 2288 movel %a0,%a1@
next->previous = current;
4c45e: 2149 0004 movel %a1,%a0@(4)
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c462: 4a80 tstl %d0
4c464: 6714 beqs 4c47a <_Chain_Initialize+0x4e>
4c466: 2248 moveal %a0,%a1
current->next = next;
next->previous = current;
current = next;
next = (Chain_Node *)
4c468: 2041 moveal %d1,%a0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c46a: 2208 movel %a0,%d1 4c46c: 5380 subql #1,%d0 4c46e: d282 addl %d2,%d1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
current->next = next;
4c470: 2288 movel %a0,%a1@
next->previous = current;
4c472: 2149 0004 movel %a1,%a0@(4)
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c476: 4a80 tstl %d0
4c478: 66ec bnes 4c466 <_Chain_Initialize+0x3a>
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c47a: 4c05 2800 mulsl %d5,%d2
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c47e: 2043 moveal %d3,%a0 4c480: d1c2 addal %d2,%a0
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
tail->previous = current;
4c482: 2548 0008 movel %a0,%a2@(8)
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
4c486: 2084 movel %d4,%a0@
tail->previous = current; }
4c488: 4cd7 043c moveml %sp@,%d2-%d5/%a2 4c48c: 4e5e unlk %fp 4c48e: 4e75 rts
)
{
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
4c490: 204a moveal %a2,%a0 <== NOT EXECUTED
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
tail->previous = current;
4c492: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
4c496: 2084 movel %d4,%a0@ <== NOT EXECUTED
tail->previous = current; }
4c498: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED 4c49c: 4e5e unlk %fp <== NOT EXECUTED
00047750 <_Chain_Prepend_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
47750: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Prepend_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
47756: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4775a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4775e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47760: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 47764: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
47766: 40c1 movew %sr,%d1 <== NOT EXECUTED 47768: 8081 orl %d1,%d0 <== NOT EXECUTED 4776a: 46c0 movew %d0,%sr <== NOT EXECUTED
was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
return was_empty;
}
4776c: 2453 moveal %a3@,%a2 <== NOT EXECUTED
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
4776e: 224b moveal %a3,%a1 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
47770: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED
before_node = after_node->next; after_node->next = the_node;
47774: 22c8 movel %a0,%a1@+ <== NOT EXECUTED
the_node->next = before_node; before_node->previous = the_node;
47776: 2548 0004 movel %a0,%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;
4777a: 208a movel %a2,%a0@ <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
4777c: 46c1 movew %d1,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
4777e: b3ca cmpal %a2,%a1 <== NOT EXECUTED 47780: 57c0 seq %d0 <== NOT EXECUTED
return was_empty;
}
47782: 245f moveal %sp@+,%a2 <== NOT EXECUTED 47784: 4480 negl %d0 <== NOT EXECUTED 47786: 265f moveal %sp@+,%a3 <== NOT EXECUTED 47788: 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 0186 moveal 60186 <_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 00fe moveal %a2@(254),%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 0558 movel %d2,60558 <_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 9294 jsr 49294 <_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 0558 movel 60558 <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45eac: 42b9 0006 0558 clrl 60558 <_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 8438 jmp 48438 <_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 fdd8 pea 5fdd8 <_Watchdog_Ticks_chain> 45f24: 4eb9 0004 98d4 jsr 498d4 <_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 9294 jsr 49294 <_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 0558 movel 60558 <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45f4e: 42b9 0006 0558 clrl 60558 <_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 00fe moveal %a2@(254),%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 0182 tstl 60182 <_Per_CPU_Information+0x8>
45ff6: 670a beqs 46002 <_Event_Surrender+0x3e> <== ALWAYS TAKEN
45ff8: b5f9 0006 0186 cmpal 60186 <_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 85e0 jsr 485e0 <_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 9a1c jsr 49a1c <_Watchdog_Remove> 46084: 2f3c 1003 fff8 movel #268697592,%sp@- 4608a: 2f0a movel %a2,%sp@- 4608c: 4eb9 0004 85e0 jsr 485e0 <_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 0558 moveal 60558 <_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 0558 moveal 60558 <_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 0558 movel %d0,60558 <_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 89bc jsr 489bc <_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 0186 cmpl 60186 <_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 85e0 jsr 485e0 <_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 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46144: 5380 subql #1,%d0 <== NOT EXECUTED 46146: 23c0 0005 fcf8 movel %d0,5fcf8 <_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 0558 movel 60558 <_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 0558 movel %d1,60558 <_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 85e0 jsr 485e0 <_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 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4618c: 5380 subql #1,%d0 <== NOT EXECUTED 4618e: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level><== NOT EXECUTED 46194: 60b6 bras 4614c <_Event_Timeout+0x60> <== NOT EXECUTED
...
0004c680 <_Heap_Allocate_aligned_with_boundary>:
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4c680: 4e56 ffcc linkw %fp,#-52 4c684: 226e 000c moveal %fp@(12),%a1 4c688: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4c68c: 246e 0008 moveal %fp@(8),%a2
Heap_Statistics *const stats = &heap->stats; uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
4c690: 2e09 movel %a1,%d7 4c692: 5887 addql #4,%d7
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4c694: 202a 0010 movel %a2@(16),%d0
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4c698: 222e 0010 movel %fp@(16),%d1 4c69c: 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;
4c6a0: 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 ) {
4c6a4: be89 cmpl %a1,%d7 4c6a6: 6500 014e bcsw 4c7f6 <_Heap_Allocate_aligned_with_boundary+0x176>
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
4c6aa: 4a84 tstl %d4 4c6ac: 6600 0144 bnew 4c7f2 <_Heap_Allocate_aligned_with_boundary+0x172>
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c6b0: 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 ) {
4c6b4: b1ca cmpal %a2,%a0 4c6b6: 6700 013e beqw 4c7f6 <_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
4c6ba: 242e fffc movel %fp@(-4),%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c6be: 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
4c6c0: 5e82 addql #7,%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c6c2: 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 ) {
4c6c4: 7601 moveq #1,%d3 4c6c6: 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
4c6c8: 2d42 fff8 movel %d2,%fp@(-8)
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c6cc: 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 ) {
4c6d0: 2028 0004 movel %a0@(4),%d0 4c6d4: b08b cmpl %a3,%d0
4c6d6: 630e blss 4c6e6 <_Heap_Allocate_aligned_with_boundary+0x66>
if ( alignment == 0 ) {
4c6d8: 4a81 tstl %d1
4c6da: 661c bnes 4c6f8 <_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;
4c6dc: 2408 movel %a0,%d2 4c6de: 5082 addql #8,%d2
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4c6e0: 4a82 tstl %d2 4c6e2: 6600 00de bnew 4c7c2 <_Heap_Allocate_aligned_with_boundary+0x142>
break;
}
block = block->next;
4c6e6: 2003 movel %d3,%d0 4c6e8: 5280 addql #1,%d0 4c6ea: 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 ) {
4c6ee: b1ca cmpal %a2,%a0 4c6f0: 6700 0110 beqw 4c802 <_Heap_Allocate_aligned_with_boundary+0x182>
4c6f4: 2600 movel %d0,%d3 <== NOT EXECUTED 4c6f6: 60d8 bras 4c6d0 <_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;
4c6f8: 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;
4c6fa: 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;
4c6fe: c087 andl %d7,%d0
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c700: 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;
4c704: 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;
4c706: 2a2e fff8 movel %fp@(-8),%d5 4c70a: 9a8c subl %a4,%d5
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
uintptr_t alloc_begin = alloc_end - alloc_size;
4c70c: 242e fff4 movel %fp@(-12),%d2 4c710: d480 addl %d0,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c712: 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
4c714: d085 addl %d5,%d0 4c716: 4c41 6005 remul %d1,%d5,%d6 4c71a: 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 ) {
4c71c: b480 cmpl %d0,%d2
4c71e: 630a blss 4c72a <_Heap_Allocate_aligned_with_boundary+0xaa><== ALWAYS TAKEN
4c720: 2a00 movel %d0,%d5 <== NOT EXECUTED 4c722: 4c41 5002 remul %d1,%d2,%d5 <== NOT EXECUTED 4c726: 9082 subl %d2,%d0 <== NOT EXECUTED 4c728: 2400 movel %d0,%d2 <== NOT EXECUTED
}
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
4c72a: 4a84 tstl %d4
4c72c: 676a beqs 4c798 <_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;
4c72e: 2002 movel %d2,%d0 <== NOT EXECUTED 4c730: d089 addl %a1,%d0 <== NOT EXECUTED 4c732: 2c00 movel %d0,%d6 <== NOT EXECUTED 4c734: 4c44 6005 remul %d4,%d5,%d6 <== NOT EXECUTED 4c738: 2c00 movel %d0,%d6 <== NOT EXECUTED 4c73a: 9c85 subl %d5,%d6 <== NOT EXECUTED 4c73c: 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 ) {
4c73e: bc82 cmpl %d2,%d6 <== NOT EXECUTED 4c740: 6356 blss 4c798 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED 4c742: bc80 cmpl %d0,%d6 <== NOT EXECUTED 4c744: 6452 bccs 4c798 <_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;
4c746: 2c0d movel %a5,%d6 <== NOT EXECUTED 4c748: 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 ) {
4c74a: ba86 cmpl %d6,%d5 <== NOT EXECUTED 4c74c: 6598 bcss 4c6e6 <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4c74e: 2405 movel %d5,%d2 <== NOT EXECUTED 4c750: 9489 subl %a1,%d2 <== NOT EXECUTED 4c752: 2a02 movel %d2,%d5 <== NOT EXECUTED 4c754: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED 4c758: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4c75a: 2002 movel %d2,%d0 <== NOT EXECUTED 4c75c: d089 addl %a1,%d0 <== NOT EXECUTED 4c75e: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c760: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED 4c764: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c766: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c768: 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 ) {
4c76a: be82 cmpl %d2,%d7 <== NOT EXECUTED 4c76c: 632a blss 4c798 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED 4c76e: be80 cmpl %d0,%d7 <== NOT EXECUTED 4c770: 6426 bccs 4c798 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
if ( boundary_line < boundary_floor ) {
4c772: ba86 cmpl %d6,%d5 <== NOT EXECUTED 4c774: 6500 ff70 bcsw 4c6e6 <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4c778: 2405 movel %d5,%d2 <== NOT EXECUTED 4c77a: 9489 subl %a1,%d2 <== NOT EXECUTED 4c77c: 2a02 movel %d2,%d5 <== NOT EXECUTED 4c77e: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED 4c782: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4c784: 2002 movel %d2,%d0 <== NOT EXECUTED 4c786: d089 addl %a1,%d0 <== NOT EXECUTED 4c788: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c78a: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED 4c78e: 2e00 movel %d0,%d7 <== NOT EXECUTED 4c790: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c792: 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 ) {
4c794: be82 cmpl %d2,%d7 <== NOT EXECUTED 4c796: 62d6 bhis 4c76e <_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 ) {
4c798: b48d cmpl %a5,%d2 4c79a: 6500 ff4a bcsw 4c6e6 <_Heap_Allocate_aligned_with_boundary+0x66> 4c79e: 2e2e fffc movel %fp@(-4),%d7 4c7a2: 2c02 movel %d2,%d6 4c7a4: 70f8 moveq #-8,%d0 4c7a6: 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);
4c7a8: d082 addl %d2,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c7aa: 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;
4c7ae: 9085 subl %d5,%d0
if ( free_size >= min_block_size || free_size == 0 ) {
4c7b0: b08c cmpl %a4,%d0 4c7b2: 6400 ff2c bccw 4c6e0 <_Heap_Allocate_aligned_with_boundary+0x60>
4c7b6: 4a80 tstl %d0 <== NOT EXECUTED 4c7b8: 6600 ff2c bnew 4c6e6 <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4c7bc: 4a82 tstl %d2 <== NOT EXECUTED 4c7be: 6700 ff26 beqw 4c6e6 <_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 );
4c7c2: 2f09 movel %a1,%sp@-
search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
} while ( search_again );
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
4c7c4: 52aa 0048 addql #1,%a2@(72)
stats->searches += search_count;
4c7c8: d7aa 004c addl %d3,%a2@(76)
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4c7cc: 2f02 movel %d2,%sp@- 4c7ce: 2f08 movel %a0,%sp@- 4c7d0: 2f0a movel %a2,%sp@- 4c7d2: 4eb9 0004 7752 jsr 47752 <_Heap_Block_allocate> 4c7d8: 4fef 0010 lea %sp@(16),%sp 4c7dc: 2002 movel %d2,%d0
boundary
);
}
/* Statistics */
if ( stats->max_search < search_count ) {
4c7de: b6aa 0044 cmpl %a2@(68),%d3
4c7e2: 6304 blss 4c7e8 <_Heap_Allocate_aligned_with_boundary+0x168>
stats->max_search = search_count;
4c7e4: 2543 0044 movel %d3,%a2@(68)
}
return (void *) alloc_begin;
}
4c7e8: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 4c7ee: 4e5e unlk %fp 4c7f0: 4e75 rts
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
4c7f2: b889 cmpl %a1,%d4 <== NOT EXECUTED 4c7f4: 6410 bccs 4c806 <_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 ) {
4c7f6: 4280 clrl %d0 <== NOT EXECUTED
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c7f8: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c7fe: 4e5e unlk %fp <== NOT EXECUTED 4c800: 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 ) {
4c802: 4280 clrl %d0 4c804: 60d8 bras 4c7de <_Heap_Allocate_aligned_with_boundary+0x15e>
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
return NULL;
}
if ( alignment == 0 ) {
4c806: 4a81 tstl %d1 <== NOT EXECUTED 4c808: 6600 fea6 bnew 4c6b0 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
alignment = page_size;
4c80c: 2200 movel %d0,%d1 <== NOT EXECUTED 4c80e: 6000 fea0 braw 4c6b0 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
...
00047752 <_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;
47752: 70fe moveq #-2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
47754: 4e56 ffe0 linkw %fp,#-32 47758: 206e 000c moveal %fp@(12),%a0 4775c: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47760: 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;
47764: 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;
47766: c082 andl %d2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
47768: 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);
4776c: 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;
47770: 2641 moveal %d1,%a3 47772: 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;
47774: 2a0b movel %a3,%d5 47776: 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;
47778: c8ac 0004 andl %a4@(4),%d4
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
4777c: 246e 0008 moveal %fp@(8),%a2 47780: 262e 0014 movel %fp@(20),%d3
Heap_Block *free_list_anchor = NULL;
_HAssert( alloc_area_begin <= alloc_begin );
if ( _Heap_Is_free( block ) ) {
47784: 4a84 tstl %d4 47786: 6600 0090 bnew 47818 <_Heap_Block_allocate+0xc6>
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
4778a: 2828 0008 movel %a0@(8),%d4
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
next->prev = prev;
4778e: 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;
47790: 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;
47794: 2344 0008 movel %d4,%a1@(8)
next->prev = prev;
47798: 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 );
4779c: 91aa 0030 subl %d0,%a2@(48)
free_list_anchor = block->prev;
_Heap_Free_list_remove( block );
/* Statistics */
--stats->free_blocks;
477a0: 53aa 0038 subql #1,%a2@(56)
++stats->used_blocks;
477a4: 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 ) {
477a8: 202a 0010 movel %a2@(16),%d0 477ac: b085 cmpl %d5,%d0
477ae: 6272 bhis 47822 <_Heap_Block_allocate+0xd0>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
477b0: 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);
477b4: 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;
477b6: 200b movel %a3,%d0 477b8: 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;
477ba: 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;
477be: 99cb subal %a3,%a4
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
if ( _Heap_Is_prev_used( block ) ) {
477c0: 0802 0000 btst #0,%d2
477c4: 6774 beqs 4783a <_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;
477c6: 2a69 0008 moveal %a1@(8),%a5
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477ca: 7401 moveq #1,%d2
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
477cc: 2208 movel %a0,%d1
new_block->next = next;
477ce: 214d 0008 movel %a5,%a0@(8)
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477d2: 8480 orl %d0,%d2
new_block->prev = block_before;
477d4: 2149 000c movel %a1,%a0@(12)
block_before->next = new_block;
477d8: 2348 0008 movel %a0,%a1@(8)
next->prev = new_block;
477dc: 2b48 000c movel %a0,%a5@(12)
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
477e0: 52aa 0038 addql #1,%a2@(56)
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477e4: 2142 0004 movel %d2,%a0@(4)
new_block->prev_size = block_size;
477e8: 2680 movel %d0,%a3@
new_block->size_and_flag = new_block_size;
477ea: 274c 0004 movel %a4,%a3@(4)
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
477ee: 2f03 movel %d3,%sp@- 477f0: 2f01 movel %d1,%sp@- 477f2: 2f0b movel %a3,%sp@- 477f4: 2f0a movel %a2,%sp@- 477f6: 4eba fcb0 jsr %pc@(474a8 <_Heap_Block_split>) 477fa: 4fef 0010 lea %sp@(16),%sp
alloc_size
);
}
/* Statistics */
if ( stats->min_free_size > stats->free_size ) {
477fe: 202a 0030 movel %a2@(48),%d0 47802: b0aa 0034 cmpl %a2@(52),%d0
47806: 6404 bccs 4780c <_Heap_Block_allocate+0xba> <== NEVER TAKEN
stats->min_free_size = stats->free_size;
47808: 2540 0034 movel %d0,%a2@(52)
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
4780c: 200b movel %a3,%d0 4780e: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 47814: 4e5e unlk %fp 47816: 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 ) {
47818: 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 );
4781c: 224a moveal %a2,%a1 <== NOT EXECUTED
}
if ( alloc_area_offset < heap->page_size ) {
4781e: b085 cmpl %d5,%d0 <== NOT EXECUTED 47820: 638e blss 477b0 <_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 );
47822: 2645 moveal %d5,%a3 47824: 4873 3800 pea %a3@(00000000,%d3:l) 47828: 2648 moveal %a0,%a3 4782a: 2f09 movel %a1,%sp@- 4782c: 2f08 movel %a0,%sp@- 4782e: 2f0a movel %a2,%sp@- 47830: 4eba fc76 jsr %pc@(474a8 <_Heap_Block_split>) 47834: 4fef 0010 lea %sp@(16),%sp 47838: 60c4 bras 477fe <_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);
4783a: 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;
4783c: 74fe moveq #-2,%d2 <== NOT EXECUTED
} else {
Heap_Block *const prev_block = _Heap_Prev_block( block );
uintptr_t const prev_block_size = _Heap_Block_size( prev_block );
block = prev_block;
block_size += prev_block_size;
4783e: 2209 movel %a1,%d1 <== NOT EXECUTED 47840: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED 47844: d082 addl %d2,%d0 <== NOT EXECUTED
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
47846: 7401 moveq #1,%d2 <== NOT EXECUTED 47848: 8480 orl %d0,%d2 <== NOT EXECUTED
new_block->prev_size = block_size;
4784a: 2680 movel %d0,%a3@ <== NOT EXECUTED
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4784c: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
new_block->prev_size = block_size;
new_block->size_and_flag = new_block_size;
47850: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
47854: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47856: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47858: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4785a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4785c: 4eba fc4a jsr %pc@(474a8 <_Heap_Block_split>) <== NOT EXECUTED 47860: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47864: 6098 bras 477fe <_Heap_Block_allocate+0xac> <== NOT EXECUTED
...
000474a8 <_Heap_Block_split>:
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
474a8: 4e56 ffe4 linkw %fp,#-28 474ac: 226e 0008 moveal %fp@(8),%a1 474b0: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ 474b4: 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;
474b8: 76fe moveq #-2,%d3
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
474ba: 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;
474be: 2669 0014 moveal %a1@(20),%a3
uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE;
474c2: 220b movel %a3,%d1 474c4: 5181 subql #8,%d1
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
474c6: 286e 0010 moveal %fp@(16),%a4
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
474ca: 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;
474ce: 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;
474d2: 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;
474d4: b280 cmpl %d0,%d1
474d6: 6302 blss 474da <_Heap_Block_split+0x32>
474d8: 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 =
474da: 5080 addql #8,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
474dc: 2a00 movel %d0,%d5 474de: 4c42 5001 remul %d2,%d1,%d5
if ( remainder != 0 ) {
474e2: 4a81 tstl %d1
474e4: 6766 beqs 4754c <_Heap_Block_split+0xa4>
return value - remainder + alignment;
474e6: d480 addl %d0,%d2 474e8: 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;
474ea: 2203 movel %d3,%d1 474ec: 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);
474ee: 41f2 3800 lea %a2@(00000000,%d3:l),%a0 474f2: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
474f4: 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 ) {
474f6: b7c1 cmpal %d1,%a3
474f8: 6264 bhis 4755e <_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;
474fa: 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);
474fc: 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;
47500: 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;
47502: 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;
47504: 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;
47506: 70fe moveq #-2,%d0
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
block->size_and_flag = size | flag;
47508: 8484 orl %d4,%d2 4750a: 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;
4750e: 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;
47512: 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;
47516: c2b0 0804 andl %a0@(00000004,%d0:l),%d1
if ( _Heap_Is_used( next_block ) ) {
4751a: 6750 beqs 4756c <_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;
4751c: 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;
47520: 7001 moveq #1,%d0
new_block->next = next;
new_block->prev = block_before;
47522: 274c 000c movel %a4,%a3@(12) 47526: 8083 orl %d3,%d0
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
47528: 274a 0008 movel %a2,%a3@(8)
new_block->prev = block_before; block_before->next = new_block; next->prev = new_block;
4752c: 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;
47530: 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;
47534: 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;
47538: 2740 0004 movel %d0,%a3@(4)
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4753c: 70fe moveq #-2,%d0 4753e: 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;
47542: 2083 movel %d3,%a0@
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
}
}
47544: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4 47548: 4e5e unlk %fp 4754a: 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;
4754c: 2203 movel %d3,%d1 4754e: 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);
47550: 41f2 3800 lea %a2@(00000000,%d3:l),%a0
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
47554: 2400 movel %d0,%d2 47556: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
47558: 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 ) {
4755a: b7c1 cmpal %d1,%a3
4755c: 639c blss 474fa <_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;
4755e: 7001 moveq #1,%d0
} }
47560: 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;
47564: 81a8 0004 orl %d0,%a0@(4)
} }
47568: 4e5e unlk %fp 4756a: 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;
4756c: 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;
4756e: 7001 moveq #1,%d0 <== NOT EXECUTED
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47570: 2268 0008 moveal %a0@(8),%a1 <== NOT EXECUTED 47574: 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);
47578: 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;
4757c: 8083 orl %d3,%d0 <== NOT EXECUTED
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
4757e: 2749 0008 movel %a1,%a3@(8) <== NOT EXECUTED
new_block->prev = prev;
47582: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED 47586: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4758a: 70fe moveq #-2,%d0 <== NOT EXECUTED
next->prev = new_block;
prev->next = new_block;
4758c: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED 47590: 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;
47594: 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;
47598: 2083 movel %d3,%a0@ <== NOT EXECUTED 4759a: 60a8 bras 47544 <_Heap_Block_split+0x9c> <== NOT EXECUTED
0004cb3c <_Heap_Extend>:
Heap_Control *heap,
void *extend_area_begin_ptr,
uintptr_t extend_area_size,
uintptr_t *extended_size_ptr
)
{
4cb3c: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 4cb40: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 4cb44: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4cb48: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4cb4c: 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;
4cb50: 2602 movel %d2,%d3 <== NOT EXECUTED 4cb52: 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;
4cb54: 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;
4cb58: 282a 0010 movel %a2@(16),%d4 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
4cb5c: 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;
4cb60: 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;
4cb64: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
Heap_Block *extend_last_block = NULL;
4cb68: 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 ) {
4cb6c: b682 cmpl %d2,%d3 <== NOT EXECUTED 4cb6e: 640c bccs 4cb7c <_Heap_Extend+0x40> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cb70: 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;
4cb76: 4200 clrb %d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cb78: 4e5e unlk %fp <== NOT EXECUTED 4cb7a: 4e75 rts <== NOT EXECUTED
if ( extend_area_end < extend_area_begin ) {
return false;
}
extend_area_ok = _Heap_Get_first_and_last_block(
4cb7c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4cb80: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cb84: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4cb86: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cb88: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cb8a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cb8c: 4eb9 0004 78e8 jsr 478e8 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&extend_first_block,
&extend_last_block
);
if (!extend_area_ok ) {
4cb92: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4cb96: 4a00 tstb %d0 <== NOT EXECUTED 4cb98: 67d6 beqs 4cb70 <_Heap_Extend+0x34> <== NOT EXECUTED 4cb9a: 2045 moveal %d5,%a0 <== NOT EXECUTED 4cb9c: 9bcd subal %a5,%a5 <== NOT EXECUTED 4cb9e: 97cb subal %a3,%a3 <== NOT EXECUTED 4cba0: 99cc subal %a4,%a4 <== NOT EXECUTED 4cba2: 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;
4cba6: ba88 cmpl %a0,%d5 <== NOT EXECUTED 4cba8: 6700 014a beqw 4ccf4 <_Heap_Extend+0x1b8> <== NOT EXECUTED 4cbac: 2208 movel %a0,%d1 <== NOT EXECUTED
uintptr_t const sub_area_end = start_block->prev_size;
4cbae: 2010 movel %a0@,%d0 <== NOT EXECUTED
Heap_Block *const end_block =
_Heap_Block_of_alloc_area( sub_area_end, page_size );
if (
4cbb0: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cbb2: 6304 blss 4cbb8 <_Heap_Extend+0x7c> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
4cbb4: b681 cmpl %d1,%d3 <== NOT EXECUTED 4cbb6: 62b8 bhis 4cb70 <_Heap_Extend+0x34> <== NOT EXECUTED
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4cbb8: b681 cmpl %d1,%d3 <== NOT EXECUTED 4cbba: 6700 0132 beqw 4ccee <_Heap_Extend+0x1b2> <== NOT EXECUTED
merge_below_block = start_block;
} else if ( extend_area_end < sub_area_end ) {
4cbbe: b083 cmpl %d3,%d0 <== NOT EXECUTED 4cbc0: 6304 blss 4cbc6 <_Heap_Extend+0x8a> <== NOT EXECUTED 4cbc2: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED 4cbc6: 2e00 movel %d0,%d7 <== NOT EXECUTED 4cbc8: 2240 moveal %d0,%a1 <== NOT EXECUTED 4cbca: 5189 subql #8,%a1 <== NOT EXECUTED 4cbcc: 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);
4cbd0: 93c1 subal %d1,%a1 <== NOT EXECUTED
link_below_block = start_block;
}
if ( sub_area_end == extend_area_begin ) {
4cbd2: b480 cmpl %d0,%d2 <== NOT EXECUTED 4cbd4: 6700 0100 beqw 4ccd6 <_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 ) {
4cbd8: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cbda: 6402 bccs 4cbde <_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 )
4cbdc: 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;
4cbde: 70fe moveq #-2,%d0 <== NOT EXECUTED 4cbe0: 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);
4cbe4: 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 );
4cbe8: b1c5 cmpal %d5,%a0 <== NOT EXECUTED 4cbea: 66ba bnes 4cba6 <_Heap_Extend+0x6a> <== NOT EXECUTED
if ( extend_area_begin < heap->area_begin ) {
4cbec: b4aa 0018 cmpl %a2@(24),%d2 <== NOT EXECUTED 4cbf0: 6500 010a bcsw 4ccfc <_Heap_Extend+0x1c0> <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
4cbf4: b6aa 001c cmpl %a2@(28),%d3 <== NOT EXECUTED 4cbf8: 6304 blss 4cbfe <_Heap_Extend+0xc2> <== NOT EXECUTED
heap->area_end = extend_area_end;
4cbfa: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4cbfe: 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 =
4cc02: 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;
4cc04: 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;
4cc06: 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 =
4cc0a: 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;
4cc0c: 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;
4cc0e: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cc10: 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;
4cc14: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4cc16: 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 ) {
4cc1a: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 4cc1e: 6400 0104 bccw 4cd24 <_Heap_Extend+0x1e8> <== NOT EXECUTED
heap->first_block = extend_first_block;
4cc22: 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 ) {
4cc26: 4a8c tstl %a4 <== NOT EXECUTED 4cc28: 6700 0148 beqw 4cd72 <_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;
4cc2c: 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 );
4cc30: 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;
4cc32: 2802 movel %d2,%d4 <== NOT EXECUTED 4cc34: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED
if ( remainder != 0 ) {
4cc38: 4a81 tstl %d1 <== NOT EXECUTED 4cc3a: 6704 beqs 4cc40 <_Heap_Extend+0x104> <== NOT EXECUTED
return value - remainder + alignment;
4cc3c: d480 addl %d0,%d2 <== NOT EXECUTED 4cc3e: 9481 subl %d1,%d2 <== NOT EXECUTED
uintptr_t const new_first_block_begin =
4cc40: 2042 moveal %d2,%a0 <== NOT EXECUTED 4cc42: 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 =
4cc44: 200c movel %a4,%d0 <== NOT EXECUTED 4cc46: 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;
4cc48: 7201 moveq #1,%d1 <== NOT EXECUTED 4cc4a: 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;
4cc4c: 2094 movel %a4@,%a0@ <== NOT EXECUTED
new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
4cc4e: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Free_block( heap, new_first_block );
4cc52: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cc54: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cc56: 4eba fec8 jsr %pc@(4cb20 <_Heap_Free_block>) <== NOT EXECUTED 4cc5a: 508f addql #8,%sp <== NOT EXECUTED
link_below_block,
extend_last_block
);
}
if ( merge_above_block != NULL ) {
4cc5c: 4a8b tstl %a3 <== NOT EXECUTED 4cc5e: 6700 00d4 beqw 4cd34 <_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,
4cc62: 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(
4cc64: 968b subl %a3,%d3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4cc66: 2203 movel %d3,%d1 <== NOT EXECUTED 4cc68: 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;
4cc6e: 7201 moveq #1,%d1 <== NOT EXECUTED 4cc70: 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)
4cc72: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED 4cc76: 9083 subl %d3,%d0 <== NOT EXECUTED
| HEAP_PREV_BLOCK_USED;
4cc78: 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;
4cc7a: 7001 moveq #1,%d0 <== NOT EXECUTED 4cc7c: 2781 3804 movel %d1,%a3@(00000004,%d3:l) <== NOT EXECUTED 4cc80: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4cc84: 8680 orl %d0,%d3 <== NOT EXECUTED 4cc86: 2743 0004 movel %d3,%a3@(4) <== NOT EXECUTED
_Heap_Block_set_size( last_block, last_block_new_size );
_Heap_Free_block( heap, last_block );
4cc8a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4cc8c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cc8e: 4eba fe90 jsr %pc@(4cb20 <_Heap_Free_block>) <== NOT EXECUTED 4cc92: 508f addql #8,%sp <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4cc94: 4a8c tstl %a4 <== NOT EXECUTED 4cc96: 6700 00c4 beqw 4cd5c <_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;
4cc9a: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED 4cc9e: 9086 subl %d6,%d0 <== NOT EXECUTED 4cca0: 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;
4cca2: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cca4: 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(
4cca8: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED 4ccac: 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;
4ccae: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4ccb2: 8280 orl %d0,%d1 <== NOT EXECUTED 4ccb4: 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;
4ccb8: ddaa 002c addl %d6,%a2@(44) <== NOT EXECUTED
if ( extended_size_ptr != NULL )
4ccbc: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED 4ccc0: 6700 00ca beqw 4cd8c <_Heap_Extend+0x250> <== NOT EXECUTED
*extended_size_ptr = extended_size;
4ccc4: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4ccc8: 2086 movel %d6,%a0@ <== NOT EXECUTED
return true;
}
4ccca: 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;
4ccd0: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4ccd2: 4e5e unlk %fp <== NOT EXECUTED 4ccd4: 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;
4ccd6: 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 )
4ccd8: 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;
4ccda: 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;
4ccde: 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);
4cce0: 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 );
4cce4: b1c5 cmpal %d5,%a0 <== NOT EXECUTED 4cce6: 6600 febe bnew 4cba6 <_Heap_Extend+0x6a> <== NOT EXECUTED 4ccea: 6000 ff00 braw 4cbec <_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 ) {
4ccee: 2848 moveal %a0,%a4 <== NOT EXECUTED 4ccf0: 6000 fed4 braw 4cbc6 <_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;
4ccf4: 222a 0018 movel %a2@(24),%d1 <== NOT EXECUTED 4ccf8: 6000 feb4 braw 4cbae <_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;
4ccfc: 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 =
4cd00: 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;
4cd02: 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;
4cd04: 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 =
4cd08: 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;
4cd0a: 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;
4cd0e: 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;
4cd10: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cd12: 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;
4cd16: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4cd18: 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 ) {
4cd1c: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 4cd20: 6500 ff00 bcsw 4cc22 <_Heap_Extend+0xe6> <== NOT EXECUTED
heap->first_block = extend_first_block;
} else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
4cd24: b3ea 0024 cmpal %a2@(36),%a1 <== NOT EXECUTED 4cd28: 6300 fefc blsw 4cc26 <_Heap_Extend+0xea> <== NOT EXECUTED
heap->last_block = extend_last_block;
4cd2c: 2549 0024 movel %a1,%a2@(36) <== NOT EXECUTED 4cd30: 6000 fef4 braw 4cc26 <_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 ) {
4cd34: 4a8d tstl %a5 <== NOT EXECUTED 4cd36: 6700 ff5c beqw 4cc94 <_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;
4cd3a: 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 );
4cd3c: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4cd40: 928d subl %a5,%d1 <== NOT EXECUTED 4cd42: 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(
4cd46: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4cd4a: 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;
4cd4c: 7001 moveq #1,%d0 <== NOT EXECUTED 4cd4e: 2b41 0004 movel %d1,%a5@(4) <== NOT EXECUTED 4cd52: 81a8 0004 orl %d0,%a0@(4) <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4cd56: 4a8c tstl %a4 <== NOT EXECUTED 4cd58: 6600 ff40 bnew 4cc9a <_Heap_Extend+0x15e> <== NOT EXECUTED 4cd5c: 4a8b tstl %a3 <== NOT EXECUTED 4cd5e: 6600 ff3a bnew 4cc9a <_Heap_Extend+0x15e> <== NOT EXECUTED
_Heap_Free_block( heap, extend_first_block );
4cd62: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4cd66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cd68: 4eba fdb6 jsr %pc@(4cb20 <_Heap_Free_block>) <== NOT EXECUTED 4cd6c: 508f addql #8,%sp <== NOT EXECUTED 4cd6e: 6000 ff2a braw 4cc9a <_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 ) {
4cd72: 4aae fff4 tstl %fp@(-12) <== NOT EXECUTED 4cd76: 6700 fee4 beqw 4cc5c <_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;
4cd7a: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 4cd7e: 7201 moveq #1,%d1 <== NOT EXECUTED 4cd80: 9089 subl %a1,%d0 <== NOT EXECUTED 4cd82: 8280 orl %d0,%d1 <== NOT EXECUTED 4cd84: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED 4cd88: 6000 fed2 braw 4cc5c <_Heap_Extend+0x120> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cd8c: 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;
4cd92: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4cd94: 4e5e unlk %fp <== NOT EXECUTED
0004c814 <_Heap_Free>:
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
{
4c814: 4e56 ffe8 linkw %fp,#-24 4c818: 202e 000c movel %fp@(12),%d0 4c81c: 2040 moveal %d0,%a0 4c81e: 5188 subql #8,%a0 4c820: 226e 0008 moveal %fp@(8),%a1 4c824: 4c69 0001 0010 remul %a1@(16),%d1,%d0 4c82a: 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
4c82e: 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);
4c832: 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;
4c834: b088 cmpl %a0,%d0 4c836: 6200 0098 bhiw 4c8d0 <_Heap_Free+0xbc> 4c83a: 2229 0024 movel %a1@(36),%d1 4c83e: b288 cmpl %a0,%d1 4c840: 6500 008e bcsw 4c8d0 <_Heap_Free+0xbc>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c844: 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;
4c848: 74fe moveq #-2,%d2 4c84a: 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);
4c84c: 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;
4c850: b5c0 cmpal %d0,%a2
4c852: 657c bcss 4c8d0 <_Heap_Free+0xbc> <== NEVER TAKEN
4c854: b5c1 cmpal %d1,%a2
4c856: 6278 bhis 4c8d0 <_Heap_Free+0xbc> <== NEVER TAKEN
4c858: 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 ) ) {
4c85c: 0804 0000 btst #0,%d4
4c860: 676e beqs 4c8d0 <_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;
4c862: 7afe moveq #-2,%d5 4c864: 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 ));
4c866: b5c1 cmpal %d1,%a2 4c868: 6700 00f6 beqw 4c960 <_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;
4c86c: 7a01 moveq #1,%d5 4c86e: cab2 4804 andl %a2@(00000004,%d4:l),%d5
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
4c872: 57c5 seq %d5 4c874: 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 ) ) {
4c876: 0803 0000 btst #0,%d3
4c87a: 665e bnes 4c8da <_Heap_Free+0xc6>
uintptr_t const prev_size = block->prev_size;
4c87c: 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);
4c87e: 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;
4c880: b1c0 cmpal %d0,%a0
4c882: 654c bcss 4c8d0 <_Heap_Free+0xbc> <== NEVER TAKEN
4c884: b1c1 cmpal %d1,%a0
4c886: 6248 bhis 4c8d0 <_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;
4c888: 7001 moveq #1,%d0 4c88a: 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) ) {
4c88e: 6740 beqs 4c8d0 <_Heap_Free+0xbc> <== NEVER TAKEN
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
4c890: 4a05 tstb %d5 4c892: 6700 00d2 beqw 4c966 <_Heap_Free+0x152>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c896: 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;
4c89a: d882 addl %d2,%d4 <== NOT EXECUTED 4c89c: 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;
4c89e: 7001 moveq #1,%d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8a0: 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;
4c8a4: 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;
4c8a8: 8083 orl %d3,%d0 <== NOT EXECUTED
next->prev = prev;
4c8aa: 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;
4c8ae: 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;
4c8b2: 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;
4c8b6: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c8ba: 53a9 0040 subql #1,%a1@(64) <== NOT EXECUTED
++stats->frees;
4c8be: 52a9 0050 addql #1,%a1@(80) <== NOT EXECUTED
stats->free_size += block_size;
4c8c2: d5a9 0030 addl %d2,%a1@(48) <== NOT EXECUTED
return( true );
4c8c6: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4c8c8: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 4c8cc: 4e5e unlk %fp 4c8ce: 4e75 rts
4c8d0: 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 );
4c8d4: 4200 clrb %d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8d6: 4e5e unlk %fp <== NOT EXECUTED 4c8d8: 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 */
4c8da: 4a05 tstb %d5
4c8dc: 6736 beqs 4c914 <_Heap_Free+0x100>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8de: 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;
4c8e2: d882 addl %d2,%d4
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c8e4: 7001 moveq #1,%d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c8e6: 246a 000c moveal %a2@(12),%a2
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
4c8ea: 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;
4c8ee: 8084 orl %d4,%d0
new_block->prev = prev;
4c8f0: 214a 000c movel %a2,%a0@(12)
next_block = _Heap_Block_at( block, size );
next_block->prev_size = size;
4c8f4: 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;
4c8f8: 2140 0004 movel %d0,%a0@(4)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c8fc: 7001 moveq #1,%d0
next->prev = new_block;
prev->next = new_block;
4c8fe: 2548 0008 movel %a0,%a2@(8)
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
4c902: 2748 000c movel %a0,%a3@(12)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c906: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c90a: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c90e: d5a9 0030 addl %d2,%a1@(48) 4c912: 60b4 bras 4c8c8 <_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;
4c914: 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;
4c918: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c91a: 7afe moveq #-2,%d5
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4c91c: 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;
4c91e: 2669 0008 moveal %a1@(8),%a3
new_block->next = next;
new_block->prev = block_before;
4c922: 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;
4c926: 8282 orl %d2,%d1
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4c928: 214b 0008 movel %a3,%a0@(8) 4c92c: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c930: cbaa 0004 andl %d5,%a2@(4)
new_block->prev = block_before; block_before->next = new_block; next->prev = new_block;
4c934: 2748 000c movel %a0,%a3@(12)
next_block->prev_size = block_size;
4c938: 2482 movel %d2,%a2@
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
4c93a: 2348 0008 movel %a0,%a1@(8)
/* Statistics */
++stats->free_blocks;
4c93e: 2340 0038 movel %d0,%a1@(56)
if ( stats->max_free_blocks < stats->free_blocks ) {
4c942: b0a9 003c cmpl %a1@(60),%d0 4c946: 6300 ff72 blsw 4c8ba <_Heap_Free+0xa6>
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c94a: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c94e: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c952: 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;
4c956: 2340 003c movel %d0,%a1@(60)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c95a: 7001 moveq #1,%d0 4c95c: 6000 ff6a braw 4c8c8 <_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 ));
4c960: 4205 clrb %d5 <== NOT EXECUTED 4c962: 6000 ff12 braw 4c876 <_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;
4c966: d682 addl %d2,%d3
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c968: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c96a: 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;
4c96c: 8283 orl %d3,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
4c96e: 2483 movel %d3,%a2@
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c970: 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;
4c972: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c976: cbaa 0004 andl %d5,%a2@(4)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c97a: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c97e: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c982: d5a9 0030 addl %d2,%a1@(48) 4c986: 6000 ff40 braw 4c8c8 <_Heap_Free+0xb4>
...
0004cb20 <_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 )
{
4cb20: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cb24: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Heap_Statistics *const stats = &heap->stats;
/* Statistics */
++stats->used_blocks;
4cb28: 52a8 0040 addql #1,%a0@(64) <== NOT EXECUTED
--stats->frees;
4cb2c: 53a8 0050 subql #1,%a0@(80) <== NOT EXECUTED
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4cb30: 50ae 000c addql #8,%fp@(12) <== NOT EXECUTED
}
4cb34: 4e5e unlk %fp <== NOT EXECUTED
/* Statistics */
++stats->used_blocks;
--stats->frees;
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4cb36: 4ef9 0004 cd98 jmp 4cd98 <_Heap_Free> <== NOT EXECUTED
0004759c <_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
)
{
4759c: 4e56 fff0 linkw %fp,#-16 475a0: 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 );
475a4: 2001 movel %d1,%d0 475a6: 5080 addql #8,%d0
uintptr_t page_size,
uintptr_t min_block_size,
Heap_Block **first_block_ptr,
Heap_Block **last_block_ptr
)
{
475a8: 48d7 003c moveml %d2-%d5,%sp@ 475ac: 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;
475b0: 2a00 movel %d0,%d5 475b2: 262e 000c movel %fp@(12),%d3
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
475b6: 2043 moveal %d3,%a0 475b8: d1c1 addal %d1,%a0 475ba: 4c42 5004 remul %d2,%d4,%d5
if ( remainder != 0 ) {
475be: 4a84 tstl %d4
475c0: 6704 beqs 475c6 <_Heap_Get_first_and_last_block+0x2a><== ALWAYS TAKEN
return value - remainder + alignment;
475c2: d082 addl %d2,%d0 <== NOT EXECUTED 475c4: 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 (
475c6: b1c1 cmpal %d1,%a0
475c8: 6532 bcss 475fc <_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);
475ca: 2040 moveal %d0,%a0 475cc: 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 =
475ce: 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
475d0: b083 cmpl %d3,%d0
475d2: 6428 bccs 475fc <_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 );
475d4: 9680 subl %d0,%d3
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
475d6: 2203 movel %d3,%d1 475d8: 4c42 1000 remul %d2,%d0,%d1 475dc: 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
475de: b6ae 0014 cmpl %fp@(20),%d3
475e2: 6518 bcss 475fc <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN
) {
/* Invalid area or area too small */
return false;
}
*first_block_ptr = first_block;
475e4: 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);
475e8: d688 addl %a0,%d3 475ea: 2288 movel %a0,%a1@ 475ec: 226e 001c moveal %fp@(28),%a1 475f0: 2283 movel %d3,%a1@
*last_block_ptr = last_block;
return true;
}
475f2: 4cd7 003c moveml %sp@,%d2-%d5
}
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
475f6: 7001 moveq #1,%d0
}
475f8: 4e5e unlk %fp 475fa: 4e75 rts 475fc: 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;
47600: 4200 clrb %d0
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
}
47602: 4e5e unlk %fp <== NOT EXECUTED
00051964 <_Heap_Get_free_information>:
void _Heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
51964: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 51968: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 5196c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 51970: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
51974: 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;
51978: 4292 clrl %a2@ <== NOT EXECUTED
info->largest = 0;
5197a: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
info->total = 0;
5197e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
for(the_block = _Heap_Free_list_first(the_heap);
51982: b1cb cmpal %a3,%a0 <== NOT EXECUTED 51984: 6732 beqs 519b8 <_Heap_Get_free_information+0x54><== NOT EXECUTED 51986: 327c 0001 moveaw #1,%a1 <== NOT EXECUTED 5198a: 4282 clrl %d2 <== NOT EXECUTED 5198c: 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;
5198e: 70fe moveq #-2,%d0 <== NOT EXECUTED
the_block != tail;
the_block = the_block->next)
51990: 2609 movel %a1,%d3 <== NOT EXECUTED 51992: 5283 addql #1,%d3 <== NOT EXECUTED 51994: 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;
51998: d280 addl %d0,%d1 <== NOT EXECUTED
if ( info->largest < the_size )
5199a: b480 cmpl %d0,%d2 <== NOT EXECUTED 5199c: 6404 bccs 519a2 <_Heap_Get_free_information+0x3e><== NOT EXECUTED
info->largest = the_size;
5199e: 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)
519a2: 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);
519a6: b1cb cmpal %a3,%a0 <== NOT EXECUTED 519a8: 6708 beqs 519b2 <_Heap_Get_free_information+0x4e><== NOT EXECUTED 519aa: 242a 0004 movel %a2@(4),%d2 <== NOT EXECUTED 519ae: 2243 moveal %d3,%a1 <== NOT EXECUTED 519b0: 60dc bras 5198e <_Heap_Get_free_information+0x2a><== NOT EXECUTED 519b2: 2489 movel %a1,%a2@ <== NOT EXECUTED 519b4: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
519b8: 4cd7 0c0c moveml %sp@,%d2-%d3/%a2-%a3 <== NOT EXECUTED 519bc: 4e5e unlk %fp <== NOT EXECUTED
0004d484 <_Heap_Get_information>:
void _Heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
4d484: 4e56 fff0 linkw %fp,#-16 4d488: 226e 0008 moveal %fp@(8),%a1 4d48c: 48d7 041c moveml %d2-%d4/%a2,%sp@ 4d490: 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));
4d494: 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;
4d496: 2469 0020 moveal %a1@(32),%a2
Heap_Block *const end = the_heap->last_block;
4d49a: 2429 0024 movel %a1@(36),%d2
memset(the_info, 0, sizeof(*the_info));
4d49e: 4298 clrl %a0@+ 4d4a0: 4298 clrl %a0@+ 4d4a2: 4298 clrl %a0@+ 4d4a4: 4298 clrl %a0@+ 4d4a6: 4298 clrl %a0@+ 4d4a8: 4290 clrl %a0@
while ( the_block != end ) {
4d4aa: b48a cmpl %a2,%d2
4d4ac: 6738 beqs 4d4e6 <_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;
4d4ae: 2604 movel %d4,%d3 4d4b0: 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 ) {
4d4b6: 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;
4d4ba: 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;
4d4bc: 2043 moveal %d3,%a0 4d4be: 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);
4d4c0: 43f2 0800 lea %a2@(00000000,%d0:l),%a1
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4d4c4: 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) )
4d4c8: 0801 0000 btst #0,%d1
4d4cc: 6602 bnes 4d4d0 <_Heap_Get_information+0x4c>
info = &the_info->Used;
else
info = &the_info->Free;
4d4ce: 2044 moveal %d4,%a0
info->number++;
4d4d0: 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 ) {
4d4d2: 2449 moveal %a1,%a2
info = &the_info->Used;
else
info = &the_info->Free;
info->number++;
info->total += the_size;
4d4d4: d1a8 0008 addl %d0,%a0@(8)
if ( info->largest < the_size )
4d4d8: b0a8 0004 cmpl %a0@(4),%d0
4d4dc: 6304 blss 4d4e2 <_Heap_Get_information+0x5e>
info->largest = the_size;
4d4de: 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 ) {
4d4e2: b3c2 cmpal %d2,%a1
4d4e4: 66d4 bnes 4d4ba <_Heap_Get_information+0x36>
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4d4e6: 4cd7 041c moveml %sp@,%d2-%d4/%a2 4d4ea: 4e5e unlk %fp
...
00047606 <_Heap_Initialize>:
Heap_Control *heap,
void *heap_area_begin_ptr,
uintptr_t heap_area_size,
uintptr_t page_size
)
{
47606: 4e56 ffe0 linkw %fp,#-32 4760a: 48d7 047c moveml %d2-%d6/%a2,%sp@ 4760e: 246e 0008 moveal %fp@(8),%a2 47612: 282e 000c movel %fp@(12),%d4 47616: 2a2e 0010 movel %fp@(16),%d5 4761a: 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;
4761e: 42ae fffc clrl %fp@(-4)
Heap_Block *last_block = NULL;
47622: 42ae fff8 clrl %fp@(-8)
if ( page_size == 0 ) {
47626: 4a82 tstl %d2
47628: 6750 beqs 4767a <_Heap_Initialize+0x74> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4762a: 7003 moveq #3,%d0 4762c: c082 andl %d2,%d0
if ( remainder != 0 ) {
4762e: 6704 beqs 47634 <_Heap_Initialize+0x2e> <== ALWAYS TAKEN
return value - remainder + alignment;
47630: 5882 addql #4,%d2 <== NOT EXECUTED 47632: 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 ) {
47634: 7003 moveq #3,%d0 47636: b082 cmpl %d2,%d0
47638: 6434 bccs 4766e <_Heap_Initialize+0x68> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4763a: 7210 moveq #16,%d1 4763c: 4c42 1000 remul %d2,%d0,%d1
if ( remainder != 0 ) {
47640: 4a80 tstl %d0 47642: 6700 00e8 beqw 4772c <_Heap_Initialize+0x126>
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
47646: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
return value - remainder + alignment;
4764a: 2602 movel %d2,%d3 <== NOT EXECUTED 4764c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47650: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED 47656: 9680 subl %d0,%d3 <== NOT EXECUTED 47658: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4765a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4765c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4765e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47660: 4eb9 0004 759c jsr 4759c <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
47666: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4766a: 4a00 tstb %d0 <== NOT EXECUTED 4766c: 662e bnes 4769c <_Heap_Initialize+0x96> <== NOT EXECUTED
return 0;
4766e: 4280 clrl %d0
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
47670: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2 47676: 4e5e unlk %fp 47678: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
4767a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
} else {
return value;
4767e: 7610 moveq #16,%d3 <== NOT EXECUTED 47680: 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;
47684: 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(
47686: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47688: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4768a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4768c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4768e: 4eb9 0004 759c jsr 4759c <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
47694: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 47698: 4a00 tstb %d0 <== NOT EXECUTED 4769a: 67d2 beqs 4766e <_Heap_Initialize+0x68> <== NOT EXECUTED
return 0;
}
memset(heap, 0, sizeof(*heap));
4769c: 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;
476a0: da84 addl %d4,%d5
);
if ( !area_ok ) {
return 0;
}
memset(heap, 0, sizeof(*heap));
476a2: 42a7 clrl %sp@- 476a4: 2f0a movel %a2,%sp@- 476a6: 4eb9 0004 f288 jsr 4f288 <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++;
476ac: 2239 0005 f4ac movel 5f4ac <instance>,%d1 476b2: 2c01 movel %d1,%d6 476b4: 5286 addql #1,%d6
);
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
476b6: 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;
476ba: 226e fff8 moveal %fp@(-8),%a1
first_block_size = last_block_begin - first_block_begin;
476be: 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;
476c0: 206e fffc moveal %fp@(-4),%a0
last_block_begin = (uintptr_t) last_block; first_block_size = last_block_begin - first_block_begin;
476c4: 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++;
476c6: 23c6 0005 f4ac movel %d6,5f4ac <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;
476cc: 7c01 moveq #1,%d6 476ce: 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;
476d0: 2085 movel %d5,%a0@
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
476d2: 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;
476d6: 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 );
476d8: 214a 0008 movel %a2,%a0@(8)
first_block->prev = _Heap_Free_list_head( heap );
476dc: 214a 000c movel %a2,%a0@(12)
_Heap_Protection_block_initialize( heap, first_block );
/* Heap control */
heap->page_size = page_size;
476e0: 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(
476e4: 2408 movel %a0,%d2 476e6: 9489 subl %a1,%d2
heap->min_block_size = min_block_size;
476e8: 2543 0014 movel %d3,%a2@(20)
heap->area_begin = heap_area_begin;
476ec: 2544 0018 movel %d4,%a2@(24)
heap->area_end = heap_area_end;
476f0: 2545 001c movel %d5,%a2@(28)
heap->first_block = first_block;
476f4: 2548 0020 movel %a0,%a2@(32)
heap->last_block = last_block;
476f8: 2549 0024 movel %a1,%a2@(36) 476fc: 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;
47700: 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;
47702: 2548 0008 movel %a0,%a2@(8)
_Heap_Free_list_tail( heap )->prev = first_block;
47706: 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;
4770a: 2540 002c movel %d0,%a2@(44)
stats->free_size = first_block_size;
4770e: 2540 0030 movel %d0,%a2@(48)
stats->min_free_size = first_block_size;
47712: 2540 0034 movel %d0,%a2@(52)
stats->free_blocks = 1;
47716: 2546 0038 movel %d6,%a2@(56)
stats->max_free_blocks = 1;
4771a: 2546 003c movel %d6,%a2@(60)
stats->instance = instance++;
4771e: 2541 0028 movel %d1,%a2@(40)
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
47722: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2 47728: 4e5e unlk %fp 4772a: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
4772c: 486e fff8 pea %fp@(-8)
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
47730: 7610 moveq #16,%d3 47732: 486e fffc pea %fp@(-4) 47736: 2f03 movel %d3,%sp@- 47738: 2f02 movel %d2,%sp@- 4773a: 2f05 movel %d5,%sp@- 4773c: 2f04 movel %d4,%sp@- 4773e: 4eb9 0004 759c jsr 4759c <_Heap_Get_first_and_last_block>
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
47744: 4fef 0018 lea %sp@(24),%sp 47748: 4a00 tstb %d0 4774a: 6700 ff22 beqw 4766e <_Heap_Initialize+0x68> 4774e: 6000 ff4c braw 4769c <_Heap_Initialize+0x96>
0005c710 <_Heap_Resize_block>:
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5c710: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5c714: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED 5c718: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 5c71c: 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);
5c720: 2202 movel %d2,%d1 <== NOT EXECUTED 5c722: 2042 moveal %d2,%a0 <== NOT EXECUTED 5c724: 5188 subql #8,%a0 <== NOT EXECUTED 5c726: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5c72a: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED 5c730: 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);
5c734: 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;
5c736: 4291 clrl %a1@ <== NOT EXECUTED
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5c738: 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;
5c73c: 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;
5c73e: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 5c742: 6500 0098 bcsw 5c7dc <_Heap_Resize_block+0xcc> <== NOT EXECUTED 5c746: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED 5c74a: 6200 0090 bhiw 5c7dc <_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;
5c74e: 76fe moveq #-2,%d3 <== NOT EXECUTED 5c750: 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;
5c752: 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;
5c754: 7204 moveq #4,%d1 <== NOT EXECUTED 5c756: 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;
5c758: 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;
5c75c: 49f0 3800 lea %a0@(00000000,%d3:l),%a4 <== NOT EXECUTED
uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS;
5c760: d28c addl %a4,%d1 <== NOT EXECUTED 5c762: 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;
5c766: 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;
5c76a: 2281 movel %d1,%a1@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_free(
const Heap_Block *block
)
{
return !_Heap_Is_used( block );
5c76c: 4a85 tstl %d5 <== NOT EXECUTED 5c76e: 57c5 seq %d5 <== NOT EXECUTED 5c770: 4485 negl %d5 <== NOT EXECUTED
if ( next_block_is_free ) {
5c772: 4a05 tstb %d5 <== NOT EXECUTED 5c774: 6672 bnes 5c7e8 <_Heap_Resize_block+0xd8> <== NOT EXECUTED
block_size += next_block_size;
alloc_size += next_block_size;
}
if ( new_alloc_size > alloc_size ) {
5c776: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c778: 6576 bcss 5c7f0 <_Heap_Resize_block+0xe0> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
}
if ( next_block_is_free ) {
5c77a: 4a05 tstb %d5 <== NOT EXECUTED 5c77c: 672a beqs 5c7a8 <_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;
5c77e: 7201 moveq #1,%d1 <== NOT EXECUTED 5c780: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c784: 226c 0008 moveal %a4@(8),%a1 <== NOT EXECUTED
block->size_and_flag = size | flag;
5c788: 8283 orl %d3,%d1 <== NOT EXECUTED 5c78a: 286c 000c moveal %a4@(12),%a4 <== NOT EXECUTED 5c78e: 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;
5c792: 7201 moveq #1,%d1 <== NOT EXECUTED 5c794: 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;
5c798: 2949 0008 movel %a1,%a4@(8) <== NOT EXECUTED
next->prev = prev;
5c79c: 234c 000c movel %a4,%a1@(12) <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
5c7a0: 53aa 0038 subql #1,%a2@(56) <== NOT EXECUTED
stats->free_size -= next_block_size;
5c7a4: 99aa 0030 subl %d4,%a2@(48) <== NOT EXECUTED
}
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
5c7a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c7aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c7ac: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5c7ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c7b0: 4eb9 0004 7752 jsr 47752 <_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;
5c7b6: 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;
5c7ba: 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 );
5c7bc: 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;
5c7be: 2240 moveal %d0,%a1 <== NOT EXECUTED 5c7c0: 93c2 subal %d2,%a1 <== NOT EXECUTED
/* Statistics */
++stats->resizes;
return HEAP_RESIZE_SUCCESSFUL;
5c7c2: 4280 clrl %d0 <== NOT EXECUTED 5c7c4: 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;
5c7c8: 43f1 1804 lea %a1@(00000004,%d1:l),%a1 <== NOT EXECUTED 5c7cc: 2689 movel %a1,%a3@ <== NOT EXECUTED
/* Statistics */
++stats->resizes;
5c7ce: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c7d2: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c7d8: 4e5e unlk %fp <== NOT EXECUTED 5c7da: 4e75 rts <== NOT EXECUTED
new_alloc_size,
old_size,
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
5c7dc: 7002 moveq #2,%d0 <== NOT EXECUTED
} }
5c7de: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c7e4: 4e5e unlk %fp <== NOT EXECUTED 5c7e6: 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;
5c7e8: d684 addl %d4,%d3 <== NOT EXECUTED
alloc_size += next_block_size;
5c7ea: d284 addl %d4,%d1 <== NOT EXECUTED
}
if ( new_alloc_size > alloc_size ) {
5c7ec: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c7ee: 648a bccs 5c77a <_Heap_Resize_block+0x6a> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
5c7f0: 7001 moveq #1,%d0 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c7f2: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5c7f8: 4e5e unlk %fp <== NOT EXECUTED
0005c7fc <_Heap_Size_of_alloc_area>:
bool _Heap_Size_of_alloc_area(
Heap_Control *heap,
void *alloc_begin_ptr,
uintptr_t *alloc_size
)
{
5c7fc: 4e56 0000 linkw %fp,#0 5c800: 202e 000c movel %fp@(12),%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
5c804: 2040 moveal %d0,%a0 5c806: 5188 subql #8,%a0 5c808: 226e 0008 moveal %fp@(8),%a1 5c80c: 2f02 movel %d2,%sp@- 5c80e: 2400 movel %d0,%d2 5c810: 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);
5c816: 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
5c818: 2229 0020 movel %a1@(32),%d1
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
5c81c: b288 cmpl %a0,%d1
5c81e: 6236 bhis 5c856 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5c820: 2269 0024 moveal %a1@(36),%a1 5c824: b3c8 cmpal %a0,%a1
5c826: 652e bcss 5c856 <_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;
5c828: 74fe moveq #-2,%d2 5c82a: 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);
5c82e: 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;
5c830: b1c1 cmpal %d1,%a0
5c832: 6522 bcss 5c856 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5c834: b1c9 cmpal %a1,%a0
5c836: 621e bhis 5c856 <_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;
5c838: 7201 moveq #1,%d1 5c83a: 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 )
5c83e: 6716 beqs 5c856 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5c840: 7204 moveq #4,%d1 5c842: 9280 subl %d0,%d1 5c844: 2001 movel %d1,%d0 5c846: d088 addl %a0,%d0 5c848: 226e 0010 moveal %fp@(16),%a1
return true;
}
5c84c: 241f movel %sp@+,%d2 5c84e: 4e5e unlk %fp
|| !_Heap_Is_prev_used( next_block )
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5c850: 2280 movel %d0,%a1@
return true;
5c852: 7001 moveq #1,%d0
}
5c854: 4e75 rts
5c856: 241f movel %sp@+,%d2 <== NOT EXECUTED 5c858: 4e5e unlk %fp <== NOT EXECUTED
if (
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
) {
return false;
5c85a: 4200 clrb %d0 <== NOT EXECUTED
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
return true;
}
...
00048282 <_Heap_Walk>:
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
48282: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 48286: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4828a: 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;
4828e: 4bfa ff94 lea %pc@(48224 <_Heap_Walk_print_nothing>),%a5<== NOT EXECUTED
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
48292: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
uintptr_t const page_size = heap->page_size;
48296: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
4829a: 2c2a 0014 movel %a2@(20),%d6 <== NOT EXECUTED
Heap_Block *const first_block = heap->first_block;
4829e: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED
Heap_Block *const last_block = heap->last_block;
482a2: 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;
482a6: 4a2e 0013 tstb %fp@(19) <== NOT EXECUTED 482aa: 6704 beqs 482b0 <_Heap_Walk+0x2e> <== NOT EXECUTED 482ac: 4bfa ff7e lea %pc@(4822c <_Heap_Walk_print>),%a5 <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
482b0: 7003 moveq #3,%d0 <== NOT EXECUTED 482b2: b0b9 0006 231c cmpl 6231c <_System_state_Current>,%d0 <== NOT EXECUTED 482b8: 670c beqs 482c6 <_Heap_Walk+0x44> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
482ba: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
}
block = next_block;
} while ( block != first_block );
return true;
482c0: 7001 moveq #1,%d0 <== NOT EXECUTED
}
482c2: 4e5e unlk %fp <== NOT EXECUTED 482c4: 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)(
482c6: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 482ca: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 482ce: 2f07 movel %d7,%sp@- <== NOT EXECUTED 482d0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 482d2: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED 482d6: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 482da: 2f06 movel %d6,%sp@- <== NOT EXECUTED 482dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 482de: 4879 0005 e5bb pea 5e5bb <_Status_Object_name_errors_to_status+0x5d><== NOT EXECUTED 482e4: 42a7 clrl %sp@- <== NOT EXECUTED 482e6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 482e8: 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 ) {
482ea: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 482ee: 4a83 tstl %d3 <== NOT EXECUTED 482f0: 6700 0082 beqw 48374 <_Heap_Walk+0xf2> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
482f4: 7003 moveq #3,%d0 <== NOT EXECUTED 482f6: c083 andl %d3,%d0 <== NOT EXECUTED
(*printer)( source, true, "page size is zero\n" );
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
482f8: 6600 0090 bnew 4838a <_Heap_Walk+0x108> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
482fc: 2206 movel %d6,%d1 <== NOT EXECUTED 482fe: 4c43 1000 remul %d3,%d0,%d1 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
48302: 4a80 tstl %d0 <== NOT EXECUTED 48304: 6600 00a4 bnew 483aa <_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;
48308: 2004 movel %d4,%d0 <== NOT EXECUTED 4830a: 5080 addql #8,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4830c: 4c43 0001 remul %d3,%d1,%d0 <== NOT EXECUTED
);
return false;
}
if (
48310: 4a81 tstl %d1 <== NOT EXECUTED 48312: 6600 00ae bnew 483c2 <_Heap_Walk+0x140> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48316: 2044 moveal %d4,%a0 <== NOT EXECUTED 48318: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED 4831c: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
48320: 0801 0000 btst #0,%d1 <== NOT EXECUTED 48324: 6700 017e beqw 484a4 <_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;
48328: 2047 moveal %d7,%a0 <== NOT EXECUTED 4832a: 72fe moveq #-2,%d1 <== NOT EXECUTED 4832c: 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);
48330: 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;
48332: 7201 moveq #1,%d1 <== NOT EXECUTED 48334: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_free( last_block ) ) {
48338: 6724 beqs 4835e <_Heap_Walk+0xdc> <== NOT EXECUTED
);
return false;
}
if (
4833a: b1c4 cmpal %d4,%a0 <== NOT EXECUTED 4833c: 6700 009c beqw 483da <_Heap_Walk+0x158> <== NOT EXECUTED
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48340: 4879 0005 e715 pea 5e715 <_Status_Object_name_errors_to_status+0x1b7><== NOT EXECUTED 48346: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4834a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4834c: 4e95 jsr %a5@ <== NOT EXECUTED 4834e: 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;
48352: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48354: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4835a: 4e5e unlk %fp <== NOT EXECUTED 4835c: 4e75 rts <== NOT EXECUTED
return false;
}
if ( _Heap_Is_free( last_block ) ) {
(*printer)(
4835e: 4879 0005 e700 pea 5e700 <_Status_Object_name_errors_to_status+0x1a2><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48364: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48368: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4836a: 4e95 jsr %a5@ <== NOT EXECUTED 4836c: 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;
48370: 4200 clrb %d0 <== NOT EXECUTED 48372: 60e0 bras 48354 <_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" );
48374: 4879 0005 e64c pea 5e64c <_Status_Object_name_errors_to_status+0xee><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
4837a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4837e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48380: 4e95 jsr %a5@ <== NOT EXECUTED 48382: 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;
48386: 4200 clrb %d0 <== NOT EXECUTED 48388: 60ca bras 48354 <_Heap_Walk+0xd2> <== NOT EXECUTED
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
(*printer)(
4838a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4838c: 4879 0005 e65f pea 5e65f <_Status_Object_name_errors_to_status+0x101><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48392: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48396: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48398: 4e95 jsr %a5@ <== NOT EXECUTED 4839a: 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;
4839e: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
483a0: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 483a6: 4e5e unlk %fp <== NOT EXECUTED 483a8: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
(*printer)(
483aa: 2f06 movel %d6,%sp@- <== NOT EXECUTED 483ac: 4879 0005 e67d pea 5e67d <_Status_Object_name_errors_to_status+0x11f><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
483b2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 483b6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 483b8: 4e95 jsr %a5@ <== NOT EXECUTED 483ba: 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;
483be: 4200 clrb %d0 <== NOT EXECUTED 483c0: 60de bras 483a0 <_Heap_Walk+0x11e> <== NOT EXECUTED
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
) {
(*printer)(
483c2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 483c4: 4879 0005 e6a1 pea 5e6a1 <_Status_Object_name_errors_to_status+0x143><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
483ca: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 483ce: 2f05 movel %d5,%sp@- <== NOT EXECUTED 483d0: 4e95 jsr %a5@ <== NOT EXECUTED 483d2: 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;
483d6: 4200 clrb %d0 <== NOT EXECUTED 483d8: 60c6 bras 483a0 <_Heap_Walk+0x11e> <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
483da: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
483de: 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;
483e2: 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 ) {
483e6: b1ca cmpal %a2,%a0 <== NOT EXECUTED 483e8: 6700 032c beqw 48716 <_Heap_Walk+0x494> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
483ec: 242a 0020 movel %a2@(32),%d2 <== NOT EXECUTED 483f0: 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;
483f4: b1c2 cmpal %d2,%a0 <== NOT EXECUTED 483f6: 6500 0092 bcsw 4848a <_Heap_Walk+0x208> <== NOT EXECUTED 483fa: 286a 0024 moveal %a2@(36),%a4 <== NOT EXECUTED 483fe: b1cc cmpal %a4,%a0 <== NOT EXECUTED 48400: 6200 0088 bhiw 4848a <_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;
48404: 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;
48408: 200b movel %a3,%d0 <== NOT EXECUTED 4840a: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4840e: 4c41 0002 remul %d1,%d2,%d0 <== NOT EXECUTED
);
return false;
}
if (
48412: 4a82 tstl %d2 <== NOT EXECUTED 48414: 6600 00a6 bnew 484bc <_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;
48418: 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;
4841a: 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;
4841c: 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;
48420: c0b0 2804 andl %a0@(00000004,%d2:l),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48424: 664a bnes 48470 <_Heap_Walk+0x1ee> <== NOT EXECUTED 48426: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4842a: 224a moveal %a2,%a1 <== NOT EXECUTED 4842c: 2648 moveal %a0,%a3 <== NOT EXECUTED 4842e: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
);
return false;
}
if ( free_block->prev != prev_block ) {
48432: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED 48436: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 48438: 6600 02c0 bnew 486fa <_Heap_Walk+0x478> <== NOT EXECUTED
return false;
}
prev_block = free_block;
free_block = free_block->next;
4843c: 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 ) {
48440: b1ca cmpal %a2,%a0 <== NOT EXECUTED 48442: 6700 0092 beqw 484d6 <_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;
48446: b1c1 cmpal %d1,%a0 <== NOT EXECUTED 48448: 6540 bcss 4848a <_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;
4844a: 2408 movel %a0,%d2 <== NOT EXECUTED 4844c: 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;
4844e: b9c8 cmpal %a0,%a4 <== NOT EXECUTED 48450: 6538 bcss 4848a <_Heap_Walk+0x208> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
48452: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48456: 224b moveal %a3,%a1 <== NOT EXECUTED 48458: 2648 moveal %a0,%a3 <== NOT EXECUTED 4845a: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED
);
return false;
}
if (
4845e: 4a83 tstl %d3 <== NOT EXECUTED 48460: 665a bnes 484bc <_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;
48462: 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;
48464: 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;
48466: 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;
4846a: c0b0 2804 andl %a0@(00000004,%d2:l),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
4846e: 67c2 beqs 48432 <_Heap_Walk+0x1b0> <== NOT EXECUTED
(*printer)(
48470: 2f08 movel %a0,%sp@- <== NOT EXECUTED 48472: 4879 0005 e794 pea 5e794 <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48478: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4847c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4847e: 4e95 jsr %a5@ <== NOT EXECUTED 48480: 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;
48484: 4200 clrb %d0 <== NOT EXECUTED 48486: 6000 ff18 braw 483a0 <_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)(
4848a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4848c: 4879 0005 e744 pea 5e744 <_Status_Object_name_errors_to_status+0x1e6><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48492: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48496: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48498: 4e95 jsr %a5@ <== NOT EXECUTED 4849a: 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;
4849e: 4200 clrb %d0 <== NOT EXECUTED 484a0: 6000 fefe braw 483a0 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
(*printer)(
484a4: 4879 0005 e6d2 pea 5e6d2 <_Status_Object_name_errors_to_status+0x174><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
484aa: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 484ae: 2f05 movel %d5,%sp@- <== NOT EXECUTED 484b0: 4e95 jsr %a5@ <== NOT EXECUTED 484b2: 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;
484b6: 4200 clrb %d0 <== NOT EXECUTED 484b8: 6000 fe9a braw 48354 <_Heap_Walk+0xd2> <== NOT EXECUTED
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
) {
(*printer)(
484bc: 2f08 movel %a0,%sp@- <== NOT EXECUTED 484be: 4879 0005 e764 pea 5e764 <_Status_Object_name_errors_to_status+0x206><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
484c4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 484c8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 484ca: 4e95 jsr %a5@ <== NOT EXECUTED 484cc: 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;
484d0: 4200 clrb %d0 <== NOT EXECUTED 484d2: 6000 fecc braw 483a0 <_Heap_Walk+0x11e> <== NOT EXECUTED 484d6: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
484da: 2844 moveal %d4,%a4 <== NOT EXECUTED 484dc: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 484e0: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 484e4: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED 484e8: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED 484ec: 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;
484f0: 74fe moveq #-2,%d2 <== NOT EXECUTED 484f2: 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);
484f4: 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;
484f8: b7c1 cmpal %d1,%a3 <== NOT EXECUTED 484fa: 657e bcss 4857a <_Heap_Walk+0x2f8> <== NOT EXECUTED 484fc: b7ea 0024 cmpal %a2@(36),%a3 <== NOT EXECUTED 48500: 6278 bhis 4857a <_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;
48502: b9ee ffec cmpal %fp@(-20),%a4 <== NOT EXECUTED 48506: 56c1 sne %d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
48508: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4850c: 2e02 movel %d2,%d7 <== NOT EXECUTED 4850e: 3241 moveaw %d1,%a1 <== NOT EXECUTED 48510: 4c40 7001 remul %d0,%d1,%d7 <== NOT EXECUTED 48514: 2009 movel %a1,%d0 <== NOT EXECUTED 48516: 4480 negl %d0 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
48518: 4a81 tstl %d1 <== NOT EXECUTED 4851a: 6704 beqs 48520 <_Heap_Walk+0x29e> <== NOT EXECUTED 4851c: 4a00 tstb %d0 <== NOT EXECUTED 4851e: 667c bnes 4859c <_Heap_Walk+0x31a> <== NOT EXECUTED
);
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
48520: b486 cmpl %d6,%d2 <== NOT EXECUTED 48522: 6406 bccs 4852a <_Heap_Walk+0x2a8> <== NOT EXECUTED 48524: 4a00 tstb %d0 <== NOT EXECUTED 48526: 6600 008e bnew 485b6 <_Heap_Walk+0x334> <== NOT EXECUTED
);
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
4852a: b7cc cmpal %a4,%a3 <== NOT EXECUTED 4852c: 6206 bhis 48534 <_Heap_Walk+0x2b2> <== NOT EXECUTED 4852e: 4a00 tstb %d0 <== NOT EXECUTED 48530: 6600 00a8 bnew 485da <_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;
48534: 7001 moveq #1,%d0 <== NOT EXECUTED 48536: 7e01 moveq #1,%d7 <== NOT EXECUTED 48538: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED 4853c: c687 andl %d7,%d3 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
4853e: 4a80 tstl %d0 <== NOT EXECUTED 48540: 6700 00cc beqw 4860e <_Heap_Walk+0x38c> <== NOT EXECUTED
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
}
} else if (prev_used) {
48544: 4a83 tstl %d3 <== NOT EXECUTED 48546: 6700 00ac beqw 485f4 <_Heap_Walk+0x372> <== NOT EXECUTED
(*printer)(
4854a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4854c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4854e: 4879 0005 e939 pea 5e939 <_Status_Object_name_errors_to_status+0x3db><== NOT EXECUTED 48554: 42a7 clrl %sp@- <== NOT EXECUTED 48556: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48558: 4e95 jsr %a5@ <== NOT EXECUTED 4855a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
block->prev_size
);
}
block = next_block;
} while ( block != first_block );
4855e: b7c4 cmpal %d4,%a3 <== NOT EXECUTED 48560: 6700 fd58 beqw 482ba <_Heap_Walk+0x38> <== NOT EXECUTED 48564: 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;
48568: 74fe moveq #-2,%d2 <== NOT EXECUTED 4856a: 284b moveal %a3,%a4 <== NOT EXECUTED 4856c: c483 andl %d3,%d2 <== NOT EXECUTED 4856e: 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);
48572: 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;
48576: b7c1 cmpal %d1,%a3 <== NOT EXECUTED 48578: 6482 bccs 484fc <_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)(
4857a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4857c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4857e: 4879 0005 e7e2 pea 5e7e2 <_Status_Object_name_errors_to_status+0x284><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
48584: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48588: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4858a: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
4858c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 48590: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48592: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 48598: 4e5e unlk %fp <== NOT EXECUTED 4859a: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
(*printer)(
4859c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4859e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 485a0: 4879 0005 e80f pea 5e80f <_Status_Object_name_errors_to_status+0x2b1><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
485a6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 485aa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485ac: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
485ae: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 485b2: 4200 clrb %d0 <== NOT EXECUTED 485b4: 60dc bras 48592 <_Heap_Walk+0x310> <== NOT EXECUTED
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
(*printer)(
485b6: 2f06 movel %d6,%sp@- <== NOT EXECUTED 485b8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 485ba: 2f0c movel %a4,%sp@- <== NOT EXECUTED 485bc: 4879 0005 e83d pea 5e83d <_Status_Object_name_errors_to_status+0x2df><== NOT EXECUTED 485c2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 485c6: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485c8: 4e95 jsr %a5@ <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
485ca: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
485ce: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
485d4: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
485d6: 4e5e unlk %fp <== NOT EXECUTED 485d8: 4e75 rts <== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
485da: 2f0b movel %a3,%sp@- <== NOT EXECUTED 485dc: 2f0c movel %a4,%sp@- <== NOT EXECUTED 485de: 4879 0005 e868 pea 5e868 <_Status_Object_name_errors_to_status+0x30a><== NOT EXECUTED 485e4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 485e8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 485ea: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
485ec: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 485f0: 4200 clrb %d0 <== NOT EXECUTED 485f2: 609e bras 48592 <_Heap_Walk+0x310> <== NOT EXECUTED
"block 0x%08x: size %u\n",
block,
block_size
);
} else {
(*printer)(
485f4: 2f14 movel %a4@,%sp@- <== NOT EXECUTED 485f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 485f8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 485fa: 4879 0005 e950 pea 5e950 <_Status_Object_name_errors_to_status+0x3f2><== NOT EXECUTED 48600: 42a7 clrl %sp@- <== NOT EXECUTED 48602: 2f05 movel %d5,%sp@- <== NOT EXECUTED 48604: 4e95 jsr %a5@ <== NOT EXECUTED 48606: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4860a: 6000 ff52 braw 4855e <_Heap_Walk+0x2dc> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4860e: 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)(
48612: 43f9 0005 e588 lea 5e588 <_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 ?
48618: 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)(
4861c: b2aa 000c cmpl %a2@(12),%d1 <== NOT EXECUTED 48620: 670a beqs 4862c <_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)" : "")
48622: 43f9 0005 e4d0 lea 5e4d0 <rtems_filesystem_default_pathconf+0xb4>,%a1<== NOT EXECUTED 48628: b28a cmpl %a2,%d1 <== NOT EXECUTED 4862a: 6764 beqs 48690 <_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 ?
4862c: 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)(
48630: 41f9 0005 e5a1 lea 5e5a1 <_Status_Object_name_errors_to_status+0x43>,%a0<== NOT EXECUTED 48636: b087 cmpl %d7,%d0 <== NOT EXECUTED 48638: 670a beqs 48644 <_Heap_Walk+0x3c2> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
4863a: 41f9 0005 e4d0 lea 5e4d0 <rtems_filesystem_default_pathconf+0xb4>,%a0<== NOT EXECUTED 48640: b08a cmpl %a2,%d0 <== NOT EXECUTED 48642: 6754 beqs 48698 <_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)(
48644: 2f09 movel %a1,%sp@- <== NOT EXECUTED 48646: 2f01 movel %d1,%sp@- <== NOT EXECUTED 48648: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4864a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4864c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4864e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48650: 4879 0005 e89c pea 5e89c <_Status_Object_name_errors_to_status+0x33e><== NOT EXECUTED 48656: 42a7 clrl %sp@- <== NOT EXECUTED 48658: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4865a: 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 ) {
4865c: 2213 movel %a3@,%d1 <== NOT EXECUTED 4865e: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 48662: b282 cmpl %d2,%d1 <== NOT EXECUTED 48664: 663a bnes 486a0 <_Heap_Walk+0x41e> <== NOT EXECUTED
);
return false;
}
if ( !prev_used ) {
48666: 4a83 tstl %d3 <== NOT EXECUTED 48668: 6776 beqs 486e0 <_Heap_Walk+0x45e> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4866a: 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 ) {
4866e: b1ca cmpal %a2,%a0 <== NOT EXECUTED 48670: 6754 beqs 486c6 <_Heap_Walk+0x444> <== NOT EXECUTED
if ( free_block == block ) {
48672: b1cc cmpal %a4,%a0 <== NOT EXECUTED 48674: 6700 fee8 beqw 4855e <_Heap_Walk+0x2dc> <== NOT EXECUTED 48678: 2e2e ffec movel %fp@(-20),%d7 <== NOT EXECUTED
return true;
}
free_block = free_block->next;
4867c: 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 ) {
48680: b1ca cmpal %a2,%a0 <== NOT EXECUTED 48682: 6742 beqs 486c6 <_Heap_Walk+0x444> <== NOT EXECUTED
if ( free_block == block ) {
48684: b1cc cmpal %a4,%a0 <== NOT EXECUTED 48686: 66f4 bnes 4867c <_Heap_Walk+0x3fa> <== NOT EXECUTED 48688: 2d47 ffec movel %d7,%fp@(-20) <== NOT EXECUTED 4868c: 6000 fed0 braw 4855e <_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)" : "")
48690: 43f9 0005 e597 lea 5e597 <_Status_Object_name_errors_to_status+0x39>,%a1<== NOT EXECUTED 48696: 6094 bras 4862c <_Heap_Walk+0x3aa> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
48698: 41f9 0005 e5b1 lea 5e5b1 <_Status_Object_name_errors_to_status+0x53>,%a0<== NOT EXECUTED 4869e: 60a4 bras 48644 <_Heap_Walk+0x3c2> <== NOT EXECUTED
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
(*printer)(
486a0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 486a2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 486a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 486a6: 2f0c movel %a4,%sp@- <== NOT EXECUTED 486a8: 4879 0005 e8d1 pea 5e8d1 <_Status_Object_name_errors_to_status+0x373><== NOT EXECUTED 486ae: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 486b2: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486b4: 4e95 jsr %a5@ <== NOT EXECUTED 486b6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
486ba: 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;
486c0: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
486c2: 4e5e unlk %fp <== NOT EXECUTED 486c4: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
486c6: 2f0c movel %a4,%sp@- <== NOT EXECUTED 486c8: 4879 0005 e975 pea 5e975 <_Status_Object_name_errors_to_status+0x417><== NOT EXECUTED 486ce: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 486d2: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486d4: 4e95 jsr %a5@ <== NOT EXECUTED 486d6: 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;
486da: 4200 clrb %d0 <== NOT EXECUTED 486dc: 6000 fcc2 braw 483a0 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !prev_used ) {
(*printer)(
486e0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 486e2: 4879 0005 e90a pea 5e90a <_Status_Object_name_errors_to_status+0x3ac><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
486e8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 486ec: 2f05 movel %d5,%sp@- <== NOT EXECUTED 486ee: 4e95 jsr %a5@ <== NOT EXECUTED 486f0: 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;
486f4: 4200 clrb %d0 <== NOT EXECUTED 486f6: 6000 fca8 braw 483a0 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( free_block->prev != prev_block ) {
(*printer)(
486fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 486fc: 2f08 movel %a0,%sp@- <== NOT EXECUTED 486fe: 4879 0005 e7b0 pea 5e7b0 <_Status_Object_name_errors_to_status+0x252><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
48704: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48708: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4870a: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
4870c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 48710: 4200 clrb %d0 <== NOT EXECUTED 48712: 6000 fe7e braw 48592 <_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 ) {
48716: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
4871a: 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 ) {
4871c: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48720: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 48724: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED 48728: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED 4872c: 2d47 ffec movel %d7,%fp@(-20) <== NOT EXECUTED 48730: 6000 fdbe braw 484f0 <_Heap_Walk+0x26e> <== NOT EXECUTED
0004822c <_Heap_Walk_print>:
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{
4822c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48230: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
va_list ap;
if ( error ) {
48234: 4a2e 000f tstb %fp@(15) <== NOT EXECUTED 48238: 6624 bnes 4825e <_Heap_Walk_print+0x32> <== NOT EXECUTED
printk( "FAIL[%d]: ", source );
} else {
printk( "PASS[%d]: ", source );
4823a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4823c: 4879 0005 e57d pea 5e57d <_Status_Object_name_errors_to_status+0x1f><== NOT EXECUTED 48242: 4eb9 0004 429c jsr 4429c <printk> <== NOT EXECUTED 48248: 508f addql #8,%sp <== NOT EXECUTED
}
va_start( ap, fmt );
vprintk( fmt, ap );
4824a: 486e 0014 pea %fp@(20) <== NOT EXECUTED 4824e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48252: 4eb9 0004 60b8 jsr 460b8 <vprintk> <== NOT EXECUTED
va_end( ap );
48258: 508f addql #8,%sp <== NOT EXECUTED
}
4825a: 4e5e unlk %fp <== NOT EXECUTED 4825c: 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 );
4825e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48260: 4879 0005 e572 pea 5e572 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED 48266: 4eb9 0004 429c jsr 4429c <printk> <== NOT EXECUTED 4826c: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "PASS[%d]: ", source );
}
va_start( ap, fmt );
vprintk( fmt, ap );
4826e: 486e 0014 pea %fp@(20) <== NOT EXECUTED 48272: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 48276: 4eb9 0004 60b8 jsr 460b8 <vprintk> <== NOT EXECUTED
va_end( ap );
4827c: 508f addql #8,%sp <== NOT EXECUTED
}
4827e: 4e5e unlk %fp <== NOT EXECUTED
00048224 <_Heap_Walk_print_nothing>:
int source,
bool error,
const char *fmt,
...
)
{
48224: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Do nothing */ }
48228: 4e5e unlk %fp <== NOT EXECUTED
00046c7a <_IO_Initialize_all_drivers>:
*
* Output Parameters: NONE
*/
void _IO_Initialize_all_drivers( void )
{
46c7a: 4e56 0000 linkw %fp,#0 46c7e: 2f0a movel %a2,%sp@- 46c80: 2f02 movel %d2,%sp@-
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c82: 4ab9 0006 0596 tstl 60596 <_IO_Number_of_drivers>
46c88: 671e beqs 46ca8 <_IO_Initialize_all_drivers+0x2e><== NEVER TAKEN
46c8a: 4282 clrl %d2 46c8c: 45f9 0004 c3e4 lea 4c3e4 <rtems_io_initialize>,%a2
(void) rtems_io_initialize( major, 0, NULL );
46c92: 42a7 clrl %sp@- 46c94: 42a7 clrl %sp@- 46c96: 2f02 movel %d2,%sp@-
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c98: 5282 addql #1,%d2
(void) rtems_io_initialize( major, 0, NULL );
46c9a: 4e92 jsr %a2@
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c9c: 4fef 000c lea %sp@(12),%sp 46ca0: b4b9 0006 0596 cmpl 60596 <_IO_Number_of_drivers>,%d2
46ca6: 65ea bcss 46c92 <_IO_Initialize_all_drivers+0x18>
(void) rtems_io_initialize( major, 0, NULL );
}
46ca8: 242e fff8 movel %fp@(-8),%d2 46cac: 246e fffc moveal %fp@(-4),%a2
46cb0: 4e5e unlk %fp <== NOT EXECUTED
00046be0 <_IO_Manager_initialization>:
* workspace.
*
*/
void _IO_Manager_initialization(void)
{
46be0: 4e56 fff0 linkw %fp,#-16 46be4: 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;
46be8: 2639 0005 e47a movel 5e47a <Configuration+0x36>,%d3
drivers_in_table = Configuration.number_of_device_drivers;
46bee: 2439 0005 e476 movel 5e476 <Configuration+0x32>,%d2
number_of_drivers = Configuration.maximum_drivers;
46bf4: 2839 0005 e472 movel 5e472 <Configuration+0x2e>,%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 )
46bfa: b882 cmpl %d2,%d4
46bfc: 6366 blss 46c64 <_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(
46bfe: 2004 movel %d4,%d0 46c00: 2a04 movel %d4,%d5 46c02: e788 lsll #3,%d0 46c04: eb8d lsll #5,%d5 46c06: 9a80 subl %d0,%d5 46c08: 2f05 movel %d5,%sp@- 46c0a: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Allocate_or_fatal_error>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
memset(
46c10: 2f05 movel %d5,%sp@- 46c12: 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 *)
46c14: 23c0 0006 059a movel %d0,6059a <_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(
46c1a: 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;
46c1c: 23c4 0006 0596 movel %d4,60596 <_IO_Number_of_drivers>
memset(
46c22: 4eb9 0004 f288 jsr 4f288 <memset>
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
46c28: 4fef 0010 lea %sp@(16),%sp 46c2c: 4a82 tstl %d2
46c2e: 672a beqs 46c5a <_IO_Manager_initialization+0x7a><== NEVER TAKEN
46c30: 2839 0006 059a movel 6059a <_IO_Driver_address_table>,%d4 46c36: 4280 clrl %d0 46c38: 4281 clrl %d1
_IO_Driver_address_table[index] = driver_table[index];
46c3a: 2243 moveal %d3,%a1 46c3c: 2044 moveal %d4,%a0 46c3e: d3c0 addal %d0,%a1 46c40: 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++ )
46c42: 5281 addql #1,%d1 46c44: 0680 0000 0018 addil #24,%d0
_IO_Driver_address_table[index] = driver_table[index];
46c4a: 20d9 movel %a1@+,%a0@+ 46c4c: 20d9 movel %a1@+,%a0@+ 46c4e: 20d9 movel %a1@+,%a0@+ 46c50: 20d9 movel %a1@+,%a0@+ 46c52: 20d9 movel %a1@+,%a0@+ 46c54: 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++ )
46c56: b282 cmpl %d2,%d1
46c58: 65e0 bcss 46c3a <_IO_Manager_initialization+0x5a>
_IO_Driver_address_table[index] = driver_table[index];
}
46c5a: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 46c60: 4e5e unlk %fp 46c62: 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;
46c64: 23c3 0006 059a movel %d3,6059a <_IO_Driver_address_table>
_IO_Number_of_drivers = number_of_drivers;
46c6a: 23c2 0006 0596 movel %d2,60596 <_IO_Number_of_drivers>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
_IO_Driver_address_table[index] = driver_table[index];
}
46c70: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
46c76: 4e5e unlk %fp <== NOT EXECUTED
00047868 <_Internal_error_Occurred>:
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
47868: 4e56 fffc linkw %fp,#-4 4786c: 206e 0010 moveal %fp@(16),%a0 47870: 2f02 movel %d2,%sp@- 47872: 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 );
47876: 4282 clrl %d2 47878: 1401 moveb %d1,%d2 4787a: 2242 moveal %d2,%a1 4787c: 2f08 movel %a0,%sp@-
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
4787e: 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 );
47882: 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;
47884: 13c1 0005 fdb2 moveb %d1,5fdb2 <_Internal_errors_What_happened+0x4>
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
4788a: 2d48 fffc movel %a0,%fp@(-4)
bool is_internal,
Internal_errors_t the_error
)
{
_Internal_errors_What_happened.the_source = the_source;
4788e: 23c0 0005 fdae movel %d0,5fdae <_Internal_errors_What_happened>
_Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error;
47894: 23c8 0005 fdb4 movel %a0,5fdb4 <_Internal_errors_What_happened+0x6>
_User_extensions_Fatal( the_source, is_internal, the_error );
4789a: 2f00 movel %d0,%sp@- 4789c: 4eb9 0004 975e jsr 4975e <_User_extensions_Fatal>
_System_state_Set( SYSTEM_STATE_FAILED );
_CPU_Fatal_halt( the_error );
478a2: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 478a6: 327c 0700 moveaw #1792,%a1 <== NOT EXECUTED 478aa: 2409 movel %a1,%d2 <== NOT EXECUTED 478ac: 40c0 movew %sr,%d0 <== NOT EXECUTED 478ae: 8082 orl %d2,%d0 <== NOT EXECUTED 478b0: 46c0 movew %d0,%sr <== NOT EXECUTED 478b2: 2008 movel %a0,%d0 <== NOT EXECUTED 478b4: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED 478ba: 4ac8 halt <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _System_state_Set (
System_state_Codes state
)
{
_System_state_Current = state;
478bc: 7005 moveq #5,%d0 <== NOT EXECUTED 478be: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 478c2: 23c0 0005 fe64 movel %d0,5fe64 <_System_state_Current> <== NOT EXECUTED 478c8: 60fe bras 478c8 <_Internal_error_Occurred+0x60> <== NOT EXECUTED
...
000555dc <_Message_queue_Allocate>:
* Output parameters:
* the_message_queue - set if successful, NULL otherwise
*/
Message_queue_Control *_Message_queue_Allocate(void)
{
555dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (Message_queue_Control *)
_Objects_Allocate(&_Message_queue_Information);
555e0: 4879 0006 a564 pea 6a564 <_Message_queue_Information> <== NOT EXECUTED 555e6: 4eb9 0005 0e34 jsr 50e34 <_Objects_Allocate> <== NOT EXECUTED
}
555ec: 4e5e unlk %fp <== NOT EXECUTED
0004efa4 <_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];
4efa4: 41f9 0006 84bc lea 684bc <_Message_queue_Translate_core_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
uint32_t status
)
{
4efaa: 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];
}
4efae: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4efb2: 4e5e unlk %fp <== NOT EXECUTED 4efb4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004c98c <_Objects_API_maximum_class>:
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c98c: 7202 moveq #2,%d1 4c98e: 4e56 0000 linkw %fp,#0 4c992: 202e 0008 movel %fp@(8),%d0 4c996: 5380 subql #1,%d0 4c998: b280 cmpl %d0,%d1
4c99a: 650e bcss 4c9aa <_Objects_API_maximum_class+0x1e><== NEVER TAKEN
4c99c: 41f9 0005 da14 lea 5da14 <CSWTCH.1>,%a0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c9a2: 4e5e unlk %fp
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c9a4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c9a8: 4e75 rts
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c9aa: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c9ac: 4e5e unlk %fp <== NOT EXECUTED
00047924 <_Objects_Allocate>:
*/
Objects_Control *_Objects_Allocate(
Objects_Information *information
)
{
47924: 4e56 fff0 linkw %fp,#-16 47928: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 4792c: 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 )
47930: 4aaa 0014 tstl %a2@(20)
47934: 660c bnes 47942 <_Objects_Allocate+0x1e> <== ALWAYS TAKEN
return NULL;
47936: 4280 clrl %d0 <== NOT EXECUTED
);
}
#endif
return the_object;
}
47938: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 4793e: 4e5e unlk %fp 47940: 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 );
47942: 240a movel %a2,%d2 47944: 0682 0000 001c addil #28,%d2 4794a: 47f9 0004 6f50 lea 46f50 <_Chain_Get>,%a3 47950: 2f02 movel %d2,%sp@- 47952: 4e93 jsr %a3@
if ( information->auto_extend ) {
47954: 588f addql #4,%sp 47956: 4a2a 0010 tstb %a2@(16)
4795a: 67dc beqs 47938 <_Objects_Allocate+0x14>
/*
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
4795c: 4a80 tstl %d0
4795e: 6738 beqs 47998 <_Objects_Allocate+0x74> <== NEVER TAKEN
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47960: 2040 moveal %d0,%a0 47962: 4281 clrl %d1 47964: 4283 clrl %d3
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
47966: 4282 clrl %d2
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47968: 362a 0008 movew %a2@(8),%d3 4796c: 3228 000a movew %a0@(10),%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
47970: 342a 0012 movew %a2@(18),%d2
information->inactive_per_block[ block ]--;
47974: 206a 002a moveal %a2@(42),%a0
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47978: 9283 subl %d3,%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
4797a: 4c42 1001 remul %d2,%d1,%d1
information->inactive_per_block[ block ]--;
information->inactive--;
4797e: 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 ]--;
47982: e589 lsll #2,%d1
information->inactive--;
47984: 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 ]--;
47986: d1c1 addal %d1,%a0 47988: 5390 subql #1,%a0@
information->inactive--;
4798a: 3549 0028 movew %a1,%a2@(40)
);
}
#endif
return the_object;
}
4798e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 47994: 4e5e unlk %fp 47996: 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 );
47998: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4799a: 4eb9 0004 79e0 jsr 479e0 <_Objects_Extend_information> <== NOT EXECUTED
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
479a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 479a2: 4e93 jsr %a3@ <== NOT EXECUTED
}
if ( the_object ) {
479a4: 508f addql #8,%sp <== NOT EXECUTED 479a6: 4a80 tstl %d0 <== NOT EXECUTED 479a8: 66b6 bnes 47960 <_Objects_Allocate+0x3c> <== NOT EXECUTED
);
}
#endif
return the_object;
}
479aa: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 479b0: 4e5e unlk %fp <== NOT EXECUTED
000479b4 <_Objects_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
479b4: 4280 clrl %d0
void _Objects_Close(
Objects_Information *information,
Objects_Control *the_object
)
{
479b6: 4e56 0000 linkw %fp,#0 479ba: 226e 000c moveal %fp@(12),%a1 479be: 206e 0008 moveal %fp@(8),%a0 479c2: 2f0a movel %a2,%sp@-
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
479c4: 2468 0018 moveal %a0@(24),%a2
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
479c8: 3029 000a movew %a1@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
479cc: 42b2 0c00 clrl %a2@(00000000,%d0:l:4)
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
}
479d0: 245f moveal %sp@+,%a2
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
479d2: 2d49 000c movel %a1,%fp@(12)
}
479d6: 4e5e unlk %fp
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
479d8: 4ef9 0004 7f64 jmp 47f64 <_Objects_Namespace_remove>
...
000479e0 <_Objects_Extend_information>:
*/
void _Objects_Extend_information(
Objects_Information *information
)
{
479e0: 4e56 ffcc linkw %fp,#-52 479e4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 479e8: 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 );
479ec: 4285 clrl %d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
479ee: 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 );
479f2: 3a2a 0008 movew %a2@(8),%d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
479f6: 4a88 tstl %a0 479f8: 6700 0232 beqw 47c2c <_Objects_Extend_information+0x24c>
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
479fc: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED 47a00: 302a 0012 movew %a2@(18),%d0 <== NOT EXECUTED 47a04: 3801 movew %d1,%d4 <== NOT EXECUTED 47a06: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED 47a0c: 88c0 divuw %d0,%d4 <== NOT EXECUTED 47a0e: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
for ( ; block < block_count; block++ ) {
47a14: 6700 022c beqw 47c42 <_Objects_Extend_information+0x262><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
47a18: 4a90 tstl %a0@ <== NOT EXECUTED 47a1a: 6700 0236 beqw 47c52 <_Objects_Extend_information+0x272><== NOT EXECUTED
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
47a1e: 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 );
47a20: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index; block = 0;
47a22: 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 ) {
47a24: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
break;
} else
index_base += information->allocation_size;
47a2a: 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++ ) {
47a2c: 5282 addql #1,%d2 <== NOT EXECUTED 47a2e: b484 cmpl %d4,%d2 <== NOT EXECUTED 47a30: 6400 01a6 bccw 47bd8 <_Objects_Extend_information+0x1f8><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
47a34: 4a98 tstl %a0@+ <== NOT EXECUTED 47a36: 66f2 bnes 47a2a <_Objects_Extend_information+0x4a><== NOT EXECUTED
do_extend = false;
47a38: 4207 clrb %d7 <== NOT EXECUTED
} else
index_base += information->allocation_size;
}
}
maximum = (uint32_t) information->maximum + information->allocation_size;
47a3a: 0281 0000 ffff andil #65535,%d1 47a40: 2641 moveal %d1,%a3 47a42: 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 ) {
47a44: b7fc 0000 ffff cmpal #65535,%a3 47a4a: 6200 0182 bhiw 47bce <_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;
47a4e: 41ea 0014 lea %a2@(20),%a0 47a52: 4c10 0800 mulsl %a0@,%d0
if ( information->auto_extend ) {
47a56: 4a2a 0010 tstb %a2@(16) 47a5a: 6700 0182 beqw 47bde <_Objects_Extend_information+0x1fe>
new_object_block = _Workspace_Allocate( block_size );
47a5e: 2f00 movel %d0,%sp@- 47a60: 4eb9 0004 9b9e jsr 49b9e <_Workspace_Allocate>
if ( !new_object_block )
47a66: 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 );
47a68: 2c00 movel %d0,%d6
if ( !new_object_block )
47a6a: 6700 0162 beqw 47bce <_Objects_Extend_information+0x1ee>
}
/*
* Do we need to grow the tables?
*/
if ( do_extend ) {
47a6e: 4a07 tstb %d7 47a70: 6700 00c4 beqw 47b36 <_Objects_Extend_information+0x156>
*/
/*
* Up the block count and maximum
*/
block_count++;
47a74: 2a44 moveal %d4,%a5 47a76: 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 *));
47a78: 200b movel %a3,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
47a7a: 41f5 da00 lea %a5@(00000000,%a5:l:2),%a0
((maximum + minimum_index) * sizeof(Objects_Control *));
47a7e: d088 addl %a0,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
47a80: d085 addl %d5,%d0
block_count++;
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
47a82: 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 );
47a84: 2f00 movel %d0,%sp@- 47a86: 4eb9 0004 9b9e jsr 49b9e <_Workspace_Allocate>
if ( !object_blocks ) {
47a8c: 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 );
47a8e: 2840 moveal %d0,%a4
if ( !object_blocks ) {
47a90: 4a80 tstl %d0 47a92: 6700 01ce beqw 47c62 <_Objects_Extend_information+0x282>
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
47a96: 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 ) {
47a98: 4280 clrl %d0
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
47a9a: 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 ) {
47a9c: 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);
47aa0: 4bf4 7800 lea %a4@(00000000,%d7:l),%a5 47aa4: de8d addl %a5,%d7 47aa6: b085 cmpl %d5,%d0 47aa8: 6200 0144 bhiw 47bee <_Objects_Extend_information+0x20e>
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47aac: 4a85 tstl %d5
47aae: 670c beqs 47abc <_Objects_Extend_information+0xdc><== NEVER TAKEN
47ab0: 2047 moveal %d7,%a0 47ab2: 4280 clrl %d0
local_table[ index ] = NULL;
47ab4: 4298 clrl %a0@+
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47ab6: 5280 addql #1,%d0 47ab8: b085 cmpl %d5,%d0
47aba: 65f8 bcss 47ab4 <_Objects_Extend_information+0xd4><== NEVER TAKEN
47abc: 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 );
47abe: 4281 clrl %d1
}
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
47ac0: 42b4 4800 clrl %a4@(00000000,%d4:l)
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47ac4: 322a 0012 movew %a2@(18),%d1
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
47ac8: 42b5 4800 clrl %a5@(00000000,%d4:l)
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47acc: 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 ;
47ace: b283 cmpl %d3,%d1
47ad0: 6310 blss 47ae2 <_Objects_Extend_information+0x102><== NEVER TAKEN
47ad2: 2247 moveal %d7,%a1
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
47ad4: 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 ;
47ad6: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
47ada: 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++ ) {
47adc: 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 ;
47ade: b280 cmpl %d0,%d1
47ae0: 62f8 bhis 47ada <_Objects_Extend_information+0xfa>
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
}
_ISR_Disable( level );
47ae2: 203c 0000 0700 movel #1792,%d0 47ae8: 40c4 movew %sr,%d4 47aea: 8084 orl %d4,%d0 47aec: 46c0 movew %d0,%sr
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47aee: 2012 movel %a2@,%d0 47af0: 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(
47af2: 4281 clrl %d1 47af4: eba8 lsll %d5,%d0 47af6: 4285 clrl %d5 47af8: 3a0b movew %a3,%d5 47afa: 322a 0004 movew %a2@(4),%d1 47afe: 08c0 0010 bset #16,%d0 47b02: 2245 moveal %d5,%a1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b04: 7a1b moveq #27,%d5 47b06: eba9 lsll %d5,%d1
local_table[ index ] = NULL;
}
_ISR_Disable( level );
old_tables = information->object_blocks;
47b08: 206a 002e moveal %a2@(46),%a0 47b0c: 8081 orl %d1,%d0
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b0e: 2209 movel %a1,%d1 47b10: 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;
47b12: 354b 000e movew %a3,%a2@(14)
_ISR_Disable( level );
old_tables = information->object_blocks;
information->object_blocks = object_blocks;
47b16: 254c 002e movel %a4,%a2@(46)
information->inactive_per_block = inactive_per_block;
47b1a: 254d 002a movel %a5,%a2@(42) 47b1e: 2541 000a movel %d1,%a2@(10)
information->local_table = local_table;
47b22: 2547 0018 movel %d7,%a2@(24)
information->the_class,
_Objects_Local_node,
information->maximum
);
_ISR_Enable( level );
47b26: 46c4 movew %d4,%sr
if ( old_tables )
47b28: 4a88 tstl %a0
47b2a: 670a beqs 47b36 <_Objects_Extend_information+0x156><== ALWAYS TAKEN
_Workspace_Free( old_tables );
47b2c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47b2e: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 47b34: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b36: 206a 002e moveal %a2@(46),%a0
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b3a: 4280 clrl %d0 47b3c: 280e movel %fp,%d4 47b3e: 0684 ffff fff4 addil #-12,%d4 47b44: 47f9 0004 6f50 lea 46f50 <_Chain_Get>,%a3
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47b4a: 2a0a movel %a2,%d5 47b4c: 0685 0000 001c addil #28,%d5 47b52: 49f9 0004 6ef0 lea 46ef0 <_Chain_Append>,%a4
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b58: e58a lsll #2,%d2
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b5a: 302a 0012 movew %a2@(18),%d0
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b5e: 2186 2800 movel %d6,%a0@(00000000,%d2:l)
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b62: 2f2a 0014 movel %a2@(20),%sp@- 47b66: 2f00 movel %d0,%sp@- 47b68: 2f06 movel %d6,%sp@- 47b6a: 2f04 movel %d4,%sp@- 47b6c: 4eb9 0004 c42c jsr 4c42c <_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 ) {
47b72: 4fef 0010 lea %sp@(16),%sp 47b76: 2f04 movel %d4,%sp@- 47b78: 4e93 jsr %a3@ 47b7a: 588f addql #4,%sp 47b7c: 4a80 tstl %d0
47b7e: 6734 beqs 47bb4 <_Objects_Extend_information+0x1d4><== NEVER TAKEN
47b80: 2212 movel %a2@,%d1 47b82: 7e18 moveq #24,%d7
the_object->id = _Objects_Build_id(
47b84: 4286 clrl %d6 47b86: 2040 moveal %d0,%a0 47b88: 3c2a 0004 movew %a2@(4),%d6 47b8c: efa9 lsll %d7,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b8e: 1e3c 001b moveb #27,%d7
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b92: 08c1 0010 bset #16,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b96: efae lsll %d7,%d6 47b98: 8286 orl %d6,%d1
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b9a: 8283 orl %d3,%d1
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
47b9c: 5283 addql #1,%d3 47b9e: 2141 0008 movel %d1,%a0@(8)
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47ba2: 2f00 movel %d0,%sp@- 47ba4: 2f05 movel %d5,%sp@- 47ba6: 4e94 jsr %a4@
index++;
47ba8: 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 ) {
47baa: 2f04 movel %d4,%sp@- 47bac: 4e93 jsr %a3@ 47bae: 588f addql #4,%sp 47bb0: 4a80 tstl %d0
47bb2: 66cc bnes 47b80 <_Objects_Extend_information+0x1a0>
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47bb4: 4281 clrl %d1 47bb6: 302a 0012 movew %a2@(18),%d0
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47bba: 326a 0028 moveaw %a2@(40),%a1
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47bbe: 206a 002a moveal %a2@(42),%a0 47bc2: 3200 movew %d0,%d1
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47bc4: d089 addl %a1,%d0
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47bc6: 2181 2800 movel %d1,%a0@(00000000,%d2:l)
information->inactive =
47bca: 3540 0028 movew %d0,%a2@(40)
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47bce: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 47bd4: 4e5e unlk %fp 47bd6: 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;
47bd8: 7e01 moveq #1,%d7 <== NOT EXECUTED 47bda: 6000 fe5e braw 47a3a <_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 );
47bde: 2f00 movel %d0,%sp@- 47be0: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Allocate_or_fatal_error> 47be6: 588f addql #4,%sp 47be8: 2c00 movel %d0,%d6 47bea: 6000 fe82 braw 47a6e <_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,
47bee: e58c lsll #2,%d4 <== NOT EXECUTED 47bf0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47bf2: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED 47bf6: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47bf8: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
47bfe: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47c00: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED 47c04: 2f0d movel %a5,%sp@- <== NOT EXECUTED 47c06: 4eb9 0004 f218 jsr 4f218 <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 *) );
47c0c: 4280 clrl %d0 <== NOT EXECUTED 47c0e: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 47c12: 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,
47c14: e58d lsll #2,%d5 <== NOT EXECUTED 47c16: 2f05 movel %d5,%sp@- <== NOT EXECUTED 47c18: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 47c1c: 2f07 movel %d7,%sp@- <== NOT EXECUTED 47c1e: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED 47c24: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 47c28: 6000 fe94 braw 47abe <_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 )
47c2c: 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 );
47c2e: 2605 movel %d5,%d3
index_base = minimum_index; block = 0;
47c30: 4282 clrl %d2
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
block_count = 0;
47c32: 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 )
47c34: 322a 000e movew %a2@(14),%d1 47c38: 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;
47c3c: 7e01 moveq #1,%d7 47c3e: 6000 fdfa braw 47a3a <_Objects_Extend_information+0x5a>
minimum_index = _Objects_Get_index( information->minimum_id );
47c42: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index; block = 0;
47c44: 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++ ) {
47c46: 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;
47c4c: 7e01 moveq #1,%d7 <== NOT EXECUTED 47c4e: 6000 fdea braw 47a3a <_Objects_Extend_information+0x5a><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
47c52: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index; block = 0;
47c54: 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 ) {
47c56: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
47c5c: 4207 clrb %d7 <== NOT EXECUTED 47c5e: 6000 fdda braw 47a3a <_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 );
47c62: 2f06 movel %d6,%sp@- <== NOT EXECUTED 47c64: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED
return;
47c6a: 588f addql #4,%sp <== NOT EXECUTED
}
information->inactive_per_block[ block ] = information->allocation_size;
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47c6c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 47c72: 4e5e unlk %fp <== NOT EXECUTED
...
00047c78 <_Objects_Free>:
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
47c78: 4e56 fff0 linkw %fp,#-16 47c7c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 47c80: 266e 000c moveal %fp@(12),%a3 47c84: 246e 0008 moveal %fp@(8),%a2
uint32_t allocation_size = information->allocation_size;
_Chain_Append( &information->Inactive, &the_object->Node );
47c88: 2f0b movel %a3,%sp@- 47c8a: 486a 001c pea %a2@(28)
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
47c8e: 342a 0012 movew %a2@(18),%d2
_Chain_Append( &information->Inactive, &the_object->Node );
47c92: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append>
if ( information->auto_extend ) {
47c98: 508f addql #8,%sp 47c9a: 4a2a 0010 tstb %a2@(16)
47c9e: 6740 beqs 47ce0 <_Objects_Free+0x68> <== ALWAYS TAKEN
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47ca0: 4280 clrl %d0 <== NOT EXECUTED 47ca2: 4283 clrl %d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47ca4: 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 ) -
47ca6: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED 47caa: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47cae: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
47cb2: 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 ) -
47cb6: 9083 subl %d3,%d0 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47cb8: 4c41 0000 remul %d1,%d0,%d0 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
information->inactive++;
47cbc: 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;
47cc0: 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 ]++;
47cc6: e588 lsll #2,%d0 <== NOT EXECUTED
information->inactive++;
47cc8: 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 ) ) ) {
47cca: 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 ]++;
47ccc: d1c0 addal %d0,%a0 <== NOT EXECUTED 47cce: 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 ) ) ) {
47cd0: 4280 clrl %d0 <== NOT EXECUTED 47cd2: e28b lsrl #1,%d3 <== NOT EXECUTED 47cd4: d483 addl %d3,%d2 <== NOT EXECUTED 47cd6: 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++;
47cd8: 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 ) ) ) {
47cdc: b480 cmpl %d0,%d2 <== NOT EXECUTED 47cde: 650a bcss 47cea <_Objects_Free+0x72> <== NOT EXECUTED
_Objects_Shrink_information( information );
}
}
}
47ce0: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 47ce6: 4e5e unlk %fp 47ce8: 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 );
47cea: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
}
47cee: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 47cf4: 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 );
47cf6: 4ef9 0004 8014 jmp 48014 <_Objects_Shrink_information> <== NOT EXECUTED
00047de4 <_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;
47de4: 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 ) {
47de6: 4281 clrl %d1
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47de8: 4e56 fffc linkw %fp,#-4 47dec: 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;
47df0: 90a8 0006 subl %a0@(6),%d0 47df4: d0ae 000c addl %fp@(12),%d0
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47df8: 2f0a movel %a2,%sp@- 47dfa: 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 ) {
47dfe: 3228 000e movew %a0@(14),%d1 47e02: b280 cmpl %d0,%d1
47e04: 6522 bcss 47e28 <_Objects_Get+0x44> <== NEVER TAKEN
47e06: 2239 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d1 47e0c: 5281 addql #1,%d1 47e0e: 23c1 0005 fcf8 movel %d1,5fcf8 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( (the_object = information->local_table[ index ]) != NULL ) {
47e14: 2068 0018 moveal %a0@(24),%a0 47e18: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47e1c: 6718 beqs 47e36 <_Objects_Get+0x52> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
47e1e: 4292 clrl %a2@
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47e20: 246e fff8 moveal %fp@(-8),%a2 47e24: 4e5e unlk %fp 47e26: 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;
47e28: 7001 moveq #1,%d0 <== NOT EXECUTED 47e2a: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47e2c: 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;
47e30: 4280 clrl %d0 <== NOT EXECUTED
#endif }
47e32: 4e5e unlk %fp <== NOT EXECUTED 47e34: 4e75 rts <== NOT EXECUTED
/*
* Valid Id for this API, Class and Node but the object has not
* been allocated yet.
*/
_Thread_Enable_dispatch();
47e36: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 47e3a: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
*location = OBJECTS_ERROR;
return NULL;
47e40: 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;
47e44: 7201 moveq #1,%d1 <== NOT EXECUTED 47e46: 2481 movel %d1,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47e48: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47e4c: 4e5e unlk %fp <== NOT EXECUTED
00047d28 <_Objects_Get_information>:
Objects_Information *_Objects_Get_information(
Objects_APIs the_api,
uint16_t the_class
)
{
47d28: 4e56 0000 linkw %fp,#0 47d2c: 2f02 movel %d2,%sp@- 47d2e: 342e 000e movew %fp@(14),%d2
Objects_Information *info;
int the_class_api_maximum;
if ( !the_class )
47d32: 660a bnes 47d3e <_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;
47d34: 4280 clrl %d0 <== NOT EXECUTED
if ( info->maximum == 0 )
return NULL;
#endif
return info;
}
47d36: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 47d3a: 4e5e unlk %fp <== NOT EXECUTED 47d3c: 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 );
47d3e: 2f2e 0008 movel %fp@(8),%sp@- 47d42: 4eb9 0004 c98c jsr 4c98c <_Objects_API_maximum_class>
if ( the_class_api_maximum == 0 )
47d48: 588f addql #4,%sp 47d4a: 4a80 tstl %d0
47d4c: 67e6 beqs 47d34 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( the_class > (uint32_t) the_class_api_maximum )
47d4e: 0282 0000 ffff andil #65535,%d2 47d54: b480 cmpl %d0,%d2
47d56: 62dc bhis 47d34 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( !_Objects_Information_table[ the_api ] )
47d58: 202e 0008 movel %fp@(8),%d0 47d5c: 41f9 0005 fcb4 lea 5fcb4 <_Objects_Information_table>,%a0 47d62: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 47d66: 4a88 tstl %a0
47d68: 67ca beqs 47d34 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
info = _Objects_Information_table[ the_api ][ the_class ];
47d6a: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0
if ( !info )
47d6e: 67c6 beqs 47d36 <_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;
47d70: 2040 moveal %d0,%a0 47d72: 4a68 000e tstw %a0@(14) 47d76: 56c1 sne %d1
#endif
return info;
}
47d78: 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;
47d7c: 49c1 extbl %d1
#endif
return info;
}
47d7e: 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;
47d80: c081 andl %d1,%d0 <== NOT EXECUTED
#endif
return info;
}
00047d84 <_Objects_Get_isr_disable>:
{
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47d84: 7001 moveq #1,%d0
_ISR_Disable( level );
47d86: 223c 0000 0700 movel #1792,%d1
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47d8c: 4e56 0000 linkw %fp,#0 47d90: 206e 0008 moveal %fp@(8),%a0
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47d94: 90a8 0006 subl %a0@(6),%d0 47d98: d0ae 000c addl %fp@(12),%d0
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47d9c: 2f02 movel %d2,%sp@- 47d9e: 226e 0010 moveal %fp@(16),%a1
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
_ISR_Disable( level );
47da2: 40c2 movew %sr,%d2 47da4: 8282 orl %d2,%d1 47da6: 46c1 movew %d1,%sr
if ( information->maximum >= index ) {
47da8: 4281 clrl %d1 47daa: 3228 000e movew %a0@(14),%d1 47dae: b280 cmpl %d0,%d1
47db0: 6518 bcss 47dca <_Objects_Get_isr_disable+0x46> <== NEVER TAKEN
if ( (the_object = information->local_table[ index ]) != NULL ) {
47db2: 2068 0018 moveal %a0@(24),%a0 47db6: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47dba: 671c beqs 47dd8 <_Objects_Get_isr_disable+0x54> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
*level_p = level;
47dbc: 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;
47dc0: 4291 clrl %a1@
*level_p = level;
47dc2: 2082 movel %d2,%a0@
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47dc4: 241f movel %sp@+,%d2 47dc6: 4e5e unlk %fp 47dc8: 4e75 rts
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
47dca: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47dcc: 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;
47dce: 4280 clrl %d0 <== NOT EXECUTED
#endif }
47dd0: 241f movel %sp@+,%d2 <== NOT EXECUTED 47dd2: 4e5e unlk %fp <== NOT EXECUTED
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
47dd4: 2281 movel %d1,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47dd6: 4e75 rts <== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
*location = OBJECTS_LOCAL;
*level_p = level;
return the_object;
}
_ISR_Enable( level );
47dd8: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47dda: 7401 moveq #1,%d2 <== NOT EXECUTED 47ddc: 2282 movel %d2,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif }
47dde: 241f movel %sp@+,%d2 <== NOT EXECUTED 47de0: 4e5e unlk %fp <== NOT EXECUTED
0004980c <_Objects_Get_name_as_string>:
char *_Objects_Get_name_as_string(
Objects_Id id,
size_t length,
char *name
)
{
4980c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 49810: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 49814: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 49818: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
char lname[5];
Objects_Control *the_object;
Objects_Locations location;
Objects_Id tmpId;
if ( length == 0 )
4981c: 4a83 tstl %d3 <== NOT EXECUTED 4981e: 660e bnes 4982e <_Objects_Get_name_as_string+0x22><== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE:
/* not supported */
#endif
case OBJECTS_ERROR:
return NULL;
49820: 4282 clrl %d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
return name;
}
return NULL; /* unreachable path */
}
49822: 2002 movel %d2,%d0 <== NOT EXECUTED 49824: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4982a: 4e5e unlk %fp <== NOT EXECUTED 4982c: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( length == 0 )
return NULL;
if ( name == NULL )
4982e: 4a82 tstl %d2 <== NOT EXECUTED 49830: 67f0 beqs 49822 <_Objects_Get_name_as_string+0x16><== NOT EXECUTED
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
49832: 4aae 0008 tstl %fp@(8) <== NOT EXECUTED 49836: 6600 009a bnew 498d2 <_Objects_Get_name_as_string+0xc6><== NOT EXECUTED 4983a: 2079 0006 a750 moveal 6a750 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 49840: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
49844: 2f04 movel %d4,%sp@- <== NOT EXECUTED 49846: 4eb9 0004 9724 jsr 49724 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
4984c: 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 );
4984e: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( !information )
49850: 4a80 tstl %d0 <== NOT EXECUTED 49852: 67cc beqs 49820 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED
return NULL;
the_object = _Objects_Get( information, tmpId, &location );
49854: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49858: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4985a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4985c: 4eb9 0004 9910 jsr 49910 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
49862: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49866: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4986a: 66b4 bnes 49820 <_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 ) {
4986c: 4a2a 0032 tstb %a2@(50) <== NOT EXECUTED 49870: 6768 beqs 498da <_Objects_Get_name_as_string+0xce><== NOT EXECUTED
s = the_object->name.name_p;
49872: 2040 moveal %d0,%a0 <== NOT EXECUTED 49874: 2668 000c moveal %a0@(12),%a3 <== NOT EXECUTED
lname[ 4 ] = '\0';
s = lname;
}
d = name;
if ( s ) {
49878: 4a8b tstl %a3 <== NOT EXECUTED 4987a: 674a beqs 498c6 <_Objects_Get_name_as_string+0xba><== NOT EXECUTED
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
4987c: 5383 subql #1,%d3 <== NOT EXECUTED 4987e: 6746 beqs 498c6 <_Objects_Get_name_as_string+0xba><== NOT EXECUTED 49880: 1013 moveb %a3@,%d0 <== NOT EXECUTED 49882: 6742 beqs 498c6 <_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(
49884: 528b addql #1,%a3 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49886: 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(
49888: 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 : '*';
4988a: 4281 clrl %d1 <== NOT EXECUTED 4988c: 1200 moveb %d0,%d1 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
4988e: 5288 addql #1,%a0 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
49890: 2479 0006 0e60 moveal 60e60 <__ctype_ptr__>,%a2 <== NOT EXECUTED 49896: 1232 1801 moveb %a2@(00000001,%d1:l),%d1 <== NOT EXECUTED 4989a: 49c1 extbl %d1 <== NOT EXECUTED 4989c: 0281 0000 0097 andil #151,%d1 <== NOT EXECUTED 498a2: 6602 bnes 498a6 <_Objects_Get_name_as_string+0x9a><== NOT EXECUTED 498a4: 702a moveq #42,%d0 <== NOT EXECUTED 498a6: 12c0 moveb %d0,%a1@+ <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
498a8: 2449 moveal %a1,%a2 <== NOT EXECUTED 498aa: b688 cmpl %a0,%d3 <== NOT EXECUTED 498ac: 6304 blss 498b2 <_Objects_Get_name_as_string+0xa6><== NOT EXECUTED 498ae: 101b moveb %a3@+,%d0 <== NOT EXECUTED 498b0: 66d8 bnes 4988a <_Objects_Get_name_as_string+0x7e><== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
498b2: 4212 clrb %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
498b4: 4eb9 0004 a442 jsr 4a442 <_Thread_Enable_dispatch> <== NOT EXECUTED
return name;
}
return NULL; /* unreachable path */
}
498ba: 2002 movel %d2,%d0 <== NOT EXECUTED 498bc: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED 498c2: 4e5e unlk %fp <== NOT EXECUTED 498c4: 4e75 rts <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
498c6: 2442 moveal %d2,%a2 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
498c8: 4212 clrb %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
498ca: 4eb9 0004 a442 jsr 4a442 <_Thread_Enable_dispatch> <== NOT EXECUTED 498d0: 60e8 bras 498ba <_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;
498d2: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 498d6: 6000 ff6c braw 49844 <_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;
498da: 2040 moveal %d0,%a0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
498dc: 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;
498de: 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;
498e2: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
498e6: 2a00 movel %d0,%d5 <== NOT EXECUTED 498e8: e2ad lsrl %d1,%d5 <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
498ea: 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;
498ec: 2800 movel %d0,%d4 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
498ee: e089 lsrl #8,%d1 <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
498f0: 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;
498f4: 4244 clrw %d4 <== NOT EXECUTED 498f6: 4844 swap %d4 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
498f8: 4200 clrb %d0 <== NOT EXECUTED
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
498fa: 1d45 fff7 moveb %d5,%fp@(-9) <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
498fe: 1d44 fff8 moveb %d4,%fp@(-8) <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
49902: 1d41 fff9 moveb %d1,%fp@(-7) <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
49906: 1d40 fffb moveb %d0,%fp@(-5) <== NOT EXECUTED 4990a: 6000 ff70 braw 4987c <_Objects_Get_name_as_string+0x70><== NOT EXECUTED
...
00047fec <_Objects_Get_next>:
Objects_Information *information,
Objects_Id id,
Objects_Locations *location_p,
Objects_Id *next_id_p
)
{
47fec: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47ff0: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 47ff4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47ff8: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
Objects_Control *object;
Objects_Id next_id;
if ( !information )
47ffc: 4a8a tstl %a2 <== NOT EXECUTED 47ffe: 660c bnes 4800c <_Objects_Get_next+0x20> <== NOT EXECUTED
if ( !location_p )
return NULL;
if ( !next_id_p )
return NULL;
48000: 4280 clrl %d0 <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
48002: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 48008: 4e5e unlk %fp <== NOT EXECUTED 4800a: 4e75 rts <== NOT EXECUTED
Objects_Id next_id;
if ( !information )
return NULL;
if ( !location_p )
4800c: 4a8b tstl %a3 <== NOT EXECUTED 4800e: 67f0 beqs 48000 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if ( !next_id_p )
48010: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED 48014: 67ea beqs 48000 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
48016: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED 4801a: 663a bnes 48056 <_Objects_Get_next+0x6a> <== NOT EXECUTED
next_id = information->minimum_id;
4801c: 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);
48020: 49f9 0004 807c lea 4807c <_Objects_Get>,%a4 <== NOT EXECUTED
else
next_id = id;
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
48026: 4281 clrl %d1 <== NOT EXECUTED 48028: 4280 clrl %d0 <== NOT EXECUTED 4802a: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED 4802e: 3002 movew %d2,%d0 <== NOT EXECUTED 48030: b081 cmpl %d1,%d0 <== NOT EXECUTED 48032: 622e bhis 48062 <_Objects_Get_next+0x76> <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
48034: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48036: 2f02 movel %d2,%sp@- <== NOT EXECUTED
next_id++;
48038: 5282 addql #1,%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
4803a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4803c: 4e94 jsr %a4@ <== NOT EXECUTED
next_id++;
} while (*location_p != OBJECTS_LOCAL);
4803e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48042: 4a93 tstl %a3@ <== NOT EXECUTED 48044: 66e0 bnes 48026 <_Objects_Get_next+0x3a> <== NOT EXECUTED
*next_id_p = next_id;
48046: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4804a: 2082 movel %d2,%a0@ <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
4804c: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 48052: 4e5e unlk %fp <== NOT EXECUTED 48054: 4e75 rts <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
next_id = information->minimum_id;
else
next_id = id;
48056: 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);
4805a: 49f9 0004 807c lea 4807c <_Objects_Get>,%a4 <== NOT EXECUTED 48060: 60c4 bras 48026 <_Objects_Get_next+0x3a> <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
48062: 7401 moveq #1,%d2 <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
48064: 72ff moveq #-1,%d1 <== NOT EXECUTED
return 0;
48066: 4280 clrl %d0 <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
48068: 2682 movel %d2,%a3@ <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
4806a: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
return 0;
}
4806e: 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;
48074: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
48076: 4e5e unlk %fp <== NOT EXECUTED
...
0005b93c <_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;
5b93c: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b93e: 4281 clrl %d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b940: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5b944: 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;
5b948: 90a8 0006 subl %a0@(6),%d0 <== NOT EXECUTED 5b94c: d0ae 000c addl %fp@(12),%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b950: 3228 000e movew %a0@(14),%d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b954: 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 ) {
5b958: b280 cmpl %d0,%d1 <== NOT EXECUTED 5b95a: 6510 bcss 5b96c <_Objects_Get_no_protection+0x30><== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
5b95c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 5b960: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 5b964: 6706 beqs 5b96c <_Objects_Get_no_protection+0x30><== NOT EXECUTED
*location = OBJECTS_LOCAL;
5b966: 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; }
5b968: 4e5e unlk %fp <== NOT EXECUTED 5b96a: 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;
5b96c: 7001 moveq #1,%d0 <== NOT EXECUTED
return NULL; }
5b96e: 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;
5b970: 2280 movel %d0,%a1@ <== NOT EXECUTED
return NULL;
5b972: 4280 clrl %d0 <== NOT EXECUTED
}
...
00049540 <_Objects_Id_to_name>:
*/
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
)
{
49540: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49544: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 49548: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Caller is trusted for name != NULL.
*/
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4954a: 4a81 tstl %d1 <== NOT EXECUTED 4954c: 660a bnes 49558 <_Objects_Id_to_name+0x18> <== NOT EXECUTED 4954e: 2079 0006 1e6e moveal 61e6e <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 49554: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED 49558: 7418 moveq #24,%d2 <== NOT EXECUTED 4955a: 2001 movel %d1,%d0 <== NOT EXECUTED 4955c: e4a8 lsrl %d2,%d0 <== NOT EXECUTED 4955e: 143c 0007 moveb #7,%d2 <== NOT EXECUTED 49562: 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 )
49564: 143c 0002 moveb #2,%d2 <== NOT EXECUTED 49568: 2040 moveal %d0,%a0 <== NOT EXECUTED 4956a: 5388 subql #1,%a0 <== NOT EXECUTED 4956c: b488 cmpl %a0,%d2 <== NOT EXECUTED 4956e: 6522 bcss 49592 <_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 ] )
49570: 41f9 0006 199c lea 6199c <_Objects_Information_table>,%a0 <== NOT EXECUTED 49576: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED 4957a: 4a88 tstl %a0 <== NOT EXECUTED 4957c: 6714 beqs 49592 <_Objects_Id_to_name+0x52> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
4957e: 2001 movel %d1,%d0 <== NOT EXECUTED 49580: 741b moveq #27,%d2 <== NOT EXECUTED 49582: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
the_class = _Objects_Get_class( tmpId );
information = _Objects_Information_table[ the_api ][ the_class ];
49584: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
if ( !information )
49588: 4a88 tstl %a0 <== NOT EXECUTED 4958a: 6706 beqs 49592 <_Objects_Id_to_name+0x52> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string )
4958c: 4a28 0032 tstb %a0@(50) <== NOT EXECUTED 49590: 670a beqs 4959c <_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;
}
49592: 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;
49596: 7003 moveq #3,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
49598: 4e5e unlk %fp <== NOT EXECUTED 4959a: 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 );
4959c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 495a0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 495a2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 495a4: 4eb9 0004 94d4 jsr 494d4 <_Objects_Get> <== NOT EXECUTED
if ( !the_object )
495aa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 495ae: 4a80 tstl %d0 <== NOT EXECUTED 495b0: 67e0 beqs 49592 <_Objects_Id_to_name+0x52> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
495b2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 495b6: 2240 moveal %d0,%a1 <== NOT EXECUTED 495b8: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
495bc: 4eb9 0004 a112 jsr 4a112 <_Thread_Enable_dispatch> <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; }
495c2: 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;
495c6: 4280 clrl %d0 <== NOT EXECUTED
}
495c8: 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
Objects_Control *the_object;
uint32_t index;
/* 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 8598 lea 58598 <strncmp>,%a5 <== NOT EXECUTED
if ( !name )
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
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
if ( !name )
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
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
if ( !name )
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
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 index;
/* 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
00047f94 <_Objects_Name_to_id_u32>:
Objects_Information *information,
uint32_t name,
uint32_t node,
Objects_Id *id
)
{
47f94: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47f98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47f9c: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 47fa0: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 47fa4: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 47fa8: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
Objects_Name name_for_mp;
#endif
/* ASSERT: information->is_string == false */
if ( !id )
47fac: 4a8a tstl %a2 <== NOT EXECUTED 47fae: 6758 beqs 48008 <_Objects_Name_to_id_u32+0x74> <== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( name == 0 )
47fb0: 4a81 tstl %d1 <== NOT EXECUTED 47fb2: 6718 beqs 47fcc <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
search_local_node = false;
if ( information->maximum != 0 &&
47fb4: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED 47fb8: 6712 beqs 47fcc <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED 47fba: 4a80 tstl %d0 <== NOT EXECUTED 47fbc: 6718 beqs 47fd6 <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
(node == OBJECTS_SEARCH_ALL_NODES ||
47fbe: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 47fc4: 6710 beqs 47fd6 <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
node == OBJECTS_SEARCH_LOCAL_NODE ||
47fc6: 7601 moveq #1,%d3 <== NOT EXECUTED 47fc8: b680 cmpl %d0,%d3 <== NOT EXECUTED 47fca: 670a beqs 47fd6 <_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;
47fcc: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif }
47fce: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 47fd2: 4e5e unlk %fp <== NOT EXECUTED 47fd4: 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(
47fd6: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED 47fda: 7001 moveq #1,%d0 <== NOT EXECUTED 47fdc: 5889 addql #4,%a1 <== NOT EXECUTED
_Objects_Is_local_node( node )
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
47fde: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
the_object = information->local_table[ index ];
47fe4: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
_Objects_Is_local_node( node )
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
47fe6: 5280 addql #1,%d0 <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
47fe8: 4a88 tstl %a0 <== NOT EXECUTED 47fea: 6706 beqs 47ff2 <_Objects_Name_to_id_u32+0x5e> <== NOT EXECUTED
continue;
if ( name == the_object->name.name_u32 ) {
47fec: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED 47ff0: 6708 beqs 47ffa <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED
_Objects_Is_local_node( node )
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
47ff2: b082 cmpl %d2,%d0 <== NOT EXECUTED 47ff4: 63ee blss 47fe4 <_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;
47ff6: 7001 moveq #1,%d0 <== NOT EXECUTED 47ff8: 60d4 bras 47fce <_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;
47ffa: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
47ffe: 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 }
48000: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 48004: 4e5e unlk %fp <== NOT EXECUTED 48006: 4e75 rts <== NOT EXECUTED
#endif
/* ASSERT: information->is_string == false */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
48008: 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 }
4800a: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 4800e: 4e5e unlk %fp <== NOT EXECUTED
...
00047f64 <_Objects_Namespace_remove>:
void _Objects_Namespace_remove(
Objects_Information *information,
Objects_Control *the_object
)
{
47f64: 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 )
47f68: 206e 0008 moveal %fp@(8),%a0
void _Objects_Namespace_remove(
Objects_Information *information,
Objects_Control *the_object
)
{
47f6c: 2f0a movel %a2,%sp@- 47f6e: 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 )
47f72: 4a28 0032 tstb %a0@(50)
47f76: 6710 beqs 47f88 <_Objects_Namespace_remove+0x24> <== ALWAYS TAKEN
47f78: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 47f7c: 670a beqs 47f88 <_Objects_Namespace_remove+0x24> <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
47f7e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47f80: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 47f86: 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;
47f88: 42aa 000c clrl %a2@(12)
}
47f8c: 246e fffc moveal %fp@(-4),%a2
47f90: 4e5e unlk %fp <== NOT EXECUTED
0004839c <_Objects_Set_name>:
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
4839c: 4280 clrl %d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
4839e: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 483a2: 48d7 3c00 moveml %a2-%a5,%sp@ <== NOT EXECUTED 483a6: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
483aa: 302c 0034 movew %a4@(52),%d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
483ae: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
483b2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
483b4: 2a6e 000c moveal %fp@(12),%a5 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
483b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 483ba: 4eb9 0005 06bc jsr 506bc <strnlen> <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
483c0: 508f addql #8,%sp <== NOT EXECUTED
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
483c2: 2640 moveal %d0,%a3 <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
483c4: 4a2c 0032 tstb %a4@(50) <== NOT EXECUTED 483c8: 6662 bnes 4842c <_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(
483ca: 7018 moveq #24,%d0 <== NOT EXECUTED 483cc: 1212 moveb %a2@,%d1 <== NOT EXECUTED 483ce: 49c1 extbl %d1 <== NOT EXECUTED 483d0: e1a9 lsll %d0,%d1 <== NOT EXECUTED 483d2: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 483d6: b08b cmpl %a3,%d0 <== NOT EXECUTED 483d8: 643c bccs 48416 <_Objects_Set_name+0x7a> <== NOT EXECUTED 483da: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED 483de: 49c0 extbl %d0 <== NOT EXECUTED 483e0: 4840 swap %d0 <== NOT EXECUTED 483e2: 4240 clrw %d0 <== NOT EXECUTED 483e4: 8081 orl %d1,%d0 <== NOT EXECUTED 483e6: 7202 moveq #2,%d1 <== NOT EXECUTED 483e8: b28b cmpl %a3,%d1 <== NOT EXECUTED 483ea: 6730 beqs 4841c <_Objects_Set_name+0x80> <== NOT EXECUTED 483ec: 122a 0002 moveb %a2@(2),%d1 <== NOT EXECUTED 483f0: 49c1 extbl %d1 <== NOT EXECUTED 483f2: e189 lsll #8,%d1 <== NOT EXECUTED 483f4: 8081 orl %d1,%d0 <== NOT EXECUTED 483f6: 7203 moveq #3,%d1 <== NOT EXECUTED 483f8: b28b cmpl %a3,%d1 <== NOT EXECUTED 483fa: 6700 0088 beqw 48484 <_Objects_Set_name+0xe8> <== NOT EXECUTED 483fe: 122a 0003 moveb %a2@(3),%d1 <== NOT EXECUTED 48402: 49c1 extbl %d1 <== NOT EXECUTED 48404: 8081 orl %d1,%d0 <== NOT EXECUTED 48406: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
4840a: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4840c: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED 48412: 4e5e unlk %fp <== NOT EXECUTED 48414: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
48416: 2001 movel %d1,%d0 <== NOT EXECUTED 48418: 08c0 0015 bset #21,%d0 <== NOT EXECUTED 4841c: 7220 moveq #32,%d1 <== NOT EXECUTED 4841e: 08c0 000d bset #13,%d0 <== NOT EXECUTED 48422: 8081 orl %d1,%d0 <== NOT EXECUTED 48424: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
48428: 7001 moveq #1,%d0 <== NOT EXECUTED 4842a: 60e0 bras 4840c <_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 );
4842c: 486b 0001 pea %a3@(1) <== NOT EXECUTED 48430: 4eb9 0004 a01e jsr 4a01e <_Workspace_Allocate> <== NOT EXECUTED
if ( !d )
48436: 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 );
48438: 2840 moveal %d0,%a4 <== NOT EXECUTED
if ( !d )
4843a: 4a80 tstl %d0 <== NOT EXECUTED 4843c: 673a beqs 48478 <_Objects_Set_name+0xdc> <== NOT EXECUTED
return false;
if ( the_object->name.name_p ) {
4843e: 202d 000c movel %a5@(12),%d0 <== NOT EXECUTED 48442: 670e beqs 48452 <_Objects_Set_name+0xb6> <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
48444: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48446: 4eb9 0004 a03a jsr 4a03a <_Workspace_Free> <== NOT EXECUTED
the_object->name.name_p = NULL;
4844c: 588f addql #4,%sp <== NOT EXECUTED 4844e: 42ad 000c clrl %a5@(12) <== NOT EXECUTED
}
strncpy( d, name, length );
48452: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48454: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48456: 2f0c movel %a4,%sp@- <== NOT EXECUTED 48458: 4eb9 0005 0638 jsr 50638 <strncpy> <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
4845e: 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';
48462: 4200 clrb %d0 <== NOT EXECUTED 48464: 1980 b800 moveb %d0,%a4@(00000000,%a3:l) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
48468: 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;
4846a: 2b4c 000c movel %a4,%a5@(12) <== NOT EXECUTED
);
}
return true;
}
4846e: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED 48474: 4e5e unlk %fp <== NOT EXECUTED 48476: 4e75 rts <== NOT EXECUTED 48478: 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;
4847e: 4200 clrb %d0 <== NOT EXECUTED
);
}
return true;
}
48480: 4e5e unlk %fp <== NOT EXECUTED 48482: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
48484: 7220 moveq #32,%d1 <== NOT EXECUTED 48486: 8081 orl %d1,%d0 <== NOT EXECUTED 48488: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
4848c: 7001 moveq #1,%d0 <== NOT EXECUTED 4848e: 6000 ff7c braw 4840c <_Objects_Set_name+0x70> <== NOT EXECUTED
...
00048014 <_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) /
48014: 4281 clrl %d1 <== NOT EXECUTED
*/
void _Objects_Shrink_information(
Objects_Information *information
)
{
48016: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4801a: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4801e: 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 );
48022: 4283 clrl %d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
48024: 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 );
48026: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
4802a: 382a 000e movew %a2@(14),%d4 <== NOT EXECUTED 4802e: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED 48032: 9883 subl %d3,%d4 <== NOT EXECUTED 48034: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
48038: 6774 beqs 480ae <_Objects_Shrink_information+0x9a><== NOT EXECUTED
if ( information->inactive_per_block[ block ] ==
4803a: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED 4803e: b290 cmpl %a0@,%d1 <== NOT EXECUTED 48040: 677e beqs 480c0 <_Objects_Shrink_information+0xac><== NOT EXECUTED
* the_block - the block to remove
*
* Output parameters: NONE
*/
void _Objects_Shrink_information(
48042: 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++ ) {
48044: 4280 clrl %d0 <== NOT EXECUTED 48046: 5280 addql #1,%d0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
48048: 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++ ) {
4804a: b084 cmpl %d4,%d0 <== NOT EXECUTED 4804c: 6460 bccs 480ae <_Objects_Shrink_information+0x9a><== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
4804e: 2400 movel %d0,%d2 <== NOT EXECUTED 48050: 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 ] ==
48052: b298 cmpl %a0@+,%d1 <== NOT EXECUTED 48054: 66f0 bnes 48046 <_Objects_Shrink_information+0x32><== NOT EXECUTED
information->allocation_size ) {
/*
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) _Chain_First( &information->Inactive );
48056: 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 );
4805a: 47f9 0004 6f28 lea 46f28 <_Chain_Extract>,%a3 <== NOT EXECUTED
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) _Chain_First( &information->Inactive );
do {
index = _Objects_Get_index( the_object->id );
48060: 4280 clrl %d0 <== NOT EXECUTED 48062: 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;
48066: 2810 movel %a0@,%d4 <== NOT EXECUTED
if ((index >= index_base) &&
48068: b680 cmpl %d0,%d3 <== NOT EXECUTED 4806a: 620c bhis 48078 <_Objects_Shrink_information+0x64><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
4806c: 4281 clrl %d1 <== NOT EXECUTED 4806e: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED 48072: 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) &&
48074: b280 cmpl %d0,%d1 <== NOT EXECUTED 48076: 6240 bhis 480b8 <_Objects_Shrink_information+0xa4><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
}
}
while ( the_object );
48078: 4a84 tstl %d4 <== NOT EXECUTED 4807a: 6704 beqs 48080 <_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;
4807c: 2044 moveal %d4,%a0 <== NOT EXECUTED 4807e: 60e0 bras 48060 <_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 ] );
48080: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED 48084: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@- <== NOT EXECUTED 48088: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED
information->object_blocks[ block ] = NULL;
4808e: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
information->inactive -= information->allocation_size;
return;
48092: 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;
48094: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
48098: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
4809c: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED 480a0: 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;
480a4: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive -= information->allocation_size;
480a8: 9081 subl %d1,%d0 <== NOT EXECUTED 480aa: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED
return;
}
index_base += information->allocation_size;
}
}
480ae: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 480b4: 4e5e unlk %fp <== NOT EXECUTED 480b6: 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 );
480b8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 480ba: 4e93 jsr %a3@ <== NOT EXECUTED 480bc: 588f addql #4,%sp <== NOT EXECUTED 480be: 60b8 bras 48078 <_Objects_Shrink_information+0x64><== NOT EXECUTED
information->allocation_size ) {
/*
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) _Chain_First( &information->Inactive );
480c0: 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 ] ==
480c4: 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 );
480c6: 47f9 0004 6f28 lea 46f28 <_Chain_Extract>,%a3 <== NOT EXECUTED 480cc: 6092 bras 48060 <_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 c9f4 jsr 4c9f4 <_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 a778 jsr 4a778 <_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 ca20 jsr 4ca20 <_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 ca54 jsr 4ca54 <_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 caa4 jsr 4caa4 <_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
0004cc38 <_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];
4cc38: 41f9 0005 f120 lea 5f120 <_POSIX_Barrier_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_Barrier_Translate_core_barrier_return_code(
CORE_barrier_Status the_barrier_status
)
{
4cc3e: 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];
}
4cc42: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4cc46: 4e5e unlk %fp <== NOT EXECUTED 4cc48: 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 2b06 pea 62b06 <_POSIX_Condition_variables_Information><== NOT EXECUTED 47132: 4eb9 0004 a028 jsr 4a028 <_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 2b06 pea 62b06 <_POSIX_Condition_variables_Information><== NOT EXECUTED 47164: 4eb9 0004 a028 jsr 4a028 <_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 aebc lea 4aebc <_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 ab5a jsr 4ab5a <_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 2758 movel 62758 <_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 2758 movel %d0,62758 <_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 ab5a jsr 4ab5a <_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 ab5a jsr 4ab5a <_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 2be6 moveal 62be6 <_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 b460 pea 4b460 <_Thread_queue_Timeout> <== NOT EXECUTED 473e8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 473ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 473ee: 4eb9 0004 b034 jsr 4b034 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
473f4: 4eb9 0004 ab5a jsr 4ab5a <_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 2be6 moveal 62be6 <_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 ace2 lea 4ace2 <_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
0004e030 <_POSIX_Keys_Run_destructors>:
4e030: 7218 moveq #24,%d1
*/
void _POSIX_Keys_Run_destructors(
Thread_Control *thread
)
{
4e032: 4e56 ffec linkw %fp,#-20 4e036: 206e 0008 moveal %fp@(8),%a0 4e03a: 48d7 007c moveml %d2-%d6,%sp@
Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id );
4e03e: 2628 0008 movel %a0@(8),%d3 4e042: 2003 movel %d3,%d0 4e044: e2a8 lsrl %d1,%d0 4e046: 123c 0007 moveb #7,%d1 4e04a: 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 ];
4e04c: 0283 0000 ffff andil #65535,%d3 4e052: 2c00 movel %d0,%d6 4e054: 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;
4e056: 3039 0006 007a movew 6007a <_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 ];
4e05c: e58b lsll #2,%d3
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4e05e: 4a40 tstw %d0
4e060: 660a bnes 4e06c <_POSIX_Keys_Run_destructors+0x3c><== NEVER TAKEN
done = false;
}
}
}
}
}
4e062: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 4e068: 4e5e unlk %fp 4e06a: 4e75 rts
4e06c: 4285 clrl %d5 <== NOT EXECUTED 4e06e: 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 ) {
4e070: 7401 moveq #1,%d2 <== NOT EXECUTED 4e072: 7801 moveq #1,%d4 <== NOT EXECUTED 4e074: 3a00 movew %d0,%d5 <== NOT EXECUTED
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
4e076: 2079 0006 0084 moveal 60084 <_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 ) {
4e07c: 5282 addql #1,%d2 <== NOT EXECUTED
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
4e07e: 2070 1c00 moveal %a0@(00000000,%d1:l:4),%a0 <== NOT EXECUTED
_POSIX_Keys_Information.local_table [ index ];
if ( key != NULL && key->destructor != NULL ) {
4e082: 4a88 tstl %a0 <== NOT EXECUTED 4e084: 671c beqs 4e0a2 <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED 4e086: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED 4e08a: 4a89 tstl %a1 <== NOT EXECUTED 4e08c: 6714 beqs 4e0a2 <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED
void *value = key->Values [ thread_api ][ thread_index ];
4e08e: 2070 6c00 moveal %a0@(00000000,%d6:l:4),%a0 <== NOT EXECUTED 4e092: d1c3 addal %d3,%a0 <== NOT EXECUTED 4e094: 2210 movel %a0@,%d1 <== NOT EXECUTED
if ( value != NULL ) {
4e096: 670a beqs 4e0a2 <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED
key->Values [ thread_api ][ thread_index ] = NULL;
4e098: 4290 clrl %a0@ <== NOT EXECUTED
(*key->destructor)( value );
done = false;
4e09a: 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 );
4e09c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4e09e: 4e91 jsr %a1@ <== NOT EXECUTED 4e0a0: 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 ) {
4e0a2: 4281 clrl %d1 <== NOT EXECUTED 4e0a4: 3202 movew %d2,%d1 <== NOT EXECUTED 4e0a6: b285 cmpl %d5,%d1 <== NOT EXECUTED 4e0a8: 63cc blss 4e076 <_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 ) {
4e0aa: 4a04 tstb %d4 <== NOT EXECUTED 4e0ac: 66b4 bnes 4e062 <_POSIX_Keys_Run_destructors+0x32><== NOT EXECUTED
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
4e0ae: 3039 0006 007a movew 6007a <_POSIX_Keys_Information+0xe>,%d0<== NOT EXECUTED
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4e0b4: 67ac beqs 4e062 <_POSIX_Keys_Run_destructors+0x32><== NOT EXECUTED 4e0b6: 60b4 bras 4e06c <_POSIX_Keys_Run_destructors+0x3c><== NOT EXECUTED
000531b8 <_POSIX_Message_queue_Create_support>:
const char *name_arg,
int pshared,
struct mq_attr *attr_ptr,
POSIX_Message_queue_Control **message_queue
)
{
531b8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 531bc: 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 );
531c0: 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
)
{
531c4: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 531c8: 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 );
531cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 531ce: 4eb9 0005 870c jsr 5870c <strnlen> <== NOT EXECUTED 531d4: 2800 movel %d0,%d4 <== NOT EXECUTED 531d6: 2039 0006 9aa4 movel 69aa4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 531dc: 5280 addql #1,%d0 <== NOT EXECUTED 531de: 23c0 0006 9aa4 movel %d0,69aa4 <_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 ) {
531e4: 508f addql #8,%sp <== NOT EXECUTED 531e6: 4a8a tstl %a2 <== NOT EXECUTED 531e8: 6700 00a4 beqw 5328e <_POSIX_Message_queue_Create_support+0xd6><== NOT EXECUTED
attr.mq_maxmsg = 10;
attr.mq_msgsize = 16;
} else {
if ( attr_ptr->mq_maxmsg <= 0 ){
531ec: 2a2a 0004 movel %a2@(4),%d5 <== NOT EXECUTED 531f0: 6f00 00a4 blew 53296 <_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 ){
531f4: 2c2a 0008 movel %a2@(8),%d6 <== NOT EXECUTED 531f8: 6f00 009c blew 53296 <_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 );
531fc: 4879 0006 9d52 pea 69d52 <_POSIX_Message_queue_Information><== NOT EXECUTED 53202: 4eb9 0004 f1fc jsr 4f1fc <_Objects_Allocate> <== NOT EXECUTED
attr = *attr_ptr;
}
the_mq = _POSIX_Message_queue_Allocate();
if ( !the_mq ) {
53208: 588f addql #4,%sp <== NOT EXECUTED 5320a: 2440 moveal %d0,%a2 <== NOT EXECUTED 5320c: 4a80 tstl %d0 <== NOT EXECUTED 5320e: 6700 010a beqw 5331a <_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;
53212: 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);
53214: 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;
53216: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED
the_mq->named = true;
5321c: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_mq->open_count = 1;
53220: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED
the_mq->linked = true;
53224: 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);
53228: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5322a: 4eb9 0005 1582 jsr 51582 <_Workspace_Allocate> <== NOT EXECUTED
if (!name) {
53230: 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);
53232: 2400 movel %d0,%d2 <== NOT EXECUTED
if (!name) {
53234: 6700 00b6 beqw 532ec <_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 );
53238: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5323a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5323c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5323e: 4eb9 0005 8688 jsr 58688 <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;
53244: 42aa 005a clrl %a2@(90) <== NOT EXECUTED
if ( !_CORE_message_queue_Initialize(
53248: 2f06 movel %d6,%sp@- <== NOT EXECUTED 5324a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 5324c: 486a 005a pea %a2@(90) <== NOT EXECUTED 53250: 486a 001a pea %a2@(26) <== NOT EXECUTED 53254: 4eb9 0005 41c4 jsr 541c4 <_CORE_message_queue_Initialize> <== NOT EXECUTED 5325a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 5325e: 4a00 tstb %d0 <== NOT EXECUTED 53260: 6752 beqs 532b4 <_POSIX_Message_queue_Create_support+0xfc><== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
53262: 4280 clrl %d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
53264: 2079 0006 9d6a moveal 69d6a <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
5326a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
5326e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Message_queue_Information,
&the_mq->Object,
name
);
*message_queue = the_mq;
53272: 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;
53276: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 5327a: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
5327c: 4eb9 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
53282: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
);
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
53288: 4280 clrl %d0 <== NOT EXECUTED
}
5328a: 4e5e unlk %fp <== NOT EXECUTED 5328c: 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;
5328e: 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;
53290: 7a0a moveq #10,%d5 <== NOT EXECUTED 53292: 6000 ff68 braw 531fc <_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();
53296: 4eb9 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
5329c: 7816 moveq #22,%d4 <== NOT EXECUTED 5329e: 4eb9 0005 6a5c jsr 56a5c <__errno> <== NOT EXECUTED 532a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 532a6: 70ff moveq #-1,%d0 <== NOT EXECUTED 532a8: 2084 movel %d4,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
532aa: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 532b0: 4e5e unlk %fp <== NOT EXECUTED 532b2: 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 );
532b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 532b6: 4879 0006 9d52 pea 69d52 <_POSIX_Message_queue_Information><== NOT EXECUTED 532bc: 4eb9 0004 f550 jsr 4f550 <_Objects_Free> <== NOT EXECUTED
attr.mq_maxmsg,
attr.mq_msgsize
) ) {
_POSIX_Message_queue_Free( the_mq );
_Workspace_Free(name);
532c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 532c4: 4eb9 0005 159e jsr 5159e <_Workspace_Free> <== NOT EXECUTED
_Thread_Enable_dispatch();
532ca: 4eb9 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
532d0: 4eb9 0005 6a5c jsr 56a5c <__errno> <== NOT EXECUTED 532d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 532da: 721c moveq #28,%d1 <== NOT EXECUTED 532dc: 2040 moveal %d0,%a0 <== NOT EXECUTED 532de: 70ff moveq #-1,%d0 <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
532e0: 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 );
532e6: 2081 movel %d1,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
532e8: 4e5e unlk %fp <== NOT EXECUTED 532ea: 4e75 rts <== NOT EXECUTED 532ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 532ee: 4879 0006 9d52 pea 69d52 <_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 );
532f4: 740c moveq #12,%d2 <== NOT EXECUTED 532f6: 4eb9 0004 f550 jsr 4f550 <_Objects_Free> <== NOT EXECUTED
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
if (!name) {
_POSIX_Message_queue_Free( the_mq );
_Thread_Enable_dispatch();
532fc: 4eb9 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
53302: 4eb9 0005 6a5c jsr 56a5c <__errno> <== NOT EXECUTED 53308: 508f addql #8,%sp <== NOT EXECUTED 5330a: 2040 moveal %d0,%a0 <== NOT EXECUTED 5330c: 70ff moveq #-1,%d0 <== NOT EXECUTED 5330e: 2082 movel %d2,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
53310: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 53316: 4e5e unlk %fp <== NOT EXECUTED 53318: 4e75 rts <== NOT EXECUTED
attr = *attr_ptr;
}
the_mq = _POSIX_Message_queue_Allocate();
if ( !the_mq ) {
_Thread_Enable_dispatch();
5331a: 4eb9 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
53320: 7617 moveq #23,%d3 <== NOT EXECUTED 53322: 4eb9 0005 6a5c jsr 56a5c <__errno> <== NOT EXECUTED 53328: 2040 moveal %d0,%a0 <== NOT EXECUTED 5332a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5332c: 2083 movel %d3,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
5332e: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 53334: 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 9d52 pea 69d52 <_POSIX_Message_queue_Information><== NOT EXECUTED 4be2e: 4eb9 0004 f28c jsr 4f28c <_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 e514 jsr 4e514 <_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 9d52 pea 69d52 <_POSIX_Message_queue_Information><== NOT EXECUTED 4be4c: 4eb9 0004 f550 jsr 4f550 <_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
...
00053338 <_POSIX_Message_queue_Name_to_id>:
*/
int _POSIX_Message_queue_Name_to_id(
const char *name,
Objects_Id *id
)
{
53338: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5333c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5333e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Id the_id;
if ( !name )
53342: 4a8a tstl %a2 <== NOT EXECUTED 53344: 6704 beqs 5334a <_POSIX_Message_queue_Name_to_id+0x12><== NOT EXECUTED
return EINVAL;
if ( !name[0] )
53346: 4a12 tstb %a2@ <== NOT EXECUTED 53348: 660a bnes 53354 <_POSIX_Message_queue_Name_to_id+0x1c><== NOT EXECUTED
return EINVAL;
5334a: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
5334c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 53350: 4e5e unlk %fp <== NOT EXECUTED 53352: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( !name[0] )
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
53354: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED 53358: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5335a: 4eb9 0005 870c jsr 5870c <strnlen> <== NOT EXECUTED 53360: 508f addql #8,%sp <== NOT EXECUTED 53362: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED 53368: 630a blss 53374 <_POSIX_Message_queue_Name_to_id+0x3c><== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
5336a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !name[0] )
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
return ENAMETOOLONG;
5336e: 705b moveq #91,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
53370: 4e5e unlk %fp <== NOT EXECUTED 53372: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
return ENAMETOOLONG;
status = _Objects_Name_to_id_string(
53374: 486e fffc pea %fp@(-4) <== NOT EXECUTED 53378: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5337a: 4879 0006 9d52 pea 69d52 <_POSIX_Message_queue_Information><== NOT EXECUTED 53380: 4eb9 0005 4874 jsr 54874 <_Objects_Name_to_id_string> <== NOT EXECUTED
&_POSIX_Message_queue_Information,
name,
&the_id
);
*id = the_id;
53386: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
5338a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status = _Objects_Name_to_id_string(
&_POSIX_Message_queue_Information,
name,
&the_id
);
*id = the_id;
5338e: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
53392: 4a80 tstl %d0 <== NOT EXECUTED 53394: 67b6 beqs 5334c <_POSIX_Message_queue_Name_to_id+0x14><== NOT EXECUTED
return 0;
return ENOENT;
}
53396: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
*id = the_id;
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
5339a: 7002 moveq #2,%d0 <== NOT EXECUTED
}
5339c: 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 2a4c jsr 52a4c <getpid> <== NOT EXECUTED 4befa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4befc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4befe: 4eb9 0005 31a0 jsr 531a0 <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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c1d8: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED 4c1dc: 4eb9 0004 f6bc jsr 4f6bc <_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 6a5c jsr 56a5c <__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 e5c4 jsr 4e5c4 <_CORE_message_queue_Seize> <== NOT EXECUTED
&length_out,
do_wait,
timeout
);
_Thread_Enable_dispatch();
4c258: 4eb9 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
*msg_prio =
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
4c25e: 2079 0006 9f32 moveal 69f32 <_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 e5c4 jsr 4e5c4 <_CORE_message_queue_Seize> <== NOT EXECUTED
&length_out,
do_wait,
timeout
);
_Thread_Enable_dispatch();
4c2a6: 4eb9 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
*msg_prio =
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
4c2ac: 2079 0006 9f32 moveal 69f32 <_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 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EMSGSIZE );
4c2c2: 747a moveq #122,%d2 <== NOT EXECUTED 4c2c4: 4eb9 0005 6a5c jsr 56a5c <__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 6a5c jsr 56a5c <__errno> <== NOT EXECUTED 4c2e2: 2079 0006 9f32 moveal 69f32 <_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 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
4c30c: 7609 moveq #9,%d3 <== NOT EXECUTED 4c30e: 4eb9 0005 6a5c jsr 56a5c <__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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c374: 4eb9 0004 f6bc jsr 4f6bc <_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 e6fc jsr 4e6fc <_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 0005 0276 jsr 50276 <_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 e6fc jsr 4e6fc <_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 0005 0276 jsr 50276 <_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 9f32 moveal 69f32 <_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 6a5c jsr 56a5c <__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 6a5c jsr 56a5c <__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 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
4c468: 7409 moveq #9,%d2 <== NOT EXECUTED 4c46a: 4eb9 0005 6a5c jsr 56a5c <__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 6a5c jsr 56a5c <__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 6c68 lea 66c68 <_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 5340 pea 65340 <_POSIX_Mutex_Information> <== NOT EXECUTED 48306: 4eb9 0004 b28c jsr 4b28c <_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 5340 pea 65340 <_POSIX_Mutex_Information> <== NOT EXECUTED 48338: 4eb9 0004 b28c jsr 4b28c <_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 5340 pea 65340 <_POSIX_Mutex_Information> <== NOT EXECUTED 48380: 4eb9 0004 b22c jsr 4b22c <_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 5340 pea 65340 <_POSIX_Mutex_Information> <== NOT EXECUTED 483b6: 4eb9 0004 b22c jsr 4b22c <_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 a524 jsr 4a524 <_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 54e6 moveal 654e6 <_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 2708 lea 62708 <_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
...
0004d11c <_POSIX_Priority_Is_valid>:
#include <rtems/posix/priority.h>
bool _POSIX_Priority_Is_valid(
int priority
)
{
4d11c: 4e56 0000 linkw %fp,#0 4d120: 202e 0008 movel %fp@(8),%d0
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
4d124: 6f12 bles 4d138 <_POSIX_Priority_Is_valid+0x1c> <== NEVER TAKEN
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
4d126: 4281 clrl %d1 4d128: 1239 0005 f8d6 moveb 5f8d6 <rtems_maximum_priority>,%d1
}
4d12e: 4e5e unlk %fp
#endif
#include <rtems/system.h>
#include <rtems/posix/priority.h>
bool _POSIX_Priority_Is_valid(
4d130: b280 cmpl %d0,%d1 4d132: 5ec0 sgt %d0 4d134: 4480 negl %d0
)
{
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
}
4d136: 4e75 rts 4d138: 4e5e unlk %fp
bool _POSIX_Priority_Is_valid(
int priority
)
{
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
4d13a: 4200 clrb %d0
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
}
...
00047804 <_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];
47804: 41f9 0006 0628 lea 60628 <_POSIX_RWLock_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_RWLock_Translate_core_RWLock_return_code(
CORE_RWLock_Status the_rwlock_status
)
{
4780a: 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];
}
4780e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 47812: 4e5e unlk %fp <== NOT EXECUTED 47814: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004fb50 <_POSIX_Semaphore_Create_support>:
const char *name,
int pshared,
unsigned int value,
POSIX_Semaphore_Control **the_sem
)
{
4fb50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4fb54: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fb56: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fb58: 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)
4fb5c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 4fb60: 6600 0112 bnew 4fc74 <_POSIX_Semaphore_Create_support+0x124><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
if ( name ) {
4fb64: 4a82 tstl %d2 <== NOT EXECUTED 4fb66: 6718 beqs 4fb80 <_POSIX_Semaphore_Create_support+0x30><== NOT EXECUTED
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
4fb68: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED 4fb6c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fb6e: 4eb9 0005 41c4 jsr 541c4 <strnlen> <== NOT EXECUTED 4fb74: 508f addql #8,%sp <== NOT EXECUTED 4fb76: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED 4fb7c: 6200 00dc bhiw 4fc5a <_POSIX_Semaphore_Create_support+0x10a><== NOT EXECUTED 4fb80: 2039 0006 4ff4 movel 64ff4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4fb86: 5280 addql #1,%d0 <== NOT EXECUTED 4fb88: 23c0 0006 4ff4 movel %d0,64ff4 <_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 );
4fb8e: 4879 0006 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fb94: 4eb9 0004 b0dc jsr 4b0dc <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
4fb9a: 588f addql #4,%sp <== NOT EXECUTED 4fb9c: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fb9e: 4a80 tstl %d0 <== NOT EXECUTED 4fba0: 6700 00ec beqw 4fc8e <_POSIX_Semaphore_Create_support+0x13e><== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOSPC );
}
the_semaphore->process_shared = pshared;
4fba4: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
if ( name ) {
4fba8: 4a82 tstl %d2 <== NOT EXECUTED 4fbaa: 675c beqs 4fc08 <_POSIX_Semaphore_Create_support+0xb8><== NOT EXECUTED
the_semaphore->named = true;
the_semaphore->open_count = 1;
4fbac: 7001 moveq #1,%d0 <== NOT EXECUTED 4fbae: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED
}
the_semaphore->process_shared = pshared;
if ( name ) {
the_semaphore->named = true;
4fbb2: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_semaphore->open_count = 1;
the_semaphore->linked = true;
4fbb6: 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;
4fbba: 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;
4fbbc: 42aa 005e clrl %a2@(94) <== NOT EXECUTED
/*
* This effectively disables limit checking.
*/
the_sem_attr->maximum_count = 0xFFFFFFFF;
4fbc0: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED
_CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
4fbc4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fbc8: 486a 005a pea %a2@(90) <== NOT EXECUTED 4fbcc: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fbd0: 4eb9 0004 aa88 jsr 4aa88 <_CORE_semaphore_Initialize> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fbd6: 2079 0006 5246 moveal 65246 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4fbdc: 4280 clrl %d0 <== NOT EXECUTED 4fbde: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fbe2: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Semaphore_Information,
&the_semaphore->Object,
name_p
);
*the_sem = the_semaphore;
4fbe6: 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;
4fbea: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 4fbee: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fbf0: 4eb9 0004 c156 jsr 4c156 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4fbf6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fbfa: 4280 clrl %d0 <== NOT EXECUTED
}
4fbfc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4fc00: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc04: 4e5e unlk %fp <== NOT EXECUTED 4fc06: 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;
4fc08: 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;
4fc0c: 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;
4fc0e: 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;
4fc12: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_semaphore->open_count = 0;
the_semaphore->linked = false;
4fc16: 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;
4fc1a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4fc1c: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED
_CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
4fc20: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fc24: 486a 005a pea %a2@(90) <== NOT EXECUTED 4fc28: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fc2c: 4eb9 0004 aa88 jsr 4aa88 <_CORE_semaphore_Initialize> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fc32: 2079 0006 5246 moveal 65246 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4fc38: 4280 clrl %d0 <== NOT EXECUTED 4fc3a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fc3e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Semaphore_Information,
&the_semaphore->Object,
name_p
);
*the_sem = the_semaphore;
4fc42: 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;
4fc46: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 4fc4a: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fc4c: 4eb9 0004 c156 jsr 4c156 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4fc52: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fc56: 4280 clrl %d0 <== NOT EXECUTED 4fc58: 60a2 bras 4fbfc <_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 );
4fc5a: 4eb9 0005 2b6c jsr 52b6c <__errno> <== NOT EXECUTED 4fc60: 745b moveq #91,%d2 <== NOT EXECUTED 4fc62: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fc64: 70ff moveq #-1,%d0 <== NOT EXECUTED 4fc66: 2082 movel %d2,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc68: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4fc6c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc70: 4e5e unlk %fp <== NOT EXECUTED 4fc72: 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 );
4fc74: 4eb9 0005 2b6c jsr 52b6c <__errno> <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc7a: 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 );
4fc7e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fc80: 7258 moveq #88,%d1 <== NOT EXECUTED 4fc82: 70ff moveq #-1,%d0 <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc84: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fc88: 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 );
4fc8a: 2081 movel %d1,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc8c: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
4fc8e: 4eb9 0004 c156 jsr 4c156 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4fc94: 4eb9 0005 2b6c jsr 52b6c <__errno> <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc9a: 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 );
4fc9e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fca0: 721c moveq #28,%d1 <== NOT EXECUTED 4fca2: 70ff moveq #-1,%d0 <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fca4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fca8: 4e5e unlk %fp <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOSPC );
4fcaa: 2081 movel %d1,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
...
0004fcb0 <_POSIX_Semaphore_Delete>:
*/
void _POSIX_Semaphore_Delete(
POSIX_Semaphore_Control *the_semaphore
)
{
4fcb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4fcb4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fcb6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !the_semaphore->linked && !the_semaphore->open_count ) {
4fcba: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 4fcbe: 6606 bnes 4fcc6 <_POSIX_Semaphore_Delete+0x16> <== NOT EXECUTED 4fcc0: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 4fcc4: 6708 beqs 4fcce <_POSIX_Semaphore_Delete+0x1e> <== NOT EXECUTED
-1
);
_POSIX_Semaphore_Free( the_semaphore );
}
}
4fcc6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fcca: 4e5e unlk %fp <== NOT EXECUTED 4fccc: 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 );
4fcce: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fcd0: 4879 0006 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fcd6: 4eb9 0004 b16c jsr 4b16c <_Objects_Close> <== NOT EXECUTED
_CORE_semaphore_Flush(
4fcdc: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 4fce0: 42a7 clrl %sp@- <== NOT EXECUTED 4fce2: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fce6: 4eb9 0004 aa7c jsr 4aa7c <_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 );
4fcec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fcee: 4879 0006 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fcf4: 4eb9 0004 b430 jsr 4b430 <_Objects_Free> <== NOT EXECUTED
-1
);
_POSIX_Semaphore_Free( the_semaphore );
}
}
4fcfa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4fcfe: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4fd02: 4e5e unlk %fp <== NOT EXECUTED
...
0004fd08 <_POSIX_Semaphore_Name_to_id>:
int _POSIX_Semaphore_Name_to_id(
const char *name,
sem_t *id
)
{
4fd08: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fd0c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Id the_id;
if ( !name )
4fd10: 4a88 tstl %a0 <== NOT EXECUTED 4fd12: 6704 beqs 4fd18 <_POSIX_Semaphore_Name_to_id+0x10><== NOT EXECUTED
return EINVAL;
if ( !name[0] )
4fd14: 4a10 tstb %a0@ <== NOT EXECUTED 4fd16: 6606 bnes 4fd1e <_POSIX_Semaphore_Name_to_id+0x16><== NOT EXECUTED
return EINVAL;
4fd18: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
4fd1a: 4e5e unlk %fp <== NOT EXECUTED 4fd1c: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( !name[0] )
return EINVAL;
status = _Objects_Name_to_id_string(
4fd1e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fd22: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4fd24: 4879 0006 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fd2a: 4eb9 0005 09b8 jsr 509b8 <_Objects_Name_to_id_string> <== NOT EXECUTED
&_POSIX_Semaphore_Information,
name,
&the_id
);
*id = the_id;
4fd30: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4fd34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status = _Objects_Name_to_id_string(
&_POSIX_Semaphore_Information,
name,
&the_id
);
*id = the_id;
4fd38: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4fd3c: 4a80 tstl %d0 <== NOT EXECUTED 4fd3e: 67da beqs 4fd1a <_POSIX_Semaphore_Name_to_id+0x12><== NOT EXECUTED
return 0;
return ENOENT;
4fd40: 7002 moveq #2,%d0 <== NOT EXECUTED
}
4fd42: 4e5e unlk %fp <== NOT EXECUTED
...
000525f8 <_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];
525f8: 41f9 0006 2b1c lea 62b1c <_POSIX_Semaphore_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Semaphore_Translate_core_semaphore_return_code(
CORE_semaphore_Status the_semaphore_status
)
{
525fe: 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];
}
52602: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 52606: 4e5e unlk %fp <== NOT EXECUTED 52608: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004fd7c <_POSIX_Semaphore_Wait_support>:
int _POSIX_Semaphore_Wait_support(
sem_t *sem,
bool blocking,
Watchdog_Interval timeout
)
{
4fd7c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fd80: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4fd84: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fd86: 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 );
4fd88: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fd8c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4fd8e: 4879 0006 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 4fd94: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED 4fd98: 4eb9 0004 b59c jsr 4b59c <_Objects_Get> <== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
4fd9e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fda2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fda6: 671c beqs 4fdc4 <_POSIX_Semaphore_Wait_support+0x48><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fda8: 4eb9 0005 2b6c jsr 52b6c <__errno> <== NOT EXECUTED
}
4fdae: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fdb2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fdb4: 7016 moveq #22,%d0 <== NOT EXECUTED 4fdb6: 72ff moveq #-1,%d1 <== NOT EXECUTED
}
4fdb8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fdbc: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fdbe: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4fdc0: 2001 movel %d1,%d0 <== NOT EXECUTED 4fdc2: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_CORE_semaphore_Seize(
4fdc4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fdc8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fdca: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 4fdd0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fdd2: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4fdd6: 4868 001a pea %a0@(26) <== NOT EXECUTED 4fdda: 4eb9 0005 049c jsr 5049c <_CORE_semaphore_Seize> <== NOT EXECUTED
&the_semaphore->Semaphore,
the_semaphore->Object.id,
blocking,
timeout
);
_Thread_Enable_dispatch();
4fde0: 4eb9 0004 c156 jsr 4c156 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !_Thread_Executing->Wait.return_code )
4fde6: 2079 0006 5482 moveal 65482 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4fdec: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4fdf0: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 4fdf4: 6610 bnes 4fe06 <_POSIX_Semaphore_Wait_support+0x8a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fdf6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
timeout
);
_Thread_Enable_dispatch();
if ( !_Thread_Executing->Wait.return_code )
return 0;
4fdfa: 4281 clrl %d1 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fdfc: 2001 movel %d1,%d0 <== NOT EXECUTED 4fdfe: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fe02: 4e5e unlk %fp <== NOT EXECUTED 4fe04: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( !_Thread_Executing->Wait.return_code )
return 0;
rtems_set_errno_and_return_minus_one(
4fe06: 4eb9 0005 2b6c jsr 52b6c <__errno> <== NOT EXECUTED 4fe0c: 2079 0006 5482 moveal 65482 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4fe12: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fe14: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4fe18: 4eb9 0005 25f8 jsr 525f8 <_POSIX_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fe1e: 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(
4fe22: 588f addql #4,%sp <== NOT EXECUTED 4fe24: 72ff moveq #-1,%d1 <== NOT EXECUTED 4fe26: 2480 movel %d0,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fe28: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fe2c: 2001 movel %d1,%d0 <== NOT EXECUTED 4fe2e: 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 e648 lea 5e648 <_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
...
0004b9b0 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>:
#include <rtems/posix/pthread.h>
void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(
Thread_Control *the_thread
)
{
4b9b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b9b4: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
POSIX_API_Control *thread_support;
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
4b9b8: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
4b9bc: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED 4b9c0: 6608 bnes 4b9ca <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1a><== NOT EXECUTED 4b9c2: 7001 moveq #1,%d0 <== NOT EXECUTED 4b9c4: b0a8 00dc cmpl %a0@(220),%d0 <== NOT EXECUTED 4b9c8: 6708 beqs 4b9d2 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x22><== NOT EXECUTED
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
} else
_Thread_Enable_dispatch();
}
4b9ca: 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();
4b9cc: 4ef9 0004 8cfa jmp 48cfa <_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 &&
4b9d2: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED 4b9d6: 67f2 beqs 4b9ca <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1a><== NOT EXECUTED
thread_support->cancelation_requested ) {
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
4b9d8: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4b9dc: 2039 0006 04ec movel 604ec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4b9e2: 5380 subql #1,%d0 <== NOT EXECUTED 4b9e4: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4b9e6: 23c0 0006 04ec movel %d0,604ec <_Thread_Dispatch_disable_level><== NOT EXECUTED 4b9ec: 4eb9 0004 c300 jsr 4c300 <_POSIX_Thread_Exit> <== NOT EXECUTED 4b9f2: 508f addql #8,%sp <== NOT EXECUTED
} else
_Thread_Enable_dispatch();
}
4b9f4: 4e5e unlk %fp <== NOT EXECUTED
0004e384 <_POSIX_Thread_Exit>:
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
4e384: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4e388: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4e38c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e390: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
4e394: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e398: 4eb9 0004 7cfc jsr 47cfc <_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();
4e39e: 2f39 0005 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
void *value_ptr
)
{
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e3a4: 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();
4e3a6: 4eb9 0004 6e5c jsr 46e5c <_API_Mutex_Lock> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4e3ac: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4e3b2: 5280 addql #1,%d0 <== NOT EXECUTED 4e3b4: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
the_thread->Wait.return_argument = value_ptr;
_Thread_Close( the_information, the_thread );
4e3ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
*/
_RTEMS_Lock_allocator();
_Thread_Disable_dispatch();
the_thread->Wait.return_argument = value_ptr;
4e3bc: 2542 0028 movel %d2,%a2@(40) <== NOT EXECUTED
_Thread_Close( the_information, the_thread );
4e3c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e3c2: 4eb9 0004 8640 jsr 48640 <_Thread_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (
Thread_Control *the_pthread
)
{
_Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object );
4e3c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e3ca: 4879 0005 febe pea 5febe <_POSIX_Threads_Information> <== NOT EXECUTED 4e3d0: 4eb9 0004 7c78 jsr 47c78 <_Objects_Free> <== NOT EXECUTED
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
4e3d6: 2f39 0005 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4e3dc: 4eb9 0004 6ebc jsr 46ebc <_API_Mutex_Unlock> <== NOT EXECUTED
_Thread_Enable_dispatch();
4e3e2: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4e3e6: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4e3ec: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Close( the_information, the_thread );
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
_Thread_Enable_dispatch();
4e3ee: 4ef9 0004 8996 jmp 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
0004d140 <_POSIX_Thread_Translate_sched_param>:
int policy,
struct sched_param *param,
Thread_CPU_budget_algorithms *budget_algorithm,
Thread_CPU_budget_algorithm_callout *budget_callout
)
{
4d140: 4e56 ffe8 linkw %fp,#-24 4d144: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ 4d148: 246e 000c moveal %fp@(12),%a2
if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )
4d14c: 47f9 0004 d11c lea 4d11c <_POSIX_Priority_Is_valid>,%a3 4d152: 2f12 movel %a2@,%sp@-
int policy,
struct sched_param *param,
Thread_CPU_budget_algorithms *budget_algorithm,
Thread_CPU_budget_algorithm_callout *budget_callout
)
{
4d154: 242e 0008 movel %fp@(8),%d2 4d158: 286e 0010 moveal %fp@(16),%a4 4d15c: 2a6e 0014 moveal %fp@(20),%a5
if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )
4d160: 4e93 jsr %a3@ 4d162: 588f addql #4,%sp 4d164: 4a00 tstb %d0
4d166: 6720 beqs 4d188 <_POSIX_Thread_Translate_sched_param+0x48><== NEVER TAKEN
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
4d168: 4294 clrl %a4@
*budget_callout = NULL;
4d16a: 4295 clrl %a5@
if ( policy == SCHED_OTHER ) {
4d16c: 4a82 tstl %d2
4d16e: 6724 beqs 4d194 <_POSIX_Thread_Translate_sched_param+0x54><== NEVER TAKEN
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
return 0;
}
if ( policy == SCHED_FIFO ) {
4d170: 7001 moveq #1,%d0 4d172: b082 cmpl %d2,%d0 4d174: 6700 0086 beqw 4d1fc <_POSIX_Thread_Translate_sched_param+0xbc>
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
}
if ( policy == SCHED_RR ) {
4d178: 103c 0002 moveb #2,%d0 <== NOT EXECUTED 4d17c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d17e: 6700 0088 beqw 4d208 <_POSIX_Thread_Translate_sched_param+0xc8><== NOT EXECUTED
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
return 0;
}
if ( policy == SCHED_SPORADIC ) {
4d182: 7004 moveq #4,%d0 <== NOT EXECUTED 4d184: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d186: 671c beqs 4d1a4 <_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;
4d188: 7016 moveq #22,%d0 <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d18a: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d190: 4e5e unlk %fp <== NOT EXECUTED 4d192: 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;
4d194: 7201 moveq #1,%d1 <== NOT EXECUTED
return 0;
4d196: 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;
4d198: 2881 movel %d1,%a4@ <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d19a: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d1a0: 4e5e unlk %fp <== NOT EXECUTED 4d1a2: 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) &&
4d1a4: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4d1a8: 6606 bnes 4d1b0 <_POSIX_Thread_Translate_sched_param+0x70><== NOT EXECUTED 4d1aa: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED 4d1ae: 67d8 beqs 4d188 <_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) &&
4d1b0: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d1b4: 6606 bnes 4d1bc <_POSIX_Thread_Translate_sched_param+0x7c><== NOT EXECUTED 4d1b6: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4d1ba: 67cc beqs 4d188 <_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 ) <
4d1bc: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4d1c0: 243c 0004 aa04 movel #305668,%d2 <== NOT EXECUTED 4d1c6: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d1c8: 4e90 jsr %a0@ <== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
4d1ca: 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 ) <
4d1ce: 2600 movel %d0,%d3 <== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
4d1d0: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d1d2: 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 ) <
4d1d4: 508f addql #8,%sp <== NOT EXECUTED 4d1d6: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d1d8: 62ae bhis 4d188 <_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 ) )
4d1da: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 4d1de: 4e93 jsr %a3@ <== NOT EXECUTED 4d1e0: 588f addql #4,%sp <== NOT EXECUTED 4d1e2: 4a00 tstb %d0 <== NOT EXECUTED 4d1e4: 67a2 beqs 4d188 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;
4d1e6: 7003 moveq #3,%d0 <== NOT EXECUTED 4d1e8: 2880 movel %d0,%a4@ <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
4d1ea: 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;
4d1ec: 2abc 0004 6e74 movel #290420,%a5@ <== NOT EXECUTED
return 0;
}
return EINVAL;
}
4d1f2: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d1f8: 4e5e unlk %fp <== NOT EXECUTED 4d1fa: 4e75 rts <== NOT EXECUTED
return 0;
}
if ( policy == SCHED_FIFO ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
4d1fc: 4280 clrl %d0
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d1fe: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 4d204: 4e5e unlk %fp 4d206: 4e75 rts
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
}
if ( policy == SCHED_RR ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
4d208: 2880 movel %d0,%a4@ <== NOT EXECUTED
return 0;
4d20a: 4200 clrb %d0 <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d20c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4d212: 4e5e unlk %fp <== NOT EXECUTED
...
0004bc70 <_POSIX_Threads_Create_extension>:
bool _POSIX_Threads_Create_extension(
Thread_Control *executing __attribute__((unused)),
Thread_Control *created
)
{
4bc70: 4e56 0000 linkw %fp,#0 4bc74: 2f0b movel %a3,%sp@- 4bc76: 266e 000c moveal %fp@(12),%a3 4bc7a: 2f0a movel %a2,%sp@-
POSIX_API_Control *api;
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
4bc7c: 4878 00f0 pea f0 <DBL_MANT_DIG+0xbb> 4bc80: 4eb9 0004 9b9e jsr 49b9e <_Workspace_Allocate>
if ( !api )
4bc86: 588f addql #4,%sp
)
{
POSIX_API_Control *api;
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
4bc88: 2440 moveal %d0,%a2
if ( !api )
4bc8a: 4a80 tstl %d0 4bc8c: 6700 013c beqw 4bdca <_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;
4bc90: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> 4bc94: 42a7 clrl %sp@-
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
if ( !api )
return false;
created->API_Extensions[ THREAD_API_POSIX ] = api;
4bc96: 2740 0102 movel %d0,%a3@(258)
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
4bc9a: 2f00 movel %d0,%sp@- 4bc9c: 4eb9 0004 f288 jsr 4f288 <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
4bca2: 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;
4bca6: 41ea 008c lea %a2@(140),%a0
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4bcaa: 4281 clrl %d1 4bcac: 1239 0005 e442 moveb 5e442 <rtems_maximum_priority>,%d1 4bcb2: 4280 clrl %d0 4bcb4: 102b 0008 moveb %a3@(8),%d0 4bcb8: 92ab 0014 subl %a3@(20),%d1 4bcbc: 20f9 0005 d9f0 movel 5d9f0 <_POSIX_Threads_Default_attributes+0x1c>,%a0@+ 4bcc2: 20f9 0005 d9f4 movel 5d9f4 <_POSIX_Threads_Default_attributes+0x20>,%a0@+ 4bcc8: 20f9 0005 d9f8 movel 5d9f8 <_POSIX_Threads_Default_attributes+0x24>,%a0@+ 4bcce: 20f9 0005 d9fc movel 5d9fc <_POSIX_Threads_Default_attributes+0x28>,%a0@+ 4bcd4: 20f9 0005 da00 movel 5da00 <_POSIX_Threads_Default_attributes+0x2c>,%a0@+ 4bcda: 20b9 0005 da04 movel 5da04 <_POSIX_Threads_Default_attributes+0x30>,%a0@
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4bce0: 41ea 00e8 lea %a2@(232),%a0 4bce4: 2541 0088 movel %d1,%a2@(136) 4bce8: 7207 moveq #7,%d1 4bcea: 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;
4bcec: 123c 0001 moveb #1,%d1 4bcf0: 2541 0010 movel %d1,%a2@(16) 4bcf4: 2541 0014 movel %d1,%a2@(20) 4bcf8: 123c 0002 moveb #2,%d1 4bcfc: 2541 0018 movel %d1,%a2@(24) 4bd00: 123c 0001 moveb #1,%d1 4bd04: 2548 00e4 movel %a0,%a2@(228)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4bd08: 41ea 00e4 lea %a2@(228),%a0 4bd0c: 2541 0038 movel %d1,%a2@(56) 4bd10: 2541 003c movel %d1,%a2@(60)
api->detachstate = _POSIX_Threads_Default_attributes.detachstate;
4bd14: 2541 0040 movel %d1,%a2@(64)
api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy;
4bd18: 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
4bd1c: 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;
4bd20: 24bc 0000 0001 movel #1,%a2@ 4bd26: 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;
4bd2a: 42aa 00e0 clrl %a2@(224)
api->cancelability_state = PTHREAD_CANCEL_ENABLE;
4bd2e: 42aa 00d8 clrl %a2@(216)
api->cancelability_type = PTHREAD_CANCEL_DEFERRED;
4bd32: 42aa 00dc clrl %a2@(220)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4bd36: 42aa 00e8 clrl %a2@(232)
*
* The check for class == 1 is debug. Should never really happen.
*/
/* XXX use signal constants */
api->signals_pending = 0;
4bd3a: 42aa 00d4 clrl %a2@(212)
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
4bd3e: b280 cmpl %d0,%d1
4bd40: 6744 beqs 4bd86 <_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;
4bd42: 70ff moveq #-1,%d0 4bd44: 2540 00d0 movel %d0,%a2@(208)
}
_Thread_queue_Initialize(
4bd48: 42a7 clrl %sp@- 4bd4a: 4878 1000 pea 1000 <D_MAX_EXP+0x801> 4bd4e: 42a7 clrl %sp@- 4bd50: 486a 0044 pea %a2@(68) 4bd54: 4eb9 0004 9128 jsr 49128 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_JOIN_AT_EXIT,
0
);
_Watchdog_Initialize(
4bd5a: 222b 0008 movel %a3@(8),%d1
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4bd5e: 41f9 0004 bdd8 lea 4bdd8 <_POSIX_Threads_Sporadic_budget_TSR>,%a0
_POSIX_Threads_Sporadic_budget_TSR,
created->Object.id,
created
);
return true;
4bd64: 4fef 0010 lea %sp@(16),%sp 4bd68: 7001 moveq #1,%d0 4bd6a: 2548 00c4 movel %a0,%a2@(196)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4bd6e: 42aa 00b0 clrl %a2@(176)
the_watchdog->routine = routine; the_watchdog->id = id;
4bd72: 2541 00c8 movel %d1,%a2@(200)
the_watchdog->user_data = user_data;
4bd76: 254b 00cc movel %a3,%a2@(204)
}
4bd7a: 246e fff8 moveal %fp@(-8),%a2 4bd7e: 266e fffc moveal %fp@(-4),%a3 4bd82: 4e5e unlk %fp 4bd84: 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 ];
4bd86: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0
api->signals_blocked = executing_api->signals_blocked;
4bd8c: 2068 0102 moveal %a0@(258),%a0 4bd90: 2568 00d0 00d0 movel %a0@(208),%a2@(208)
} else {
api->signals_blocked = 0xffffffff;
}
_Thread_queue_Initialize(
4bd96: 42a7 clrl %sp@- 4bd98: 4878 1000 pea 1000 <D_MAX_EXP+0x801> 4bd9c: 42a7 clrl %sp@- 4bd9e: 486a 0044 pea %a2@(68) 4bda2: 4eb9 0004 9128 jsr 49128 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_JOIN_AT_EXIT,
0
);
_Watchdog_Initialize(
4bda8: 222b 0008 movel %a3@(8),%d1
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4bdac: 41f9 0004 bdd8 lea 4bdd8 <_POSIX_Threads_Sporadic_budget_TSR>,%a0
_POSIX_Threads_Sporadic_budget_TSR,
created->Object.id,
created
);
return true;
4bdb2: 4fef 0010 lea %sp@(16),%sp 4bdb6: 2548 00c4 movel %a0,%a2@(196) 4bdba: 7001 moveq #1,%d0
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4bdbc: 42aa 00b0 clrl %a2@(176)
the_watchdog->routine = routine; the_watchdog->id = id;
4bdc0: 2541 00c8 movel %d1,%a2@(200)
the_watchdog->user_data = user_data;
4bdc4: 254b 00cc movel %a3,%a2@(204) 4bdc8: 60b0 bras 4bd7a <_POSIX_Threads_Create_extension+0x10a>
}
4bdca: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4bdce: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4bdd2: 4e5e unlk %fp <== NOT EXECUTED
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
if ( !api )
return false;
4bdd4: 4200 clrb %d0 <== NOT EXECUTED
created->Object.id,
created
);
return true;
}
0004bbde <_POSIX_Threads_Delete_extension>:
*/
void _POSIX_Threads_Delete_extension(
Thread_Control *executing __attribute__((unused)),
Thread_Control *deleted
)
{
4bbde: 4e56 ffec linkw %fp,#-20 4bbe2: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ 4bbe6: 266e 000c moveal %fp@(12),%a3 4bbea: 45f9 0004 8cf8 lea 48cf8 <_Thread_queue_Dequeue>,%a2
api = deleted->API_Extensions[ THREAD_API_POSIX ];
/*
* Run the POSIX cancellation handlers
*/
_POSIX_Threads_cancel_run( deleted );
4bbf0: 2f0b movel %a3,%sp@-
{
Thread_Control *the_thread;
POSIX_API_Control *api;
void **value_ptr;
api = deleted->API_Extensions[ THREAD_API_POSIX ];
4bbf2: 286b 0102 moveal %a3@(258),%a4 4bbf6: 240c movel %a4,%d2 4bbf8: 0682 0000 0044 addil #68,%d2
/*
* Run the POSIX cancellation handlers
*/
_POSIX_Threads_cancel_run( deleted );
4bbfe: 4eb9 0004 dfc4 jsr 4dfc4 <_POSIX_Threads_cancel_run>
/*
* Run all the key destructors
*/
_POSIX_Keys_Run_destructors( deleted );
4bc04: 2f0b movel %a3,%sp@- 4bc06: 4eb9 0004 e030 jsr 4e030 <_POSIX_Keys_Run_destructors>
/*
* Wakeup all the tasks which joined with this one
*/
value_ptr = (void **) deleted->Wait.return_argument;
4bc0c: 262b 0028 movel %a3@(40),%d3
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
4bc10: 508f addql #8,%sp 4bc12: 2f02 movel %d2,%sp@- 4bc14: 4e92 jsr %a2@ 4bc16: 588f addql #4,%sp 4bc18: 4a80 tstl %d0
4bc1a: 6712 beqs 4bc2e <_POSIX_Threads_Delete_extension+0x50><== ALWAYS TAKEN
*(void **)the_thread->Wait.return_argument = value_ptr;
4bc1c: 2240 moveal %d0,%a1 <== NOT EXECUTED 4bc1e: 2069 0028 moveal %a1@(40),%a0 <== NOT EXECUTED 4bc22: 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 )) )
4bc24: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bc26: 4e92 jsr %a2@ <== NOT EXECUTED 4bc28: 588f addql #4,%sp <== NOT EXECUTED 4bc2a: 4a80 tstl %d0 <== NOT EXECUTED 4bc2c: 66ee bnes 4bc1c <_POSIX_Threads_Delete_extension+0x3e><== NOT EXECUTED
*(void **)the_thread->Wait.return_argument = value_ptr;
if ( api->schedpolicy == SCHED_SPORADIC )
4bc2e: 103c 0004 moveb #4,%d0 4bc32: b0ac 0084 cmpl %a4@(132),%d0
4bc36: 6716 beqs 4bc4e <_POSIX_Threads_Delete_extension+0x70><== NEVER TAKEN
(void) _Watchdog_Remove( &api->Sporadic_timer );
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
4bc38: 42ab 0102 clrl %a3@(258)
(void) _Workspace_Free( api );
4bc3c: 2d4c 0008 movel %a4,%fp@(8)
}
4bc40: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 4bc46: 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 );
4bc48: 4ef9 0004 9bba jmp 49bba <_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 );
4bc4e: 486c 00a8 pea %a4@(168) <== NOT EXECUTED 4bc52: 4eb9 0004 9a1c jsr 49a1c <_Watchdog_Remove> <== NOT EXECUTED 4bc58: 588f addql #4,%sp <== NOT EXECUTED
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
4bc5a: 42ab 0102 clrl %a3@(258) <== NOT EXECUTED
(void) _Workspace_Free( api );
4bc5e: 2d4c 0008 movel %a4,%fp@(8) <== NOT EXECUTED
}
4bc62: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4bc68: 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 );
4bc6a: 4ef9 0004 9bba jmp 49bba <_Workspace_Free> <== NOT EXECUTED
0004bbb2 <_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);
4bbb2: 4280 clrl %d0 4bbb4: 7207 moveq #7,%d1
* This method is invoked each time a thread exits.
*/
void _POSIX_Threads_Exitted_extension(
Thread_Control *executing
)
{
4bbb6: 4e56 0000 linkw %fp,#0 4bbba: 206e 0008 moveal %fp@(8),%a0 4bbbe: 1028 0008 moveb %a0@(8),%d0 4bbc2: 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 )
4bbc4: 123c 0003 moveb #3,%d1 4bbc8: b280 cmpl %d0,%d1
4bbca: 6704 beqs 4bbd0 <_POSIX_Threads_Exitted_extension+0x1e><== NEVER TAKEN
pthread_exit( executing->Wait.return_argument );
}
4bbcc: 4e5e unlk %fp 4bbce: 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 );
4bbd0: 2d68 0028 0008 movel %a0@(40),%fp@(8) <== NOT EXECUTED
}
4bbd6: 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 );
4bbd8: 4ef9 0004 e3f4 jmp 4e3f4 <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 f8ce moveal 5f8ce <Configuration_POSIX_API+0x34>,%a2
maximum = Configuration_POSIX_API.number_of_initialization_threads;
46b12: 2839 0005 f8ca movel 5f8ca <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 d218 movel #315928,%d6 46b32: 4bf9 0004 d244 lea 4d244 <pthread_attr_setinheritsched>,%a5 46b38: 49f9 0004 d284 lea 4d284 <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 8c94 jsr 48c94 <_Internal_error_Occurred>
0004bdd8 <_POSIX_Threads_Sporadic_budget_TSR>:
*/
void _POSIX_Threads_Sporadic_budget_TSR(
Objects_Id id __attribute__((unused)),
void *argument
)
{
4bdd8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4bddc: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 4bde0: 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 );
4bde4: 49f9 0004 cdb0 lea 4cdb0 <_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 ];
4bdea: 246b 0102 moveal %a3@(258),%a2 <== NOT EXECUTED
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
4bdee: 486a 0098 pea %a2@(152) <== NOT EXECUTED 4bdf2: 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 ) {
4bdf4: 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);
4bdf6: 4281 clrl %d1 <== NOT EXECUTED 4bdf8: 1239 0005 e442 moveb 5e442 <rtems_maximum_priority>,%d1 <== NOT EXECUTED 4bdfe: 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;
4be02: 2740 0076 movel %d0,%a3@(118) <== NOT EXECUTED
new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority );
the_thread->real_priority = new_priority;
4be06: 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 ) {
4be0a: 4aab 001c tstl %a3@(28) <== NOT EXECUTED 4be0e: 6606 bnes 4be16 <_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 ) {
4be10: b2ab 0014 cmpl %a3@(20),%d1 <== NOT EXECUTED 4be14: 652c bcss 4be42 <_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 );
4be16: 486a 0090 pea %a2@(144) <== NOT EXECUTED 4be1a: 4e94 jsr %a4@ <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4be1c: 588f addql #4,%sp <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4be1e: 2540 00b4 movel %d0,%a2@(180) <== NOT EXECUTED
_Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );
4be22: 45ea 00a8 lea %a2@(168),%a2 <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4be26: 203c 0005 fdd8 movel #392664,%d0 <== NOT EXECUTED 4be2c: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
4be30: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4be36: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 4be3a: 4e5e unlk %fp <== NOT EXECUTED 4be3c: 4ef9 0004 98d4 jmp 498d4 <_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 );
4be42: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4be46: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4be48: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4be4a: 4eb9 0004 84a0 jsr 484a0 <_Thread_Change_priority> <== NOT EXECUTED 4be50: 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 );
4be54: 486a 0090 pea %a2@(144) <== NOT EXECUTED 4be58: 4e94 jsr %a4@ <== NOT EXECUTED 4be5a: 588f addql #4,%sp <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4be5c: 2540 00b4 movel %d0,%a2@(180) <== NOT EXECUTED
_Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );
4be60: 45ea 00a8 lea %a2@(168),%a2 <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4be64: 203c 0005 fdd8 movel #392664,%d0 <== NOT EXECUTED 4be6a: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
4be6e: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 4be74: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 4be78: 4e5e unlk %fp <== NOT EXECUTED 4be7a: 4ef9 0004 98d4 jmp 498d4 <_Watchdog_Insert> <== NOT EXECUTED
0004be80 <_POSIX_Threads_Sporadic_budget_callout>:
4be80: 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 */
4be82: 72ff moveq #-1,%d1 <== NOT EXECUTED
* _POSIX_Threads_Sporadic_budget_callout
*/
void _POSIX_Threads_Sporadic_budget_callout(
Thread_Control *the_thread
)
{
4be84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4be88: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4be8c: 1039 0005 e442 moveb 5e442 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
POSIX_API_Control *api;
uint32_t new_priority;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4be92: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED 4be96: 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 */
4be9a: 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;
4be9e: 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 ) {
4bea2: 4aa8 001c tstl %a0@(28) <== NOT EXECUTED 4bea6: 6606 bnes 4beae <_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 ) {
4bea8: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 4beac: 6204 bhis 4beb2 <_POSIX_Threads_Sporadic_budget_callout+0x32><== NOT EXECUTED
#if 0
printk( "lower priority\n" );
#endif
}
}
}
4beae: 4e5e unlk %fp <== NOT EXECUTED 4beb0: 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 );
4beb2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4beb6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4beb8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4beba: 4eb9 0004 84a0 jsr 484a0 <_Thread_Change_priority> <== NOT EXECUTED 4bec0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#if 0
printk( "lower priority\n" );
#endif
}
}
}
4bec4: 4e5e unlk %fp <== NOT EXECUTED
0004dfc4 <_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;
4dfc4: 7001 moveq #1,%d0
#include <rtems/posix/threadsup.h>
void _POSIX_Threads_cancel_run(
Thread_Control *the_thread
)
{
4dfc6: 4e56 ffec linkw %fp,#-20 4dfca: 206e 0008 moveal %fp@(8),%a0 4dfce: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%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 ];
4dfd2: 2468 0102 moveal %a0@(258),%a2
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4dfd6: 240a movel %a2,%d2 4dfd8: 0682 0000 00e8 addil #232,%d2
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
4dfde: 2540 00d8 movel %d0,%a2@(216)
while ( !_Chain_Is_empty( handler_stack ) ) {
4dfe2: b4aa 00e4 cmpl %a2@(228),%d2
4dfe6: 673c beqs 4e024 <_POSIX_Threads_cancel_run+0x60> <== ALWAYS TAKEN
4dfe8: 47f9 0004 9bba lea 49bba <_Workspace_Free>,%a3 <== NOT EXECUTED
_ISR_Disable( level );
4dfee: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED 4dff4: 2003 movel %d3,%d0 <== NOT EXECUTED 4dff6: 40c1 movew %sr,%d1 <== NOT EXECUTED 4dff8: 8081 orl %d1,%d0 <== NOT EXECUTED 4dffa: 46c0 movew %d0,%sr <== NOT EXECUTED
handler = (POSIX_Cancel_Handler_control *)
4dffc: 286a 00ec moveal %a2@(236),%a4 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4e000: 2254 moveal %a4@,%a1 <== NOT EXECUTED
previous = the_node->previous;
4e002: 206c 0004 moveal %a4@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4e006: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4e00a: 2089 movel %a1,%a0@ <== NOT EXECUTED
_Chain_Tail( handler_stack )->previous;
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
4e00c: 46c1 movew %d1,%sr <== NOT EXECUTED
(*handler->routine)( handler->arg );
4e00e: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED 4e012: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED 4e016: 4e90 jsr %a0@ <== NOT EXECUTED
_Workspace_Free( handler );
4e018: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4e01a: 4e93 jsr %a3@ <== NOT EXECUTED
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
while ( !_Chain_Is_empty( handler_stack ) ) {
4e01c: 508f addql #8,%sp <== NOT EXECUTED 4e01e: b4aa 00e4 cmpl %a2@(228),%d2 <== NOT EXECUTED 4e022: 66d0 bnes 4dff4 <_POSIX_Threads_cancel_run+0x30> <== NOT EXECUTED
(*handler->routine)( handler->arg );
_Workspace_Free( handler );
}
}
4e024: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 4e02a: 4e5e unlk %fp
...
0004c970 <_POSIX_Timer_Insert_helper>:
Watchdog_Interval ticks,
Objects_Id id,
Watchdog_Service_routine_entry TSR,
void *arg
)
{
4c970: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c974: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c976: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4c97a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
(void) _Watchdog_Remove( timer );
4c97c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c97e: 4eb9 0004 a310 jsr 4a310 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
4c984: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4c98a: 40c2 movew %sr,%d2 <== NOT EXECUTED 4c98c: 8082 orl %d2,%d0 <== NOT EXECUTED 4c98e: 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 ) {
4c990: 588f addql #4,%sp <== NOT EXECUTED 4c992: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4c996: 6710 beqs 4c9a8 <_POSIX_Timer_Insert_helper+0x38><== NOT EXECUTED
_ISR_Enable( level );
4c998: 46c2 movew %d2,%sr <== NOT EXECUTED
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
return true;
}
4c99a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c99e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c9a2: 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;
4c9a4: 4200 clrb %d0 <== NOT EXECUTED
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
return true;
}
4c9a6: 4e75 rts <== NOT EXECUTED 4c9a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c9aa: 4879 0006 0b28 pea 60b28 <_Watchdog_Ticks_chain> <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4c9b0: 256e 0014 001c movel %fp@(20),%a2@(28) <== NOT EXECUTED
the_watchdog->id = id;
4c9b6: 256e 0010 0020 movel %fp@(16),%a2@(32) <== NOT EXECUTED
the_watchdog->user_data = user_data;
4c9bc: 256e 0018 0024 movel %fp@(24),%a2@(36) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4c9c2: 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;
4c9c8: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4c9cc: 4eb9 0004 a1c8 jsr 4a1c8 <_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 );
4c9d2: 46c2 movew %d2,%sr <== NOT EXECUTED
return true;
4c9d4: 508f addql #8,%sp <== NOT EXECUTED
}
4c9d6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4c9da: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c9de: 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;
4c9e0: 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 c970 jsr 4c970 <_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 c490 jsr 4c490 <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 7c1c jsr 47c1c <_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 c490 jsr 4c490 <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
...
0004b7dc <_POSIX_signals_Abnormal_termination_handler>:
sigset_t _POSIX_signals_Pending;
void _POSIX_signals_Abnormal_termination_handler(
int signo __attribute__((unused)) )
{
4b7dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
exit( 1 );
4b7e0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4b7e4: 4eb9 0004 e97c jsr 4e97c <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
0004e0b8 <_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,
4e0b8: 4280 clrl %d0 <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e0ba: 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,
4e0be: 102e 0013 moveb %fp@(19),%d0 <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e0c2: 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,
4e0c6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4e0ca: 260e movel %fp,%d3 <== NOT EXECUTED 4e0cc: 0683 ffff fff4 addil #-12,%d3 <== NOT EXECUTED 4e0d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e0d4: 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,
4e0d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e0da: 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,
4e0de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e0e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e0e2: 4eb9 0004 e25c jsr 4e25c <_POSIX_signals_Clear_signals> <== NOT EXECUTED 4e0e8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4e0ec: 4a00 tstb %d0 <== NOT EXECUTED 4e0ee: 6700 015e beqw 4e24e <_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 )
4e0f2: 2202 movel %d2,%d1 <== NOT EXECUTED 4e0f4: 2002 movel %d2,%d0 <== NOT EXECUTED 4e0f6: e589 lsll #2,%d1 <== NOT EXECUTED 4e0f8: e988 lsll #4,%d0 <== NOT EXECUTED 4e0fa: 9081 subl %d1,%d0 <== NOT EXECUTED 4e0fc: 2240 moveal %d0,%a1 <== NOT EXECUTED 4e0fe: d3fc 0006 01b8 addal #393656,%a1 <== NOT EXECUTED 4e104: 7201 moveq #1,%d1 <== NOT EXECUTED 4e106: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED 4e10a: 2d48 ffc8 movel %a0,%fp@(-56) <== NOT EXECUTED 4e10e: b288 cmpl %a0,%d1 <== NOT EXECUTED 4e110: 6700 013c beqw 4e24e <_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,
4e114: 2e0e movel %fp,%d7 <== NOT EXECUTED 4e116: 0687 ffff ffd0 addil #-48,%d7 <== NOT EXECUTED 4e11c: 2647 moveal %d7,%a3 <== NOT EXECUTED 4e11e: 2c0e movel %fp,%d6 <== NOT EXECUTED 4e120: 0686 ffff ffd4 addil #-44,%d6 <== NOT EXECUTED 4e126: 2a0e movel %fp,%d5 <== NOT EXECUTED 4e128: 0685 ffff ffd8 addil #-40,%d5 <== NOT EXECUTED 4e12e: 280e movel %fp,%d4 <== NOT EXECUTED 4e130: 0684 ffff ffdc addil #-36,%d4 <== NOT EXECUTED 4e136: 4bee ffe0 lea %fp@(-32),%a5 <== NOT EXECUTED 4e13a: 49ee ffe4 lea %fp@(-28),%a4 <== NOT EXECUTED 4e13e: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e144: 26a8 0024 movel %a0@(36),%a3@ <== NOT EXECUTED 4e148: 2646 moveal %d6,%a3 <== NOT EXECUTED 4e14a: 26a8 0028 movel %a0@(40),%a3@ <== NOT EXECUTED 4e14e: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e150: 26a8 002c movel %a0@(44),%a3@ <== NOT EXECUTED 4e154: 2644 moveal %d4,%a3 <== NOT EXECUTED
return false;
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
4e156: 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,
4e15a: 2d68 0020 ffcc movel %a0@(32),%fp@(-52) <== NOT EXECUTED 4e160: 26a8 0030 movel %a0@(48),%a3@ <== NOT EXECUTED 4e164: 2aa8 0034 movel %a0@(52),%a5@ <== NOT EXECUTED 4e168: 28a8 0038 movel %a0@(56),%a4@ <== NOT EXECUTED 4e16c: 2d68 003c ffe8 movel %a0@(60),%fp@(-24) <== NOT EXECUTED 4e172: 2d68 0040 ffec movel %a0@(64),%fp@(-20) <== NOT EXECUTED 4e178: 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 ) {
4e17e: 41f9 0006 01b8 lea 601b8 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
return false;
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
4e184: 2d41 ffc4 movel %d1,%fp@(-60) <== NOT EXECUTED
api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;
4e188: 82a9 0004 orl %a1@(4),%d1 <== NOT EXECUTED 4e18c: 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 ) {
4e190: 7202 moveq #2,%d1 <== NOT EXECUTED 4e192: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED 4e196: 675c beqs 4e1f4 <_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 );
4e198: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e19a: 226e ffc8 moveal %fp@(-56),%a1 <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e19e: 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 );
4e1a0: 4e91 jsr %a1@ <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e1a2: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e1a8: 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;
4e1aa: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e1ac: 216e ffcc 0020 movel %fp@(-52),%a0@(32) <== NOT EXECUTED 4e1b2: 2153 0024 movel %a3@,%a0@(36) <== NOT EXECUTED 4e1b6: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e1b8: 2151 0028 movel %a1@,%a0@(40) <== NOT EXECUTED 4e1bc: 2244 moveal %d4,%a1 <== NOT EXECUTED 4e1be: 2153 002c movel %a3@,%a0@(44) <== NOT EXECUTED 4e1c2: 2151 0030 movel %a1@,%a0@(48) <== NOT EXECUTED 4e1c6: 2155 0034 movel %a5@,%a0@(52) <== NOT EXECUTED 4e1ca: 2154 0038 movel %a4@,%a0@(56) <== NOT EXECUTED 4e1ce: 216e ffe8 003c movel %fp@(-24),%a0@(60) <== NOT EXECUTED 4e1d4: 216e ffec 0040 movel %fp@(-20),%a0@(64) <== NOT EXECUTED 4e1da: 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;
4e1e0: 222e ffc4 movel %fp@(-60),%d1 <== NOT EXECUTED
return true;
4e1e4: 7001 moveq #1,%d0 <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
4e1e6: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED
return true;
}
4e1ea: 4cee 3cfc ff98 moveml %fp@(-104),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4e1f0: 4e5e unlk %fp <== NOT EXECUTED 4e1f2: 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)(
4e1f4: 42a7 clrl %sp@- <== NOT EXECUTED 4e1f6: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e1fa: 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)(
4e1fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e1fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e200: 4e90 jsr %a0@ <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e202: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e208: 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;
4e20a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e20e: 216e ffcc 0020 movel %fp@(-52),%a0@(32) <== NOT EXECUTED 4e214: 2153 0024 movel %a3@,%a0@(36) <== NOT EXECUTED 4e218: 2645 moveal %d5,%a3 <== NOT EXECUTED 4e21a: 2151 0028 movel %a1@,%a0@(40) <== NOT EXECUTED 4e21e: 2244 moveal %d4,%a1 <== NOT EXECUTED 4e220: 2153 002c movel %a3@,%a0@(44) <== NOT EXECUTED 4e224: 2151 0030 movel %a1@,%a0@(48) <== NOT EXECUTED 4e228: 2155 0034 movel %a5@,%a0@(52) <== NOT EXECUTED 4e22c: 2154 0038 movel %a4@,%a0@(56) <== NOT EXECUTED 4e230: 216e ffe8 003c movel %fp@(-24),%a0@(60) <== NOT EXECUTED 4e236: 216e ffec 0040 movel %fp@(-20),%a0@(64) <== NOT EXECUTED 4e23c: 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;
4e242: 222e ffc4 movel %fp@(-60),%d1 <== NOT EXECUTED 4e246: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED
return true;
4e24a: 7001 moveq #1,%d0 <== NOT EXECUTED 4e24c: 609c bras 4e1ea <_POSIX_signals_Check_signal+0x132><== NOT EXECUTED
}
4e24e: 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;
4e254: 4200 clrb %d0 <== NOT EXECUTED
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
return true;
}
4e256: 4e5e unlk %fp <== NOT EXECUTED
...
0004e8d4 <_POSIX_signals_Clear_process_signals>:
clear_signal = true;
mask = signo_to_mask( signo );
ISR_Level level;
_ISR_Disable( level );
4e8d4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _POSIX_signals_Clear_process_signals(
int signo
)
{
4e8da: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e8de: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4e8e2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e8e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
clear_signal = true;
mask = signo_to_mask( signo );
ISR_Level level;
_ISR_Disable( level );
4e8e6: 40c2 movew %sr,%d2 <== NOT EXECUTED 4e8e8: 8082 orl %d2,%d0 <== NOT EXECUTED 4e8ea: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
4e8ec: 2601 movel %d1,%d3 <== NOT EXECUTED 4e8ee: 2001 movel %d1,%d0 <== NOT EXECUTED 4e8f0: 41f9 0006 01b8 lea 601b8 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4e8f6: e58b lsll #2,%d3 <== NOT EXECUTED 4e8f8: e988 lsll #4,%d0 <== NOT EXECUTED 4e8fa: 9083 subl %d3,%d0 <== NOT EXECUTED 4e8fc: 7602 moveq #2,%d3 <== NOT EXECUTED 4e8fe: b6b0 0800 cmpl %a0@(00000000,%d0:l),%d3 <== NOT EXECUTED 4e902: 6718 beqs 4e91c <_POSIX_signals_Clear_process_signals+0x48><== NOT EXECUTED 4e904: 5381 subql #1,%d1 <== NOT EXECUTED 4e906: 7001 moveq #1,%d0 <== NOT EXECUTED 4e908: e3a8 lsll %d1,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )
clear_signal = false;
}
if ( clear_signal ) {
_POSIX_signals_Pending &= ~mask;
4e90a: 4680 notl %d0 <== NOT EXECUTED 4e90c: c1b9 0006 03ac andl %d0,603ac <_POSIX_signals_Pending> <== NOT EXECUTED
}
_ISR_Enable( level );
4e912: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4e914: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e916: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e918: 4e5e unlk %fp <== NOT EXECUTED 4e91a: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4e91c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4e91e: d1fc 0006 03b4 addal #394164,%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 ] ) )
4e924: 43f9 0006 03b0 lea 603b0 <_POSIX_signals_Siginfo>,%a1 <== NOT EXECUTED 4e92a: b1f1 0800 cmpal %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED 4e92e: 67d4 beqs 4e904 <_POSIX_signals_Clear_process_signals+0x30><== NOT EXECUTED
clear_signal = false;
}
if ( clear_signal ) {
_POSIX_signals_Pending &= ~mask;
}
_ISR_Enable( level );
4e930: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4e932: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e934: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e936: 4e5e unlk %fp <== NOT EXECUTED
...
0004e25c <_POSIX_signals_Clear_signals>:
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
4e25c: 7001 moveq #1,%d0 <== NOT EXECUTED
int signo,
siginfo_t *info,
bool is_global,
bool check_blocked
)
{
4e25e: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4e262: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4e266: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4e26a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4e26e: 2202 movel %d2,%d1 <== NOT EXECUTED 4e270: 5381 subql #1,%d1 <== NOT EXECUTED 4e272: 1a2e 0017 moveb %fp@(23),%d5 <== NOT EXECUTED 4e276: 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 )
4e278: 4a2e 001b tstb %fp@(27) <== NOT EXECUTED 4e27c: 6752 beqs 4e2d0 <_POSIX_signals_Clear_signals+0x74><== NOT EXECUTED
signals_blocked = ~api->signals_blocked;
4e27e: 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 );
4e282: 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;
4e288: 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 );
4e28a: 40c3 movew %sr,%d3 <== NOT EXECUTED 4e28c: 8283 orl %d3,%d1 <== NOT EXECUTED 4e28e: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( is_global ) {
4e290: 4a05 tstb %d5 <== NOT EXECUTED 4e292: 674e beqs 4e2e2 <_POSIX_signals_Clear_signals+0x86><== NOT EXECUTED
if ( mask & (_POSIX_signals_Pending & signals_blocked) ) {
4e294: c0b9 0006 03ac andl 603ac <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 4e29a: c084 andl %d4,%d0 <== NOT EXECUTED 4e29c: 6768 beqs 4e306 <_POSIX_signals_Clear_signals+0xaa><== NOT EXECUTED
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
4e29e: 2202 movel %d2,%d1 <== NOT EXECUTED 4e2a0: 2002 movel %d2,%d0 <== NOT EXECUTED 4e2a2: 47f9 0004 e8d4 lea 4e8d4 <_POSIX_signals_Clear_process_signals>,%a3<== NOT EXECUTED 4e2a8: 41f9 0006 01b8 lea 601b8 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4e2ae: e589 lsll #2,%d1 <== NOT EXECUTED 4e2b0: e988 lsll #4,%d0 <== NOT EXECUTED 4e2b2: 9081 subl %d1,%d0 <== NOT EXECUTED 4e2b4: 7202 moveq #2,%d1 <== NOT EXECUTED 4e2b6: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED 4e2ba: 6758 beqs 4e314 <_POSIX_signals_Clear_signals+0xb8><== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e2bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e2be: 4e93 jsr %a3@ <== NOT EXECUTED 4e2c0: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e2c2: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( mask & (api->signals_pending & signals_blocked) ) {
api->signals_pending &= ~mask;
do_callout = true;
}
}
_ISR_Enable( level );
4e2c4: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout; }
4e2c6: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e2cc: 4e5e unlk %fp <== NOT EXECUTED 4e2ce: 4e75 rts <== NOT EXECUTED
*/
if ( check_blocked )
signals_blocked = ~api->signals_blocked;
else
signals_blocked = SIGNAL_ALL_MASK;
4e2d0: 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 );
4e2d2: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4e2d8: 40c3 movew %sr,%d3 <== NOT EXECUTED 4e2da: 8283 orl %d3,%d1 <== NOT EXECUTED 4e2dc: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( is_global ) {
4e2de: 4a05 tstb %d5 <== NOT EXECUTED 4e2e0: 66b2 bnes 4e294 <_POSIX_signals_Clear_signals+0x38><== NOT EXECUTED
}
_POSIX_signals_Clear_process_signals( signo );
do_callout = true;
}
} else {
if ( mask & (api->signals_pending & signals_blocked) ) {
4e2e2: 2428 00d4 movel %a0@(212),%d2 <== NOT EXECUTED 4e2e6: 2200 movel %d0,%d1 <== NOT EXECUTED 4e2e8: c282 andl %d2,%d1 <== NOT EXECUTED 4e2ea: c284 andl %d4,%d1 <== NOT EXECUTED 4e2ec: 6718 beqs 4e306 <_POSIX_signals_Clear_signals+0xaa><== NOT EXECUTED
api->signals_pending &= ~mask;
4e2ee: 2200 movel %d0,%d1 <== NOT EXECUTED 4e2f0: 4681 notl %d1 <== NOT EXECUTED 4e2f2: c282 andl %d2,%d1 <== NOT EXECUTED
do_callout = true;
4e2f4: 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;
4e2f6: 2141 00d4 movel %d1,%a0@(212) <== NOT EXECUTED
do_callout = true;
}
}
_ISR_Enable( level );
4e2fa: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout; }
4e2fc: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e302: 4e5e unlk %fp <== NOT EXECUTED 4e304: 4e75 rts <== NOT EXECUTED
bool do_callout;
POSIX_signals_Siginfo_node *psiginfo;
mask = signo_to_mask( signo );
do_callout = false;
4e306: 4200 clrb %d0 <== NOT EXECUTED
if ( mask & (api->signals_pending & signals_blocked) ) {
api->signals_pending &= ~mask;
do_callout = true;
}
}
_ISR_Enable( level );
4e308: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout; }
4e30a: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e310: 4e5e unlk %fp <== NOT EXECUTED 4e312: 4e75 rts <== NOT EXECUTED 4e314: 41f9 0006 03b0 lea 603b0 <_POSIX_signals_Siginfo>,%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4e31a: 2200 movel %d0,%d1 <== NOT EXECUTED 4e31c: 0681 0006 03b4 addil #394164,%d1 <== NOT EXECUTED 4e322: 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))
4e326: b28a cmpl %a2,%d1 <== NOT EXECUTED 4e328: 6748 beqs 4e372 <_POSIX_signals_Clear_signals+0x116><== NOT EXECUTED
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
4e32a: 2252 moveal %a2@,%a1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4e32c: 2200 movel %d0,%d1 <== NOT EXECUTED 4e32e: d288 addl %a0,%d1 <== NOT EXECUTED
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
4e330: 2189 0800 movel %a1,%a0@(00000000,%d0:l) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4e334: 2341 0004 movel %d1,%a1@(4) <== 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 );
4e338: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e33a: 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;
4e33c: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
4e340: 588f addql #4,%sp <== NOT EXECUTED 4e342: 20ea 0008 movel %a2@(8),%a0@+ <== NOT EXECUTED 4e346: 20ea 000c movel %a2@(12),%a0@+ <== NOT EXECUTED 4e34a: 20aa 0010 movel %a2@(16),%a0@ <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4e34e: 2079 0006 0340 moveal 60340 <_POSIX_signals_Inactive_siginfo+0x8>,%a0<== NOT EXECUTED
the_node->next = tail;
4e354: 24bc 0006 033c movel #394044,%a2@ <== NOT EXECUTED
tail->previous = the_node;
4e35a: 23ca 0006 0340 movel %a2,60340 <_POSIX_signals_Inactive_siginfo+0x8><== NOT EXECUTED
old_last->next = the_node;
4e360: 208a movel %a2,%a0@ <== NOT EXECUTED
the_node->previous = old_last;
4e362: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e366: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e368: 4e93 jsr %a3@ <== NOT EXECUTED 4e36a: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e36c: 7001 moveq #1,%d0 <== NOT EXECUTED 4e36e: 6000 ff54 braw 4e2c4 <_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 );
4e372: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e374: 4e93 jsr %a3@ <== NOT EXECUTED 4e376: 588f addql #4,%sp <== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e378: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e37a: 4e93 jsr %a3@ <== NOT EXECUTED 4e37c: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e37e: 7001 moveq #1,%d0 <== NOT EXECUTED 4e380: 6000 ff42 braw 4e2c4 <_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
0004b7ea <_POSIX_signals_Post_switch_extension>:
*/
void _POSIX_signals_Post_switch_extension(
Thread_Control *the_thread
)
{
4b7ea: 4e56 fff0 linkw %fp,#-16 4b7ee: 206e 0008 moveal %fp@(8),%a0 4b7f2: 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 ];
4b7f6: 2468 0102 moveal %a0@(258),%a2
/*
* api may be NULL in case of a thread close in progress
*/
if ( !api )
4b7fa: 4a8a tstl %a2 4b7fc: 6700 008e beqw 4b88c <_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 );
4b800: 263c 0000 0700 movel #1792,%d3 4b806: 47f9 0004 e0b8 lea 4e0b8 <_POSIX_signals_Check_signal>,%a3 4b80c: 2003 movel %d3,%d0 4b80e: 40c1 movew %sr,%d1 4b810: 8081 orl %d1,%d0 4b812: 46c0 movew %d0,%sr
if ( !(~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending)) ) {
4b814: 2039 0006 03ac movel 603ac <_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 &
4b81a: 242a 00d0 movel %a2@(208),%d2 4b81e: 4682 notl %d2
(api->signals_pending | _POSIX_signals_Pending)) ) {
4b820: 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 &
4b824: c082 andl %d2,%d0
4b826: 6762 beqs 4b88a <_POSIX_signals_Post_switch_extension+0xa0><== ALWAYS TAKEN
(api->signals_pending | _POSIX_signals_Pending)) ) {
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
4b828: 46c1 movew %d1,%sr <== NOT EXECUTED
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b82a: 741b moveq #27,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
4b82c: 42a7 clrl %sp@- <== NOT EXECUTED 4b82e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b830: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b832: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b834: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4b838: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b83a: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b83c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b83e: 4e93 jsr %a3@ <== NOT EXECUTED
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b840: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b844: 7020 moveq #32,%d0 <== NOT EXECUTED 4b846: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b848: 66e2 bnes 4b82c <_POSIX_signals_Post_switch_extension+0x42><== NOT EXECUTED 4b84a: 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 );
4b84c: 42a7 clrl %sp@- <== NOT EXECUTED 4b84e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b850: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b852: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b854: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4b858: 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++ ) {
4b85a: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b85c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b85e: 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++ ) {
4b860: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b864: 701b moveq #27,%d0 <== NOT EXECUTED 4b866: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b868: 67a2 beqs 4b80c <_POSIX_signals_Post_switch_extension+0x22><== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
4b86a: 42a7 clrl %sp@- <== NOT EXECUTED 4b86c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b86e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b870: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b872: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4b876: 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++ ) {
4b878: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b87a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b87c: 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++ ) {
4b87e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b882: 701b moveq #27,%d0 <== NOT EXECUTED 4b884: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b886: 66c4 bnes 4b84c <_POSIX_signals_Post_switch_extension+0x62><== NOT EXECUTED 4b888: 6082 bras 4b80c <_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 );
4b88a: 46c1 movew %d1,%sr
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
}
}
4b88c: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4b892: 4e5e unlk %fp <== NOT EXECUTED
0005c440 <_POSIX_signals_Set_process_signals>:
sigset_t mask
)
{
ISR_Level level;
_ISR_Disable( level );
5c440: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _POSIX_signals_Set_process_signals(
sigset_t mask
)
{
5c446: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
5c44a: 40c1 movew %sr,%d1 <== NOT EXECUTED 5c44c: 8081 orl %d1,%d0 <== NOT EXECUTED 5c44e: 46c0 movew %d0,%sr <== NOT EXECUTED
_POSIX_signals_Pending |= mask;
5c450: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5c454: 81b9 0006 03ac orl %d0,603ac <_POSIX_signals_Pending> <== NOT EXECUTED
_ISR_Enable( level );
5c45a: 46c1 movew %d1,%sr <== NOT EXECUTED
}
5c45c: 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 1f40 pea 61f40 <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 46200: 4eb9 0004 a084 jsr 4a084 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46206: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4620a: 203c 0006 1f40 movel #401216,%d0 <== NOT EXECUTED 46210: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 46214: 203c 0006 17e8 movel #399336,%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 9f3c jmp 49f3c <_Watchdog_Insert> <== NOT EXECUTED
0005c460 <_POSIX_signals_Unblock_thread>:
5c460: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _POSIX_signals_Unblock_thread(
Thread_Control *the_thread,
int signo,
siginfo_t *info
)
{
5c462: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 5c466: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 5c46a: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 5c46e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5c472: 2608 movel %a0,%d3 <== NOT EXECUTED 5c474: 5383 subql #1,%d3 <== NOT EXECUTED
/*
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
5c476: 222a 0010 movel %a2@(16),%d1 <== NOT EXECUTED 5c47a: 2401 movel %d1,%d2 <== NOT EXECUTED 5c47c: 0282 1000 8000 andil #268468224,%d2 <== NOT EXECUTED
bool _POSIX_signals_Unblock_thread(
Thread_Control *the_thread,
int signo,
siginfo_t *info
)
{
5c482: 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 ];
5c486: 226a 0102 moveal %a2@(258),%a1 <== NOT EXECUTED 5c48a: e7a8 lsll %d3,%d0 <== NOT EXECUTED
/*
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
5c48c: 0c82 1000 8000 cmpil #268468224,%d2 <== NOT EXECUTED 5c492: 6770 beqs 5c504 <_POSIX_signals_Unblock_thread+0xa4><== NOT EXECUTED
}
/*
* Thread is not waiting due to a sigwait.
*/
if ( ~api->signals_blocked & mask ) {
5c494: 2429 00d0 movel %a1@(208),%d2 <== NOT EXECUTED 5c498: 4682 notl %d2 <== NOT EXECUTED 5c49a: c082 andl %d2,%d0 <== NOT EXECUTED 5c49c: 675a beqs 5c4f8 <_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 ) ) {
5c49e: 0801 001c btst #28,%d1 <== NOT EXECUTED 5c4a2: 673e beqs 5c4e2 <_POSIX_signals_Unblock_thread+0x82><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c4a4: 7004 moveq #4,%d0 <== NOT EXECUTED 5c4a6: 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);
5c4aa: 2001 movel %d1,%d0 <== NOT EXECUTED 5c4ac: 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) )
5c4b2: 6600 00a0 bnew 5c554 <_POSIX_signals_Unblock_thread+0xf4><== NOT EXECUTED
_Thread_queue_Extract_with_proxy( the_thread );
else if ( _States_Is_delaying(the_thread->current_state) ) {
5c4b6: 44c1 movew %d1,%ccr <== NOT EXECUTED 5c4b8: 6a3e bpls 5c4f8 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
5c4ba: 486a 0048 pea %a2@(72) <== NOT EXECUTED 5c4be: 4eb9 0004 9a1c jsr 49a1c <_Watchdog_Remove> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
5c4c4: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 5c4ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c4cc: 4eb9 0004 85e0 jsr 485e0 <_Thread_Clear_state> <== NOT EXECUTED 5c4d2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c4d6: 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;
5c4dc: 4200 clrb %d0 <== NOT EXECUTED
}
5c4de: 4e5e unlk %fp <== NOT EXECUTED 5c4e0: 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 ) {
5c4e2: 4a81 tstl %d1 <== NOT EXECUTED 5c4e4: 6612 bnes 5c4f8 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
5c4e6: 4ab9 0006 0182 tstl 60182 <_Per_CPU_Information+0x8> <== NOT EXECUTED 5c4ec: 670a beqs 5c4f8 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED 5c4ee: b5f9 0006 0186 cmpal 60186 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 5c4f4: 6700 0090 beqw 5c586 <_POSIX_signals_Unblock_thread+0x126><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c4f8: 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;
5c4fe: 4200 clrb %d0 <== NOT EXECUTED
}
5c500: 4e5e unlk %fp <== NOT EXECUTED 5c502: 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) ) {
5c504: 2200 movel %d0,%d1 <== NOT EXECUTED 5c506: c2aa 0030 andl %a2@(48),%d1 <== NOT EXECUTED 5c50a: 672e beqs 5c53a <_POSIX_signals_Unblock_thread+0xda><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c50c: 7004 moveq #4,%d0 <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
5c50e: 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;
5c512: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
5c516: 4a84 tstl %d4 <== NOT EXECUTED 5c518: 6750 beqs 5c56a <_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;
5c51a: 2244 moveal %d4,%a1 <== NOT EXECUTED 5c51c: 204b moveal %a3,%a0 <== NOT EXECUTED 5c51e: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 5c520: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 5c522: 2091 movel %a1@,%a0@ <== NOT EXECUTED
}
_Thread_queue_Extract_with_proxy( the_thread );
5c524: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c526: 4eb9 0004 90bc jsr 490bc <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
return true;
5c52c: 588f addql #4,%sp <== NOT EXECUTED 5c52e: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c530: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5c536: 4e5e unlk %fp <== NOT EXECUTED 5c538: 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) ) {
5c53a: 2229 00d0 movel %a1@(208),%d1 <== NOT EXECUTED 5c53e: 4681 notl %d1 <== NOT EXECUTED 5c540: c081 andl %d1,%d0 <== NOT EXECUTED 5c542: 67b4 beqs 5c4f8 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c544: 7004 moveq #4,%d0 <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
5c546: 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;
5c54a: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
5c54e: 4a84 tstl %d4 <== NOT EXECUTED 5c550: 66c8 bnes 5c51a <_POSIX_signals_Unblock_thread+0xba><== NOT EXECUTED 5c552: 6016 bras 5c56a <_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 );
5c554: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c556: 4eb9 0004 90bc jsr 490bc <_Thread_queue_Extract_with_proxy><== NOT EXECUTED 5c55c: 588f addql #4,%sp <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c55e: 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;
5c564: 4200 clrb %d0 <== NOT EXECUTED
}
5c566: 4e5e unlk %fp <== NOT EXECUTED 5c568: 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;
5c56a: 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;
5c56e: 2688 movel %a0,%a3@ <== NOT EXECUTED
the_info->si_code = SI_USER;
5c570: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
the_info->si_value.sival_int = 0;
5c574: 42ab 0008 clrl %a3@(8) <== NOT EXECUTED
} else {
*the_info = *info;
}
_Thread_queue_Extract_with_proxy( the_thread );
5c578: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c57a: 4eb9 0004 90bc jsr 490bc <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
return true;
5c580: 588f addql #4,%sp <== NOT EXECUTED 5c582: 7001 moveq #1,%d0 <== NOT EXECUTED 5c584: 60aa bras 5c530 <_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;
5c586: 7001 moveq #1,%d0 <== NOT EXECUTED
}
}
return false;
}
5c588: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 5c58e: 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;
5c590: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
}
return false;
5c596: 4200 clrb %d0 <== NOT EXECUTED
}
...
000483dc <_Protected_heap_Extend>:
bool _Protected_heap_Extend(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
483dc: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
bool extend_ok;
uintptr_t amount_extended;
_RTEMS_Lock_allocator();
483e0: 2f39 0006 0484 movel 60484 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 483e6: 4eb9 0004 71a8 jsr 471a8 <_API_Mutex_Lock> <== NOT EXECUTED
extend_ok = _Heap_Extend(the_heap, starting_address, size, &amount_extended);
483ec: 486e fffc pea %fp@(-4) <== NOT EXECUTED 483f0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 483f4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 483f8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 483fc: 4eb9 0004 cb3c jsr 4cb3c <_Heap_Extend> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
48402: 2f39 0006 0484 movel 60484 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 48408: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 4840c: 4eb9 0004 7208 jsr 47208 <_API_Mutex_Unlock> <== NOT EXECUTED
return extend_ok; }
48412: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 48416: 4e5e unlk %fp <== NOT EXECUTED
...
0004cfcc <_Protected_heap_Get_free_information>:
bool _Protected_heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
4cfcc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* TBD: _Heap_Get_free_information does not error check or return status.
*/
_RTEMS_Lock_allocator();
4cfd0: 2f39 0006 61d4 movel 661d4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4cfd6: 4eb9 0004 b2c4 jsr 4b2c4 <_API_Mutex_Lock> <== NOT EXECUTED
_Heap_Get_free_information( the_heap, info );
4cfdc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4cfe0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cfe4: 4eb9 0005 1964 jsr 51964 <_Heap_Get_free_information> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4cfea: 2f39 0006 61d4 movel 661d4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4cff0: 4eb9 0004 b324 jsr 4b324 <_API_Mutex_Unlock> <== NOT EXECUTED
return true;
}
4cff6: 7001 moveq #1,%d0 <== NOT EXECUTED 4cff8: 4e5e unlk %fp <== NOT EXECUTED
000488c4 <_Protected_heap_Get_information>:
bool _Protected_heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
488c4: 4e56 0000 linkw %fp,#0 488c8: 2f03 movel %d3,%sp@- 488ca: 262e 000c movel %fp@(12),%d3 488ce: 2f02 movel %d2,%sp@- 488d0: 242e 0008 movel %fp@(8),%d2
if ( !the_heap )
488d4: 6738 beqs 4890e <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
if ( !the_info )
488d6: 4a83 tstl %d3
488d8: 6734 beqs 4890e <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
_RTEMS_Lock_allocator();
488da: 2f39 0006 0848 movel 60848 <_RTEMS_Allocator_Mutex>,%sp@- 488e0: 4eb9 0004 7658 jsr 47658 <_API_Mutex_Lock>
_Heap_Get_information( the_heap, the_info );
488e6: 2f03 movel %d3,%sp@- 488e8: 2f02 movel %d2,%sp@- 488ea: 4eb9 0004 d484 jsr 4d484 <_Heap_Get_information>
_RTEMS_Unlock_allocator();
488f0: 2f39 0006 0848 movel 60848 <_RTEMS_Allocator_Mutex>,%sp@- 488f6: 4eb9 0004 76b8 jsr 476b8 <_API_Mutex_Unlock>
return true;
}
488fc: 242e fff8 movel %fp@(-8),%d2
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
48900: 4fef 0010 lea %sp@(16),%sp
}
48904: 262e fffc movel %fp@(-4),%d3 48908: 4e5e unlk %fp
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
4890a: 7001 moveq #1,%d0
}
4890c: 4e75 rts
4890e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48912: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 48916: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !the_heap )
return false;
if ( !the_info )
return false;
48918: 4200 clrb %d0 <== NOT EXECUTED
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
}
0005c6c4 <_Protected_heap_Resize_block>:
bool _Protected_heap_Resize_block(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
5c6c4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 5c6c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Heap_Resize_status status;
uintptr_t old_mem_size;
uintptr_t avail_mem_size;
_RTEMS_Lock_allocator();
5c6ca: 2f39 0005 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5c6d0: 4eb9 0004 6e5c jsr 46e5c <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Resize_block(
5c6d6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 5c6da: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5c6de: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5c6e2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5c6e6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5c6ea: 4eb9 0005 c710 jsr 5c710 <_Heap_Resize_block> <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5c6f0: 2f39 0005 fdb8 movel 5fdb8 <_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(
5c6f6: 2400 movel %d0,%d2 <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5c6f8: 4eb9 0004 6ebc jsr 46ebc <_API_Mutex_Unlock> <== NOT EXECUTED
return (status == HEAP_RESIZE_SUCCESSFUL);
5c6fe: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 5c702: 4a82 tstl %d2 <== NOT EXECUTED 5c704: 57c0 seq %d0 <== NOT EXECUTED
}
5c706: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5c70a: 4480 negl %d0 <== NOT EXECUTED 5c70c: 4e5e unlk %fp <== NOT EXECUTED
0004d0b0 <_Protected_heap_Walk>:
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d0b0: 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 ) {
4d0b4: 2039 0006 6114 movel 66114 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d0ba: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4d0be: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d0c2: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4d0c6: 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 ) {
4d0ca: 4a80 tstl %d0 <== NOT EXECUTED 4d0cc: 6720 beqs 4d0ee <_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 );
4d0ce: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED 4d0d2: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED 4d0d8: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED 4d0dc: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED
} return status; }
4d0e0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4d0e6: 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 );
4d0e8: 4ef9 0004 c1be jmp 4c1be <_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();
4d0ee: 2f39 0006 61d4 movel 661d4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d0f4: 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();
4d0fa: 4eb9 0004 b2c4 jsr 4b2c4 <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d100: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d102: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d104: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d106: 4eb9 0004 c1be jsr 4c1be <_Heap_Walk> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4d10c: 2f39 0006 61d4 movel 661d4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4d112: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 4d116: 4eb9 0004 b324 jsr 4b324 <_API_Mutex_Unlock> <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d11c: 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();
4d120: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d124: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4d12a: 4e5e unlk %fp <== NOT EXECUTED
...
0004c354 <_RTEMS_Tasks_Invoke_task_variable_dtor>:
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4c354: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
4c358: 2039 0006 0186 movel 60186 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4c35e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c360: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
4c364: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
if (_Thread_Is_executing(the_thread)) {
4c368: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 4c36c: 671e beqs 4c38c <_RTEMS_Tasks_Invoke_task_variable_dtor+0x38><== NOT EXECUTED
value = *tvp->ptr;
*tvp->ptr = tvp->gval;
} else {
value = tvp->tval;
4c36e: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
}
if ( dtor )
4c372: 4a88 tstl %a0 <== NOT EXECUTED 4c374: 6706 beqs 4c37c <_RTEMS_Tasks_Invoke_task_variable_dtor+0x28><== NOT EXECUTED
(*dtor)(value);
4c376: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4c378: 4e90 jsr %a0@ <== NOT EXECUTED 4c37a: 588f addql #4,%sp <== NOT EXECUTED
_Workspace_Free(tvp);
4c37c: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4c380: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c384: 4e5e unlk %fp <== NOT EXECUTED
}
if ( dtor )
(*dtor)(value);
_Workspace_Free(tvp);
4c386: 4ef9 0004 9bba jmp 49bba <_Workspace_Free> <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
value = *tvp->ptr;
4c38c: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED 4c390: 2011 movel %a1@,%d0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4c392: 22aa 0008 movel %a2@(8),%a1@ <== NOT EXECUTED 4c396: 60da bras 4c372 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x1e><== NOT EXECUTED
0004c282 <_RTEMS_tasks_Create_extension>:
bool _RTEMS_tasks_Create_extension(
Thread_Control *executing,
Thread_Control *created
)
{
4c282: 4e56 0000 linkw %fp,#0 4c286: 2f0a movel %a2,%sp@- 4c288: 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() )
4c28c: 4a39 0005 e414 tstb 5e414 <Configuration_RTEMS_API+0x4>
4c292: 6758 beqs 4c2ec <_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 );
4c294: 705e moveq #94,%d0
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
4c296: 2f00 movel %d0,%sp@- 4c298: 4eb9 0004 9b9e jsr 49b9e <_Workspace_Allocate>
if ( !api )
4c29e: 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 );
4c2a0: 2040 moveal %d0,%a0
if ( !api )
4c2a2: 4a80 tstl %d0
4c2a4: 6758 beqs 4c2fe <_RTEMS_tasks_Create_extension+0x7c><== NEVER TAKEN
return false;
created->API_Extensions[ THREAD_API_RTEMS ] = api;
4c2a6: 2540 00fe movel %d0,%a2@(254)
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4c2aa: 4200 clrb %d0
api->pending_events = EVENT_SETS_NONE_PENDING;
4c2ac: 4290 clrl %a0@ 4c2ae: 1140 0008 moveb %d0,%a0@(8)
api->event_condition = 0;
4c2b2: 42a8 0004 clrl %a0@(4)
information->handler = NULL;
4c2b6: 42a8 000a clrl %a0@(10)
information->mode_set = RTEMS_DEFAULT_MODES;
4c2ba: 42a8 000e clrl %a0@(14)
information->signals_posted = 0;
4c2be: 42a8 0012 clrl %a0@(18)
information->signals_pending = 0;
4c2c2: 42a8 0016 clrl %a0@(22)
information->nest_level = 0;
4c2c6: 42a8 001a clrl %a0@(26)
_ASR_Initialize( &api->Signal ); created->task_variables = NULL;
4c2ca: 42aa 010a clrl %a2@(266)
if ( rtems_configuration_get_notepads_enabled() ) {
4c2ce: 4a39 0005 e414 tstb 5e414 <Configuration_RTEMS_API+0x4>
4c2d4: 670c beqs 4c2e2 <_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(
4c2d6: 41e8 001e lea %a0@(30),%a0 4c2da: 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;
4c2dc: 4298 clrl %a0@+ 4c2de: 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++)
4c2e0: 66fa bnes 4c2dc <_RTEMS_tasks_Create_extension+0x5a>
api->Notepads[i] = 0;
}
return true;
}
4c2e2: 246e fffc moveal %fp@(-4),%a2 4c2e6: 4e5e unlk %fp
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
4c2e8: 7001 moveq #1,%d0
}
4c2ea: 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));
4c2ec: 701e moveq #30,%d0
api = _Workspace_Allocate( to_allocate );
4c2ee: 2f00 movel %d0,%sp@- 4c2f0: 4eb9 0004 9b9e jsr 49b9e <_Workspace_Allocate>
if ( !api )
4c2f6: 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 );
4c2f8: 2040 moveal %d0,%a0
if ( !api )
4c2fa: 4a80 tstl %d0
4c2fc: 66a8 bnes 4c2a6 <_RTEMS_tasks_Create_extension+0x24><== ALWAYS TAKEN
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
4c2fe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c302: 4e5e unlk %fp <== NOT EXECUTED
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
if ( !api )
return false;
4c304: 4200 clrb %d0 <== NOT EXECUTED
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
0004c22c <_RTEMS_tasks_Delete_extension>:
void _RTEMS_tasks_Delete_extension(
Thread_Control *executing,
Thread_Control *deleted
)
{
4c22c: 4e56 fff4 linkw %fp,#-12 4c230: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 4c234: 246e 000c moveal %fp@(12),%a2 4c238: 47f9 0004 c354 lea 4c354 <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3
/*
* Free per task variable memory
*/
tvp = deleted->task_variables;
4c23e: 206a 010a moveal %a2@(266),%a0
deleted->task_variables = NULL;
4c242: 42aa 010a clrl %a2@(266)
while (tvp) {
4c246: 4a88 tstl %a0
4c248: 671e beqs 4c268 <_RTEMS_tasks_Delete_extension+0x3c><== ALWAYS TAKEN
next = (rtems_task_variable_t *)tvp->next;
4c24a: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4c24c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c24e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c250: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4c252: 508f addql #8,%sp <== NOT EXECUTED 4c254: 4a82 tstl %d2 <== NOT EXECUTED 4c256: 6710 beqs 4c268 <_RTEMS_tasks_Delete_extension+0x3c><== NOT EXECUTED
next = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
tvp = next;
4c258: 2042 moveal %d2,%a0 <== NOT EXECUTED
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
next = (rtems_task_variable_t *)tvp->next;
4c25a: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4c25c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c25e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c260: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4c262: 508f addql #8,%sp <== NOT EXECUTED 4c264: 4a82 tstl %d2 <== NOT EXECUTED 4c266: 66f0 bnes 4c258 <_RTEMS_tasks_Delete_extension+0x2c><== NOT EXECUTED
/*
* Free API specific memory
*/
(void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] );
4c268: 2f2a 00fe movel %a2@(254),%sp@- 4c26c: 4eb9 0004 9bba jsr 49bba <_Workspace_Free>
deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL;
4c272: 588f addql #4,%sp 4c274: 42aa 00fe clrl %a2@(254)
}
4c278: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4c27e: 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 e43a moveal 5e43a <Configuration_RTEMS_API+0x2a>,%a2
maximum = Configuration_RTEMS_API.number_of_initialization_tasks;
468aa: 2639 0005 e436 movel 5e436 <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 7868 jsr 47868 <_Internal_error_Occurred>
...
0004c1b0 <_RTEMS_tasks_Post_switch_extension>:
*/
void _RTEMS_tasks_Post_switch_extension(
Thread_Control *executing
)
{
4c1b0: 4e56 ffec linkw %fp,#-20 4c1b4: 206e 0008 moveal %fp@(8),%a0 4c1b8: 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 ];
4c1bc: 2468 00fe moveal %a0@(254),%a2
if ( !api )
4c1c0: 4a8a tstl %a2
4c1c2: 671a beqs 4c1de <_RTEMS_tasks_Post_switch_extension+0x2e><== NEVER TAKEN
* Signal Processing
*/
asr = &api->Signal;
_ISR_Disable( level );
4c1c4: 203c 0000 0700 movel #1792,%d0 4c1ca: 40c1 movew %sr,%d1 4c1cc: 8081 orl %d1,%d0 4c1ce: 46c0 movew %d0,%sr
signal_set = asr->signals_posted;
4c1d0: 242a 0012 movel %a2@(18),%d2
asr->signals_posted = 0;
4c1d4: 42aa 0012 clrl %a2@(18)
_ISR_Enable( level );
4c1d8: 46c1 movew %d1,%sr
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
4c1da: 4a82 tstl %d2
4c1dc: 660a bnes 4c1e8 <_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 );
}
4c1de: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 4c1e4: 4e5e unlk %fp 4c1e6: 4e75 rts
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
return;
asr->nest_level += 1;
4c1e8: 52aa 001a addql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
4c1ec: 260e movel %fp,%d3 <== NOT EXECUTED 4c1ee: 5983 subql #4,%d3 <== NOT EXECUTED 4c1f0: 47f9 0004 e410 lea 4e410 <rtems_task_mode>,%a3 <== NOT EXECUTED 4c1f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c1f8: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4c1fe: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED 4c202: 4e93 jsr %a3@ <== NOT EXECUTED
(*asr->handler)( signal_set );
4c204: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c206: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED 4c20a: 4e90 jsr %a0@ <== NOT EXECUTED
asr->nest_level -= 1;
4c20c: 53aa 001a subql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
4c210: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c212: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4c218: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c21c: 4e93 jsr %a3@ <== NOT EXECUTED 4c21e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4c222: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4c228: 4e5e unlk %fp <== NOT EXECUTED
0004c156 <_RTEMS_tasks_Switch_extension>:
void _RTEMS_tasks_Switch_extension(
Thread_Control *executing,
Thread_Control *heir
)
{
4c156: 4e56 0000 linkw %fp,#0 4c15a: 206e 0008 moveal %fp@(8),%a0
/*
* Per Task Variables
*/
tvp = executing->task_variables;
4c15e: 2068 010a moveal %a0@(266),%a0
while (tvp) {
4c162: 4a88 tstl %a0
4c164: 6712 beqs 4c178 <_RTEMS_tasks_Switch_extension+0x22><== ALWAYS TAKEN
tvp->tval = *tvp->ptr;
4c166: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED 4c16a: 2151 000c movel %a1@,%a0@(12) <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4c16e: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4c172: 2050 moveal %a0@,%a0 <== NOT EXECUTED
/*
* Per Task Variables
*/
tvp = executing->task_variables;
while (tvp) {
4c174: 4a88 tstl %a0 <== NOT EXECUTED 4c176: 66ee bnes 4c166 <_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;
4c178: 206e 000c moveal %fp@(12),%a0 4c17c: 2068 010a moveal %a0@(266),%a0
while (tvp) {
4c180: 4a88 tstl %a0
4c182: 6712 beqs 4c196 <_RTEMS_tasks_Switch_extension+0x40><== ALWAYS TAKEN
tvp->gval = *tvp->ptr;
4c184: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED 4c188: 2151 0008 movel %a1@,%a0@(8) <== NOT EXECUTED
*tvp->ptr = tvp->tval;
4c18c: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4c190: 2050 moveal %a0@,%a0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
while (tvp) {
4c192: 4a88 tstl %a0 <== NOT EXECUTED 4c194: 66ee bnes 4c184 <_RTEMS_tasks_Switch_extension+0x2e><== NOT EXECUTED
tvp->gval = *tvp->ptr;
*tvp->ptr = tvp->tval;
tvp = (rtems_task_variable_t *)tvp->next;
}
}
4c196: 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 b238 lea 4b238 <_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 8dd8 jsr 48dd8 <_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 22f0 cmpal 622f0 <_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 1f2e pea 61f2e <_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 b0f8 jsr 4b0f8 <_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 b204 jsr 4b204 <_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 8dd8 jsr 48dd8 <_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 22f0 cmpal 622f0 <_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 1f2e pea 61f2e <_Thread_Time_of_last_context_switch><== NOT EXECUTED 473d6: 4eb9 0004 b238 jsr 4b238 <_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 b0f8 jsr 4b0f8 <_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 1d6c pea 61d6c <_Rate_monotonic_Information> <== NOT EXECUTED 479a8: 4eb9 0004 9958 jsr 49958 <_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 1e62 movel 61e62 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 479e8: 5380 subql #1,%d0 <== NOT EXECUTED 479ea: 23c0 0006 1e62 movel %d0,61e62 <_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 1f42 pea 61f42 <_Watchdog_Ticks_chain> <== NOT EXECUTED 47a18: 4eb9 0004 b540 jsr 4b540 <_Watchdog_Insert> <== NOT EXECUTED 47a1e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47a22: 2039 0006 1e62 movel 61e62 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47a28: 5380 subql #1,%d0 <== NOT EXECUTED 47a2a: 23c0 0006 1e62 movel %d0,61e62 <_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 a154 jsr 4a154 <_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 1f42 pea 61f42 <_Watchdog_Ticks_chain> <== NOT EXECUTED 47a58: 4eb9 0004 b540 jsr 4b540 <_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 1e62 movel 61e62 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47a68: 5380 subql #1,%d0 <== NOT EXECUTED 47a6a: 23c0 0006 1e62 movel %d0,61e62 <_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 b0f8 lea 4b0f8 <_Timespec_Add_to>,%a5 <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
47446: 49f9 0004 b204 lea 4b204 <_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 b1d0 lea 4b1d0 <_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
0005ff24 <_Region_Process_queue>:
*/
void _Region_Process_queue(
Region_Control *the_region
)
{
5ff24: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5ff28: 2039 0007 eb7c movel 7eb7c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5ff2e: 5280 addql #1,%d0 <== NOT EXECUTED 5ff30: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 5ff34: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 5ff38: 23c0 0007 eb7c movel %d0,7eb7c <_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();
5ff3e: 2f39 0007 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5ff44: 240b movel %a3,%d2 <== NOT EXECUTED 5ff46: 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 );
5ff4c: 260b movel %a3,%d3 <== NOT EXECUTED 5ff4e: 49f9 0006 0878 lea 60878 <_Thread_queue_First>,%a4 <== NOT EXECUTED 5ff54: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED 5ff5a: 4bf9 0005 a864 lea 5a864 <_Heap_Allocate_aligned_with_boundary>,%a5<== NOT EXECUTED 5ff60: 4eb9 0005 9c18 jsr 59c18 <_API_Mutex_Unlock> <== NOT EXECUTED 5ff66: 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 );
5ff68: 283c 0006 0750 movel #395088,%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 );
5ff6e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ff70: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5ff72: 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 );
5ff74: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5ff76: 4a80 tstl %d0 <== NOT EXECUTED 5ff78: 6738 beqs 5ffb2 <_Region_Process_queue+0x8e> <== NOT EXECUTED 5ff7a: 42a7 clrl %sp@- <== NOT EXECUTED 5ff7c: 42a7 clrl %sp@- <== NOT EXECUTED 5ff7e: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 5ff82: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5ff84: 4e95 jsr %a5@ <== NOT EXECUTED
the_segment = (void **) _Region_Allocate_segment(
the_region,
the_thread->Wait.count
);
if ( the_segment == NULL )
5ff86: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5ff8a: 4a80 tstl %d0 <== NOT EXECUTED 5ff8c: 6724 beqs 5ffb2 <_Region_Process_queue+0x8e> <== NOT EXECUTED
break;
*(void **)the_thread->Wait.return_argument = the_segment;
5ff8e: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 5ff92: 2080 movel %d0,%a0@ <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
5ff94: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
5ff98: 2044 moveal %d4,%a0 <== NOT EXECUTED 5ff9a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5ff9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ff9e: 4e90 jsr %a0@ <== NOT EXECUTED
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
5ffa0: 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;
5ffa2: 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 );
5ffa6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ffa8: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5ffaa: 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 );
5ffac: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5ffae: 4a80 tstl %d0 <== NOT EXECUTED 5ffb0: 66c8 bnes 5ff7a <_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();
}
5ffb2: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 5ffb8: 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();
5ffba: 4ef9 0005 c52a jmp 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
0004c9b0 <_Scheduler_priority_Block>:
void _Scheduler_priority_Block(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
4c9b0: 4e56 0000 linkw %fp,#0 4c9b4: 206e 000c moveal %fp@(12),%a0 4c9b8: 2f0a movel %a2,%sp@-
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract(
Thread_Control *the_thread
)
{
Chain_Control *ready = the_thread->scheduler.priority->ready_chain;
4c9ba: 2268 008a moveal %a0@(138),%a1 4c9be: 2251 moveal %a1@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
4c9c0: 2029 0008 movel %a1@(8),%d0 4c9c4: b091 cmpl %a1@,%d0
4c9c6: 677e beqs 4ca46 <_Scheduler_priority_Block+0x96>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4c9c8: 2450 moveal %a0@,%a2
previous = the_node->previous;
4c9ca: 2268 0004 moveal %a0@(4),%a1
next->previous = previous;
4c9ce: 2549 0004 movel %a1,%a2@(4)
previous->next = next;
4c9d2: 228a movel %a2,%a1@
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4c9d4: b1f9 0006 018a cmpal 6018a <_Per_CPU_Information+0x10>,%a0
4c9da: 671c beqs 4c9f8 <_Scheduler_priority_Block+0x48>
_Scheduler_priority_Schedule_body(the_scheduler);
if ( _Thread_Is_executing( the_thread ) )
4c9dc: b1f9 0006 0186 cmpal 60186 <_Per_CPU_Information+0xc>,%a0
4c9e2: 6706 beqs 4c9ea <_Scheduler_priority_Block+0x3a> _Scheduler_priority_Block_body(the_scheduler, the_thread); }
4c9e4: 245f moveal %sp@+,%a2 4c9e6: 4e5e unlk %fp 4c9e8: 4e75 rts 4c9ea: 245f moveal %sp@+,%a2 4c9ec: 4e5e unlk %fp
_Thread_Dispatch_necessary = true;
4c9ee: 7001 moveq #1,%d0 4c9f0: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18> 4c9f6: 4e75 rts
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{
Priority_bit_map_Control minor;
Priority_bit_map_Control major;
_Bitfield_Find_first_bit( _Priority_Major_bit_map, major );
4c9f8: 3039 0006 0194 movew 60194 <_Priority_Major_bit_map>,%d0 4c9fe: 4840 swap %d0 4ca00: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4ca02: 43f9 0006 0198 lea 60198 <_Priority_Bit_map>,%a1 4ca08: 0280 0000 ffff andil #65535,%d0 4ca0e: 3231 0a00 movew %a1@(00000000,%d0:l:2),%d1 4ca12: 4841 swap %d1 4ca14: 04c1 ff1 %d1 4ca16: 226e 0008 moveal %fp@(8),%a1
return (_Priority_Bits_index( major ) << 4) +
4ca1a: 0281 0000 ffff andil #65535,%d1 4ca20: e988 lsll #4,%d0 4ca22: 2251 moveal %a1@,%a1 4ca24: d081 addl %d1,%d0
Chain_Control *the_ready_queue
)
{
Priority_Control index = _Priority_bit_map_Get_highest();
if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )
4ca26: 2200 movel %d0,%d1 4ca28: e988 lsll #4,%d0 4ca2a: e589 lsll #2,%d1 4ca2c: 9081 subl %d1,%d0 4ca2e: d3c0 addal %d0,%a1 4ca30: 2019 movel %a1@+,%d0 4ca32: b3c0 cmpal %d0,%a1
4ca34: 6754 beqs 4ca8a <_Scheduler_priority_Block+0xda> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
4ca36: 23c0 0006 018a movel %d0,6018a <_Per_CPU_Information+0x10>
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
_Scheduler_priority_Schedule_body(the_scheduler);
if ( _Thread_Is_executing( the_thread ) )
4ca3c: b1f9 0006 0186 cmpal 60186 <_Per_CPU_Information+0xc>,%a0
4ca42: 66a0 bnes 4c9e4 <_Scheduler_priority_Block+0x34> <== NEVER TAKEN
4ca44: 60a4 bras 4c9ea <_Scheduler_priority_Block+0x3a>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4ca46: 2009 movel %a1,%d0 4ca48: 5880 addql #4,%d0
head->next = tail;
head->previous = NULL;
4ca4a: 42a9 0004 clrl %a1@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4ca4e: 2280 movel %d0,%a1@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4ca50: 2349 0008 movel %a1,%a1@(8)
{
Chain_Control *ready = the_thread->scheduler.priority->ready_chain;
if ( _Chain_Has_only_one_node( ready ) ) {
_Chain_Initialize_empty( ready );
_Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
4ca54: 2268 008a moveal %a0@(138),%a1
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
4ca58: 2469 0004 moveal %a1@(4),%a2 4ca5c: 3029 000e movew %a1@(14),%d0 4ca60: 3212 movew %a2@,%d1 4ca62: c081 andl %d1,%d0 4ca64: 3480 movew %d0,%a2@
if ( *the_priority_map->minor == 0 )
4ca66: 6600 ff6c bnew 4c9d4 <_Scheduler_priority_Block+0x24>
_Priority_Major_bit_map &= the_priority_map->block_major;
4ca6a: 3239 0006 0194 movew 60194 <_Priority_Major_bit_map>,%d1 4ca70: 3029 000c movew %a1@(12),%d0 4ca74: c081 andl %d1,%d0 4ca76: 33c0 0006 0194 movew %d0,60194 <_Priority_Major_bit_map>
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4ca7c: b1f9 0006 018a cmpal 6018a <_Per_CPU_Information+0x10>,%a0 4ca82: 6600 ff58 bnew 4c9dc <_Scheduler_priority_Block+0x2c> 4ca86: 6000 ff70 braw 4c9f8 <_Scheduler_priority_Block+0x48>
Priority_Control index = _Priority_bit_map_Get_highest();
if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )
return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
return NULL;
4ca8a: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
4ca8c: 23c0 0006 018a movel %d0,6018a <_Per_CPU_Information+0x10> <== NOT EXECUTED 4ca92: 60a8 bras 4ca3c <_Scheduler_priority_Block+0x8c> <== NOT EXECUTED
00048230 <_Scheduler_priority_Schedule>:
*/
void _Scheduler_priority_Schedule(
Scheduler_Control *the_scheduler
)
{
48230: 4e56 0000 linkw %fp,#0
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 );
48234: 3039 0006 0194 movew 60194 <_Priority_Major_bit_map>,%d0 4823a: 4840 swap %d0 4823c: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4823e: 41f9 0006 0198 lea 60198 <_Priority_Bit_map>,%a0 48244: 0280 0000 ffff andil #65535,%d0 4824a: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1 4824e: 4841 swap %d1 48250: 04c1 ff1 %d1
_Scheduler_priority_Schedule_body( the_scheduler ); }
48252: 206e 0008 moveal %fp@(8),%a0
return (_Priority_Bits_index( major ) << 4) +
48256: 0281 0000 ffff andil #65535,%d1 4825c: e988 lsll #4,%d0 4825e: 2050 moveal %a0@,%a0 48260: d081 addl %d1,%d0
Chain_Control *the_ready_queue
)
{
Priority_Control index = _Priority_bit_map_Get_highest();
if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )
48262: 2200 movel %d0,%d1 48264: e988 lsll #4,%d0 48266: e589 lsll #2,%d1 48268: 9081 subl %d1,%d0 4826a: d1c0 addal %d0,%a0 4826c: 2018 movel %a0@+,%d0 4826e: b1c0 cmpal %d0,%a0
48270: 670a beqs 4827c <_Scheduler_priority_Schedule+0x4c><== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
48272: 23c0 0006 018a movel %d0,6018a <_Per_CPU_Information+0x10> 48278: 4e5e unlk %fp 4827a: 4e75 rts
Priority_Control index = _Priority_bit_map_Get_highest();
if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )
return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
return NULL;
4827c: 4280 clrl %d0 4827e: 4e5e unlk %fp
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
48280: 23c0 0006 018a movel %d0,6018a <_Per_CPU_Information+0x10> <== NOT EXECUTED
000482a4 <_Scheduler_priority_Thread_scheduler_free>:
void _Scheduler_priority_Thread_scheduler_free (
Scheduler_Control *the_scheduler __attribute__((unused)),
Thread_Control *the_thread
)
{
482a4: 4e56 0000 linkw %fp,#0 482a8: 206e 000c moveal %fp@(12),%a0
_Workspace_Free( the_thread->scheduler.priority );
482ac: 2d68 008a 0008 movel %a0@(138),%fp@(8)
}
482b2: 4e5e unlk %fp
void _Scheduler_priority_Thread_scheduler_free (
Scheduler_Control *the_scheduler __attribute__((unused)),
Thread_Control *the_thread
)
{
_Workspace_Free( the_thread->scheduler.priority );
482b4: 4ef9 0004 9bba jmp 49bba <_Workspace_Free>
...
00048328 <_Scheduler_priority_Unblock>:
void _Scheduler_priority_Unblock (
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
48328: 4e56 0000 linkw %fp,#0 4832c: 206e 000c moveal %fp@(12),%a0 48330: 2f0b movel %a3,%sp@- 48332: 2f0a movel %a2,%sp@-
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue(
Thread_Control *the_thread
)
{
_Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
48334: 2268 008a moveal %a0@(138),%a1
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
48338: 2669 0004 moveal %a1@(4),%a3 4833c: 3029 000a movew %a1@(10),%d0 48340: 3213 movew %a3@,%d1
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
48342: 2451 moveal %a1@,%a2 48344: 8081 orl %d1,%d0 48346: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
48348: 3029 0008 movew %a1@(8),%d0 4834c: 3239 0006 0194 movew 60194 <_Priority_Major_bit_map>,%d1
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
48352: 226a 0008 moveal %a2@(8),%a1 48356: 8280 orl %d0,%d1
the_node->next = tail;
tail->previous = the_node;
48358: 2548 0008 movel %a0,%a2@(8)
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
4835c: 588a addql #4,%a2 4835e: 33c1 0006 0194 movew %d1,60194 <_Priority_Major_bit_map>
* 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 ) {
48364: 2028 0014 movel %a0@(20),%d0 48368: 208a movel %a2,%a0@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
4836a: 2149 0004 movel %a1,%a0@(4)
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
4836e: 2288 movel %a0,%a1@ 48370: 2279 0006 018a moveal 6018a <_Per_CPU_Information+0x10>,%a1 48376: b0a9 0014 cmpl %a1@(20),%d0
4837a: 641a bccs 48396 <_Scheduler_priority_Unblock+0x6e>
_Thread_Heir = the_thread;
4837c: 23c8 0006 018a movel %a0,6018a <_Per_CPU_Information+0x10>
if ( _Thread_Executing->is_preemptible ||
48382: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0 48388: 4a28 0074 tstb %a0@(116)
4838c: 6710 beqs 4839e <_Scheduler_priority_Unblock+0x76>
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
4838e: 7001 moveq #1,%d0 48390: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18>
_Scheduler_priority_Unblock_body(the_scheduler, the_thread); }
48396: 245f moveal %sp@+,%a2 48398: 265f moveal %sp@+,%a3 4839a: 4e5e unlk %fp 4839c: 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 ||
4839e: 4a80 tstl %d0
483a0: 66f4 bnes 48396 <_Scheduler_priority_Unblock+0x6e><== ALWAYS TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
483a2: 7001 moveq #1,%d0 <== NOT EXECUTED 483a4: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18> <== NOT EXECUTED 483aa: 60ea bras 48396 <_Scheduler_priority_Unblock+0x6e><== NOT EXECUTED
000483ac <_Scheduler_priority_Yield>:
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
483ac: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
483b0: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
483b6: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->scheduler.priority->ready_chain;
_ISR_Disable( level );
483ba: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED 483c0: 2002 movel %d2,%d0 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->scheduler.priority->ready_chain;
483c2: 2268 008a moveal %a0@(138),%a1 <== NOT EXECUTED 483c6: 2251 moveal %a1@,%a1 <== NOT EXECUTED
_ISR_Disable( level );
483c8: 40c1 movew %sr,%d1 <== NOT EXECUTED 483ca: 8081 orl %d1,%d0 <== NOT EXECUTED 483cc: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( !_Chain_Has_only_one_node( ready ) ) {
483ce: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED 483d2: b091 cmpl %a1@,%d0 <== NOT EXECUTED 483d4: 6750 beqs 48426 <_Scheduler_priority_Yield+0x7a> <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
483d6: 2850 moveal %a0@,%a4 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
483d8: 2009 movel %a1,%d0 <== NOT EXECUTED 483da: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
483dc: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
next->previous = previous;
483e0: 294b 0004 movel %a3,%a4@(4) <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
483e4: 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;
483e8: 268c movel %a4,%a3@ <== NOT EXECUTED
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
483ea: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
483ee: 2080 movel %d0,%a0@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
483f0: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
483f4: 2488 movel %a0,%a2@ <== NOT EXECUTED
_Chain_Extract_unprotected( &executing->Object.Node );
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
483f6: 46c1 movew %d1,%sr <== NOT EXECUTED 483f8: 8481 orl %d1,%d2 <== NOT EXECUTED 483fa: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
483fc: b1f9 0006 018a cmpal 6018a <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED 48402: 6712 beqs 48416 <_Scheduler_priority_Yield+0x6a> <== NOT EXECUTED
_Thread_Heir = (Thread_Control *) _Chain_First( ready );
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
48404: 7001 moveq #1,%d0 <== NOT EXECUTED 48406: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18> <== NOT EXECUTED
_ISR_Enable( level );
4840c: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4840e: 4cd7 1c04 moveml %sp@,%d2/%a2-%a4 <== NOT EXECUTED 48412: 4e5e unlk %fp <== NOT EXECUTED 48414: 4e75 rts <== NOT EXECUTED
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
if ( _Thread_Is_heir( executing ) )
_Thread_Heir = (Thread_Control *) _Chain_First( ready );
48416: 23d1 0006 018a movel %a1@,6018a <_Per_CPU_Information+0x10><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
4841c: 7001 moveq #1,%d0 <== NOT EXECUTED 4841e: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18> <== NOT EXECUTED 48424: 60e6 bras 4840c <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
_Thread_Heir = (Thread_Control *) _Chain_First( ready );
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
48426: b1f9 0006 018a cmpal 6018a <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED 4842c: 67de beqs 4840c <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4842e: 7001 moveq #1,%d0 <== NOT EXECUTED 48430: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18> <== NOT EXECUTED 48436: 60d4 bras 4840c <_Scheduler_priority_Yield+0x60> <== 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 d4fe lea 5d4fe <_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
000477d0 <_TOD_Get_uptime_as_timespec>:
*/
void _TOD_Get_uptime_as_timespec(
struct timespec *uptime
)
{
477d0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Timestamp_Control uptime_ts;
/* assume time checked for NULL by caller */
_TOD_Get_uptime( &uptime_ts );
477d4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 477d8: 4eb9 0004 ca84 jsr 4ca84 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_To_timespec( &uptime_ts, uptime );
477de: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 477e2: 588f addql #4,%sp <== NOT EXECUTED 477e4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 477e8: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
}
477ec: 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 );
477ee: 2080 movel %d0,%a0@ <== NOT EXECUTED 477f0: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
}
...
00048d6c <_TOD_Set>:
*/
void _TOD_Set(
const struct timespec *time
)
{
48d6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48d70: 2039 0006 a288 movel 6a288 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48d76: 5280 addql #1,%d0 <== NOT EXECUTED 48d78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48d7a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 48d7e: 23c0 0006 a288 movel %d0,6a288 <_Thread_Dispatch_disable_level><== NOT EXECUTED
long seconds;
_Thread_Disable_dispatch();
_TOD_Deactivate();
seconds = _TOD_Seconds_since_epoch();
48d84: 2039 0006 a332 movel 6a332 <_TOD_Now>,%d0 <== NOT EXECUTED
if ( time->tv_sec < seconds )
48d8a: 2212 movel %a2@,%d1 <== NOT EXECUTED 48d8c: b280 cmpl %d0,%d1 <== NOT EXECUTED 48d8e: 6d38 blts 48dc8 <_TOD_Set+0x5c> <== NOT EXECUTED
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );
48d90: 9280 subl %d0,%d1 <== NOT EXECUTED 48d92: 2f01 movel %d1,%sp@- <== NOT EXECUTED 48d94: 42a7 clrl %sp@- <== NOT EXECUTED 48d96: 4879 0006 a35c pea 6a35c <_Watchdog_Seconds_chain> <== NOT EXECUTED 48d9c: 4eb9 0004 b4f8 jsr 4b4f8 <_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 );
48da2: 23d2 0006 a332 movel %a2@,6a332 <_TOD_Now> <== NOT EXECUTED 48da8: 588a addql #4,%a2 <== NOT EXECUTED 48daa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48dae: 23d2 0006 a336 movel %a2@,6a336 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48db4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48db8: 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;
48dba: 7001 moveq #1,%d0 <== NOT EXECUTED 48dbc: 13c0 0006 a298 moveb %d0,6a298 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48dc2: 4ef9 0004 a442 jmp 4a442 <_Thread_Enable_dispatch> <== NOT EXECUTED 48dc8: 9081 subl %d1,%d0 <== NOT EXECUTED 48dca: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48dcc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 48dd0: 4879 0006 a35c pea 6a35c <_Watchdog_Seconds_chain> <== NOT EXECUTED 48dd6: 4eb9 0004 b4f8 jsr 4b4f8 <_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 );
48ddc: 23d2 0006 a332 movel %a2@,6a332 <_TOD_Now> <== NOT EXECUTED 48de2: 588a addql #4,%a2 <== NOT EXECUTED 48de4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48de8: 23d2 0006 a336 movel %a2@,6a336 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48dee: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48df2: 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;
48df4: 7001 moveq #1,%d0 <== NOT EXECUTED 48df6: 13c0 0006 a298 moveb %d0,6a298 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48dfc: 4ef9 0004 a442 jmp 4a442 <_Thread_Enable_dispatch> <== NOT EXECUTED
...
00047434 <_TOD_Tickle_ticks>:
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
47434: 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() );
47438: 2239 0005 e450 movel 5e450 <Configuration+0xc>,%d1
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
4743e: 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 );
47442: 240e movel %fp,%d2 47444: 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() );
47446: 263c 0000 03e8 movel #1000,%d3 4744c: 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 );
47450: 45f9 0004 9584 lea 49584 <_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;
47456: 2039 0005 fe22 movel 5fe22 <_Watchdog_Ticks_since_boot>,%d0 4745c: 5280 addql #1,%d0
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
4745e: 2f02 movel %d2,%sp@- 47460: 4879 0005 fd72 pea 5fd72 <_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() );
47466: 2d41 fffc movel %d1,%fp@(-4) 4746a: 42ae fff8 clrl %fp@(-8)
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
4746e: 23c0 0005 fe22 movel %d0,5fe22 <_Watchdog_Ticks_since_boot>
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
47474: 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 );
47476: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47478: 4879 0005 fda2 pea 5fda2 <_TOD_Now> <== NOT EXECUTED 4747e: 4e92 jsr %a2@ <== NOT EXECUTED
while ( seconds ) {
47480: 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 );
47484: 2400 movel %d0,%d2 <== NOT EXECUTED
while ( seconds ) {
47486: 6716 beqs 4749e <_TOD_Tickle_ticks+0x6a> <== NOT EXECUTED 47488: 45f9 0004 9abc lea 49abc <_Watchdog_Tickle>,%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )
{
_Watchdog_Tickle( &_Watchdog_Seconds_chain );
4748e: 4879 0005 fdcc pea 5fdcc <_Watchdog_Seconds_chain> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
47494: 5382 subql #1,%d2 <== NOT EXECUTED 47496: 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 ) {
47498: 588f addql #4,%sp <== NOT EXECUTED 4749a: 4a82 tstl %d2 <== NOT EXECUTED 4749c: 66f0 bnes 4748e <_TOD_Tickle_ticks+0x5a> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
}
}
4749e: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 474a4: 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 fb9a lea 5fb9a <_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 fbce lea 5fbce <_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 fb9a lea 5fb9a <_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 fbce lea 5fbce <_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 0c20 movel 60c20 <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 fbd6 lea 5fbd6 <_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 fbd6 lea 5fbd6 <_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
000484a0 <_Thread_Change_priority>:
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
484a0: 4e56 ffec linkw %fp,#-20 484a4: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ 484a8: 246e 0008 moveal %fp@(8),%a2
*/
/*
* Save original state
*/
original_state = the_thread->current_state;
484ac: 262a 0010 movel %a2@(16),%d3
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
484b0: 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 );
484b4: 2f0a movel %a2,%sp@-
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
484b6: 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 );
484ba: 4eb9 0004 92e4 jsr 492e4 <_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 )
484c0: 588f addql #4,%sp 484c2: b4aa 0014 cmpl %a2@(20),%d2
484c6: 670c beqs 484d4 <_Thread_Change_priority+0x34>
_Thread_Set_priority( the_thread, new_priority );
484c8: 2f02 movel %d2,%sp@- 484ca: 2f0a movel %a2,%sp@- 484cc: 4eb9 0004 926c jsr 4926c <_Thread_Set_priority> 484d2: 508f addql #8,%sp
_ISR_Disable( level );
484d4: 203c 0000 0700 movel #1792,%d0 484da: 40c2 movew %sr,%d2 484dc: 8082 orl %d2,%d0 484de: 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;
484e0: 202a 0010 movel %a2@(16),%d0
if ( state != STATES_TRANSIENT ) {
484e4: 7204 moveq #4,%d1 484e6: b280 cmpl %d0,%d1
484e8: 6738 beqs 48522 <_Thread_Change_priority+0x82>
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
484ea: 44c3 movew %d3,%ccr
484ec: 6708 beqs 484f6 <_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);
484ee: 72fb moveq #-5,%d1 484f0: c280 andl %d0,%d1 484f2: 2541 0010 movel %d1,%a2@(16)
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
484f6: 46c2 movew %d2,%sr
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
484f8: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( state ) ) {
484fe: 660a bnes 4850a <_Thread_Change_priority+0x6a>
if ( !_Thread_Is_executing_also_the_heir() &&
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
48500: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 48506: 4e5e unlk %fp 48508: 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 );
4850a: 2d4a 000c movel %a2,%fp@(12) 4850e: 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 );
}
48514: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 4851a: 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 );
4851c: 4ef9 0004 91c0 jmp 491c0 <_Thread_queue_Requeue>
}
return;
}
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) ) {
48522: 44c3 movew %d3,%ccr
48524: 673c beqs 48562 <_Thread_Change_priority+0xc2> <== NEVER TAKEN
* Ready Queue with interrupts off.
*
* FIXME: hard-coded for priority scheduling. Might be ok since this
* function is specific to priority scheduling?
*/
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
48526: 42aa 0010 clrl %a2@(16)
if ( prepend_it )
4852a: 4a04 tstb %d4
4852c: 6778 beqs 485a6 <_Thread_Change_priority+0x106>
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue_first(
Thread_Control *the_thread
)
{
_Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
4852e: 206a 008a moveal %a2@(138),%a0
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
48532: 2668 0004 moveal %a0@(4),%a3 48536: 3028 000a movew %a0@(10),%d0 4853a: 3213 movew %a3@,%d1
_Chain_Prepend_unprotected( the_thread->scheduler.priority->ready_chain,
4853c: 2250 moveal %a0@,%a1 4853e: 8081 orl %d1,%d0 48540: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
48542: 3028 0008 movew %a0@(8),%d0 48546: 3239 0006 0194 movew 60194 <_Priority_Major_bit_map>,%d1
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4854c: 2051 moveal %a1@,%a0 4854e: 8081 orl %d1,%d0
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
48550: 2549 0004 movel %a1,%a2@(4) 48554: 33c0 0006 0194 movew %d0,60194 <_Priority_Major_bit_map>
before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; before_node->previous = the_node;
4855a: 214a 0004 movel %a2,%a0@(4)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
4855e: 228a movel %a2,%a1@
the_node->next = before_node;
48560: 2488 movel %a0,%a2@
_Scheduler_priority_Ready_queue_enqueue_first( the_thread );
else
_Scheduler_priority_Ready_queue_enqueue( the_thread );
}
_ISR_Flash( level );
48562: 203c 0000 0700 movel #1792,%d0 48568: 46c2 movew %d2,%sr 4856a: 8082 orl %d2,%d0 4856c: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule(
Scheduler_Control *the_scheduler
)
{
the_scheduler->Operations.schedule( the_scheduler );
4856e: 4879 0005 fd7e pea 5fd7e <_Scheduler> 48574: 2079 0005 fd82 moveal 5fd82 <_Scheduler+0x4>,%a0 4857a: 4e90 jsr %a0@
* is also the heir thread, and false otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void )
{
return ( _Thread_Executing == _Thread_Heir );
4857c: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0
* We altered the set of thread priorities. So let's figure out
* who is the heir and if we need to switch to them.
*/
_Scheduler_Schedule(&_Scheduler);
if ( !_Thread_Is_executing_also_the_heir() &&
48582: 588f addql #4,%sp 48584: b1f9 0006 018a cmpal 6018a <_Per_CPU_Information+0x10>,%a0
4858a: 670e beqs 4859a <_Thread_Change_priority+0xfa>
4858c: 4a28 0074 tstb %a0@(116)
48590: 6708 beqs 4859a <_Thread_Change_priority+0xfa> <== NEVER TAKEN
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
48592: 7001 moveq #1,%d0 48594: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18>
_ISR_Enable( level );
4859a: 46c2 movew %d2,%sr
}
4859c: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 485a2: 4e5e unlk %fp 485a4: 4e75 rts
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue(
Thread_Control *the_thread
)
{
_Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
485a6: 206a 008a moveal %a2@(138),%a0
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
485aa: 2668 0004 moveal %a0@(4),%a3 485ae: 3028 000a movew %a0@(10),%d0 485b2: 3213 movew %a3@,%d1
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
485b4: 2250 moveal %a0@,%a1 485b6: 8081 orl %d1,%d0 485b8: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
485ba: 3028 0008 movew %a0@(8),%d0 485be: 3239 0006 0194 movew 60194 <_Priority_Major_bit_map>,%d1
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
485c4: 2069 0008 moveal %a1@(8),%a0 485c8: 8081 orl %d1,%d0
the_node->next = tail;
tail->previous = the_node;
485ca: 234a 0008 movel %a2,%a1@(8)
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
485ce: 5889 addql #4,%a1 485d0: 33c0 0006 0194 movew %d0,60194 <_Priority_Major_bit_map>
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
485d6: 2548 0004 movel %a0,%a2@(4)
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
485da: 2489 movel %a1,%a2@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
485dc: 208a movel %a2,%a0@ 485de: 6082 bras 48562 <_Thread_Change_priority+0xc2>
000485e0 <_Thread_Clear_state>:
)
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
485e0: 203c 0000 0700 movel #1792,%d0
void _Thread_Clear_state(
Thread_Control *the_thread,
States_Control state
)
{
485e6: 4e56 0000 linkw %fp,#0 485ea: 206e 0008 moveal %fp@(8),%a0 485ee: 2f03 movel %d3,%sp@- 485f0: 2f02 movel %d2,%sp@- 485f2: 242e 000c movel %fp@(12),%d2
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
485f6: 40c3 movew %sr,%d3 485f8: 8083 orl %d3,%d0 485fa: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
485fc: 2228 0010 movel %a0@(16),%d1
if ( current_state & state ) {
48600: 2002 movel %d2,%d0 48602: c081 andl %d1,%d0
48604: 670c beqs 48612 <_Thread_Clear_state+0x32> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
48606: 2002 movel %d2,%d0 48608: 4680 notl %d0 4860a: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear( state, current_state );
4860c: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
48610: 670e beqs 48620 <_Thread_Clear_state+0x40> <== ALWAYS TAKEN
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
48612: 46c3 movew %d3,%sr <== NOT EXECUTED
}
48614: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48618: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4861c: 4e5e unlk %fp <== NOT EXECUTED 4861e: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_Unblock(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.unblock( the_scheduler, the_thread );
48620: 2f08 movel %a0,%sp@- 48622: 4879 0005 fd7e pea 5fd7e <_Scheduler> 48628: 2079 0005 fd8e moveal 5fd8e <_Scheduler+0x10>,%a0 4862e: 4e90 jsr %a0@ 48630: 508f addql #8,%sp
if ( _States_Is_ready( current_state ) ) {
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
48632: 46c3 movew %d3,%sr
}
48634: 242e fff8 movel %fp@(-8),%d2 48638: 262e fffc movel %fp@(-4),%d3
4863c: 4e5e unlk %fp <== NOT EXECUTED
00048640 <_Thread_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
48640: 4280 clrl %d0
void _Thread_Close(
Objects_Information *information,
Thread_Control *the_thread
)
{
48642: 4e56 0000 linkw %fp,#0 48646: 2f0b movel %a3,%sp@- 48648: 266e 0008 moveal %fp@(8),%a3 4864c: 2f0a movel %a2,%sp@- 4864e: 246e 000c moveal %fp@(12),%a2
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48652: 206b 0018 moveal %a3@(24),%a0
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
48656: 302a 000a movew %a2@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4865a: 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;
4865e: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0 48664: 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 );
48666: 2f0a movel %a2,%sp@- 48668: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level> 4866e: 4eb9 0004 9808 jsr 49808 <_User_extensions_Thread_delete>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
48674: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0 4867a: 5280 addql #1,%d0 4867c: 23c0 0005 fcf8 movel %d0,5fcf8 <_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 );
48682: 2f0a movel %a2,%sp@- 48684: 2f0b movel %a3,%sp@- 48686: 4eb9 0004 79b4 jsr 479b4 <_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 );
4868c: 4878 0001 pea 1 <ADD> 48690: 2f0a movel %a2,%sp@- 48692: 4eb9 0004 9294 jsr 49294 <_Thread_Set_state>
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
48698: 2f0a movel %a2,%sp@- 4869a: 4eb9 0004 90bc jsr 490bc <_Thread_queue_Extract_with_proxy> 486a0: 4fef 0018 lea %sp@(24),%sp 486a4: 4a00 tstb %d0
486a6: 6608 bnes 486b0 <_Thread_Close+0x70> <== NEVER TAKEN
if ( _Watchdog_Is_active( &the_thread->Timer ) )
486a8: 7002 moveq #2,%d0 486aa: b0aa 0050 cmpl %a2@(80),%d0
486ae: 6768 beqs 48718 <_Thread_Close+0xd8> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Scheduler_Thread_scheduler_free(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
return the_scheduler->Operations.scheduler_free( the_scheduler, the_thread );
486b0: 2f0a movel %a2,%sp@- 486b2: 4879 0005 fd7e pea 5fd7e <_Scheduler> 486b8: 2079 0005 fd96 moveal 5fd96 <_Scheduler+0x18>,%a0 486be: 4e90 jsr %a0@
/* * The thread might have been FP. So deal with that. */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( _Thread_Is_allocated_fp( the_thread ) )
486c0: 508f addql #8,%sp 486c2: b5f9 0005 fd7a cmpal 5fd7a <_Thread_Allocated_fp>,%a2
486c8: 6746 beqs 48710 <_Thread_Close+0xd0> <== NEVER TAKEN
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
if ( the_thread->Start.fp_context )
486ca: 202a 00ba movel %a2@(186),%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;
486ce: 42aa 00f6 clrl %a2@(246)
if ( the_thread->Start.fp_context )
486d2: 4a80 tstl %d0
486d4: 670a beqs 486e0 <_Thread_Close+0xa0> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->Start.fp_context );
486d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 486d8: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 486de: 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 );
486e0: 2f0a movel %a2,%sp@- 486e2: 4eb9 0004 93cc jsr 493cc <_Thread_Stack_Free>
the_thread->Start.stack = NULL;
if ( the_thread->extensions )
486e8: 202a 0106 movel %a2@(262),%d0 486ec: 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;
486ee: 42aa 00be clrl %a2@(190)
if ( the_thread->extensions )
486f2: 4a80 tstl %d0
486f4: 670a beqs 48700 <_Thread_Close+0xc0> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->extensions );
486f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 486f8: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 486fe: 588f addql #4,%sp <== NOT EXECUTED
the_thread->extensions = NULL;
48700: 42aa 0106 clrl %a2@(262)
}
48704: 246e fff8 moveal %fp@(-8),%a2 48708: 266e fffc moveal %fp@(-4),%a3 4870c: 4e5e unlk %fp 4870e: 4e75 rts
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
{
_Thread_Allocated_fp = NULL;
48710: 42b9 0005 fd7a clrl 5fd7a <_Thread_Allocated_fp> <== NOT EXECUTED 48716: 60b2 bras 486ca <_Thread_Close+0x8a> <== 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 );
48718: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4871c: 4eb9 0004 9a1c jsr 49a1c <_Watchdog_Remove> <== NOT EXECUTED 48722: 588f addql #4,%sp <== NOT EXECUTED 48724: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48726: 4879 0005 fd7e pea 5fd7e <_Scheduler> <== NOT EXECUTED 4872c: 2079 0005 fd96 moveal 5fd96 <_Scheduler+0x18>,%a0 <== NOT EXECUTED 48732: 4e90 jsr %a0@ <== 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 ) )
48734: 508f addql #8,%sp <== NOT EXECUTED 48736: b5f9 0005 fd7a cmpal 5fd7a <_Thread_Allocated_fp>,%a2 <== NOT EXECUTED 4873c: 668c bnes 486ca <_Thread_Close+0x8a> <== NOT EXECUTED 4873e: 60d0 bras 48710 <_Thread_Close+0xd0> <== NOT EXECUTED
000487f0 <_Thread_Delay_ended>:
void _Thread_Delay_ended(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
487f0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
487f4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 487f8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 487fc: 4eb9 0004 89bc jsr 489bc <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48802: 508f addql #8,%sp <== NOT EXECUTED 48804: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48808: 661e bnes 48828 <_Thread_Delay_ended+0x38> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_Clear_state(
4880a: 2f3c 1000 0018 movel #268435480,%sp@- <== NOT EXECUTED 48810: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48812: 4eb9 0004 85e0 jsr 485e0 <_Thread_Clear_state> <== NOT EXECUTED 48818: 508f addql #8,%sp <== NOT EXECUTED 4881a: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48820: 5380 subql #1,%d0 <== NOT EXECUTED 48822: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
| STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Thread_Unnest_dispatch();
break;
}
}
48828: 4e5e unlk %fp <== NOT EXECUTED
0004882c <_Thread_Dispatch>:
* dispatch thread
* no dispatch thread
*/
void _Thread_Dispatch( void )
{
4882c: 4e56 ffc8 linkw %fp,#-56 48830: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
48834: 283c 0000 0700 movel #1792,%d4 4883a: 2004 movel %d4,%d0
{
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
4883c: 2479 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
48842: 40c1 movew %sr,%d1 48844: 8081 orl %d1,%d0 48846: 46c0 movew %d0,%sr
while ( _Thread_Dispatch_necessary == true ) {
48848: 1039 0006 0192 moveb 60192 <_Per_CPU_Information+0x18>,%d0 4884e: 6700 0120 beqw 48970 <_Thread_Dispatch+0x144>
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
48852: 7001 moveq #1,%d0 48854: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level>
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
4885a: 2679 0006 018a moveal 6018a <_Per_CPU_Information+0x10>,%a3
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
48860: 4200 clrb %d0
_Thread_Executing = heir;
48862: 23cb 0006 0186 movel %a3,60186 <_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;
48868: 13c0 0006 0192 moveb %d0,60192 <_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 )
4886e: b7ca cmpal %a2,%a3 48870: 6700 00fe beqw 48970 <_Thread_Dispatch+0x144> 48874: 260e movel %fp,%d3 48876: 240e movel %fp,%d2 48878: 5183 subql #8,%d3 4887a: 2e3c 0004 c5e4 movel #312804,%d7 48880: 0682 ffff fff0 addil #-16,%d2 48886: 2c3c 0004 95cc movel #300492,%d6 4888c: 2a3c 0004 9584 movel #300420,%d5 48892: 4bf9 0004 9894 lea 49894 <_User_extensions_Thread_switch>,%a5 48898: 49f9 0004 9c08 lea 49c08 <_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 )
4889e: 7001 moveq #1,%d0 488a0: b0ab 007a cmpl %a3@(122),%d0 488a4: 6700 00e2 beqw 48988 <_Thread_Dispatch+0x15c>
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
_ISR_Enable( level );
488a8: 46c1 movew %d1,%sr
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
488aa: 2f03 movel %d3,%sp@- 488ac: 2047 moveal %d7,%a0 488ae: 4e90 jsr %a0@
_Timestamp_Subtract(
488b0: 2046 moveal %d6,%a0 488b2: 2f02 movel %d2,%sp@- 488b4: 2f03 movel %d3,%sp@- 488b6: 4879 0005 fdc4 pea 5fdc4 <_Thread_Time_of_last_context_switch> 488bc: 4e90 jsr %a0@
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
488be: 2045 moveal %d5,%a0 488c0: 2f02 movel %d2,%sp@- 488c2: 486a 0082 pea %a2@(130) 488c6: 4e90 jsr %a0@
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
488c8: 2079 0005 fd9e moveal 5fd9e <_Thread_libc_reent>,%a0 488ce: 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;
488d2: 202e fff8 movel %fp@(-8),%d0 488d6: 222e fffc movel %fp@(-4),%d1 488da: 23c0 0005 fdc4 movel %d0,5fdc4 <_Thread_Time_of_last_context_switch> 488e0: 23c1 0005 fdc8 movel %d1,5fdc8 <_Thread_Time_of_last_context_switch+0x4>
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
488e6: 4a88 tstl %a0
488e8: 6708 beqs 488f2 <_Thread_Dispatch+0xc6> <== NEVER TAKEN
executing->libc_reent = *_Thread_libc_reent;
488ea: 2550 00fa movel %a0@,%a2@(250)
*_Thread_libc_reent = heir->libc_reent;
488ee: 20ab 00fa movel %a3@(250),%a0@
}
_User_extensions_Thread_switch( executing, heir );
488f2: 2f0b movel %a3,%sp@- 488f4: 2f0a movel %a2,%sp@- 488f6: 4e95 jsr %a5@
if ( executing->fp_context != NULL )
_Context_Save_fp( &executing->fp_context );
#endif
#endif
_Context_Switch( &executing->Registers, &heir->Registers );
488f8: 486b 00c2 pea %a3@(194) 488fc: 486a 00c2 pea %a2@(194) 48900: 4e94 jsr %a4@
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
48902: 4fef 0010 lea %sp@(16),%sp 48906: 4aaa 00f6 tstl %a2@(246)
4890a: 672c beqs 48938 <_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 );
4890c: 2079 0005 fd7a moveal 5fd7a <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED 48912: b1ca cmpal %a2,%a0 <== NOT EXECUTED 48914: 6722 beqs 48938 <_Thread_Dispatch+0x10c> <== NOT EXECUTED
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
48916: 4a88 tstl %a0 <== NOT EXECUTED 48918: 670c beqs 48926 <_Thread_Dispatch+0xfa> <== NOT EXECUTED
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4891a: 4868 00f6 pea %a0@(246) <== NOT EXECUTED 4891e: 4eb9 0004 9d2e jsr 49d2e <_CPU_Context_save_fp> <== NOT EXECUTED 48924: 588f addql #4,%sp <== NOT EXECUTED
_Context_Restore_fp( &executing->fp_context );
48926: 486a 00f6 pea %a2@(246) <== NOT EXECUTED 4892a: 4eb9 0004 9d66 jsr 49d66 <_CPU_Context_restore_fp> <== NOT EXECUTED
_Thread_Allocated_fp = executing;
48930: 588f addql #4,%sp <== NOT EXECUTED 48932: 23ca 0005 fd7a movel %a2,5fd7a <_Thread_Allocated_fp> <== NOT EXECUTED
if ( executing->fp_context != NULL )
_Context_Restore_fp( &executing->fp_context );
#endif
#endif
executing = _Thread_Executing;
48938: 2479 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
4893e: 2004 movel %d4,%d0 48940: 40c1 movew %sr,%d1 48942: 8081 orl %d1,%d0 48944: 46c0 movew %d0,%sr
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
48946: 1039 0006 0192 moveb 60192 <_Per_CPU_Information+0x18>,%d0
4894c: 6722 beqs 48970 <_Thread_Dispatch+0x144> <== ALWAYS TAKEN
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
4894e: 7001 moveq #1,%d0 <== NOT EXECUTED 48950: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
48956: 2679 0006 018a moveal 6018a <_Per_CPU_Information+0x10>,%a3<== NOT EXECUTED
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
4895c: 4200 clrb %d0 <== NOT EXECUTED
_Thread_Executing = heir;
4895e: 23cb 0006 0186 movel %a3,60186 <_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;
48964: 13c0 0006 0192 moveb %d0,60192 <_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 )
4896a: b5cb cmpal %a3,%a2 <== NOT EXECUTED 4896c: 6600 ff30 bnew 4889e <_Thread_Dispatch+0x72> <== NOT EXECUTED
_ISR_Disable( level );
}
post_switch:
_Thread_Dispatch_disable_level = 0;
48970: 42b9 0005 fcf8 clrl 5fcf8 <_Thread_Dispatch_disable_level>
_ISR_Enable( level );
48976: 46c1 movew %d1,%sr
_API_extensions_Run_postswitch();
48978: 4eb9 0004 6dc2 jsr 46dc2 <_API_extensions_Run_postswitch>
}
4897e: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 48984: 4e5e unlk %fp 48986: 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;
48988: 41f9 0005 fcb0 lea 5fcb0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 4898e: 2750 0076 movel %a0@,%a3@(118) <== NOT EXECUTED 48992: 6000 ff14 braw 488a8 <_Thread_Dispatch+0x7c> <== NOT EXECUTED
000489bc <_Thread_Get>:
*/
Thread_Control *_Thread_Get (
Objects_Id id,
Objects_Locations *location
)
{
489bc: 4e56 0000 linkw %fp,#0 489c0: 202e 0008 movel %fp@(8),%d0 489c4: 2f03 movel %d3,%sp@- 489c6: 206e 000c moveal %fp@(12),%a0 489ca: 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 ) ) {
489cc: 4a80 tstl %d0
489ce: 6762 beqs 48a32 <_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);
489d0: 7418 moveq #24,%d2 489d2: 2200 movel %d0,%d1 489d4: e4a9 lsrl %d2,%d1 489d6: 7607 moveq #7,%d3
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
489d8: 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);
489dc: c283 andl %d3,%d1
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
489de: 2241 moveal %d1,%a1 489e0: 5389 subql #1,%a1 489e2: b489 cmpl %a1,%d2
489e4: 653a bcss 48a20 <_Thread_Get+0x64> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
489e6: 761b moveq #27,%d3 489e8: 2400 movel %d0,%d2 489ea: e6aa lsrl %d3,%d2
*location = OBJECTS_ERROR;
goto done;
}
the_class = _Objects_Get_class( id );
if ( the_class != 1 ) { /* threads are always first class :) */
489ec: 163c 0001 moveb #1,%d3 489f0: b682 cmpl %d2,%d3
489f2: 662c bnes 48a20 <_Thread_Get+0x64> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
api_information = _Objects_Information_table[ the_api ];
489f4: 43f9 0005 fcb4 lea 5fcb4 <_Objects_Information_table>,%a1
*location = OBJECTS_ERROR;
goto done;
}
#endif
information = api_information[ the_class ];
489fa: 2271 1c00 moveal %a1@(00000000,%d1:l:4),%a1 489fe: 2229 0004 movel %a1@(4),%d1
if ( !information ) {
48a02: 671c beqs 48a20 <_Thread_Get+0x64> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
48a04: 2f08 movel %a0,%sp@- 48a06: 2f00 movel %d0,%sp@- 48a08: 2f01 movel %d1,%sp@- 48a0a: 4eb9 0004 7de4 jsr 47de4 <_Objects_Get>
done:
return tp;
}
48a10: 242e fff8 movel %fp@(-8),%d2
if ( !information ) {
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
48a14: 4fef 000c lea %sp@(12),%sp
done:
return tp;
}
48a18: 262e fffc movel %fp@(-4),%d3 48a1c: 4e5e unlk %fp 48a1e: 4e75 rts
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
48a20: 7001 moveq #1,%d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
48a22: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48a26: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 48a2a: 4e5e unlk %fp <== NOT EXECUTED
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
48a2c: 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;
48a2e: 4280 clrl %d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
48a30: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
48a32: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0 48a38: 5280 addql #1,%d0 48a3a: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level> 48a40: 242e fff8 movel %fp@(-8),%d2 48a44: 262e fffc movel %fp@(-4),%d3 48a48: 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;
48a4a: 2039 0006 0186 movel 60186 <_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;
48a50: 4290 clrl %a0@ <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
0004e710 <_Thread_Handler>:
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4e710: 4e56 0000 linkw %fp,#0 4e714: 2f0a movel %a2,%sp@-
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
static char doneConstructors;
char doneCons;
#endif
executing = _Thread_Executing;
4e716: 2479 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a2
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4e71c: 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;
4e71e: 222a 00a8 movel %a2@(168),%d1
_ISR_Set_level(level);
4e722: 40c0 movew %sr,%d0 4e724: e189 lsll #8,%d1 4e726: 0280 0000 f8ff andil #63743,%d0 4e72c: 8081 orl %d1,%d0 4e72e: 46c0 movew %d0,%sr
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
doneConstructors = 1;
4e730: 7001 moveq #1,%d0
level = executing->Start.isr_level;
_ISR_Set_level(level);
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
4e732: 1439 0005 f4b8 moveb 5f4b8 <doneConstructors.3366>,%d2
doneConstructors = 1;
4e738: 13c0 0005 f4b8 moveb %d0,5f4b8 <doneConstructors.3366>
#endif
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4e73e: 4aaa 00f6 tstl %a2@(246)
4e742: 6720 beqs 4e764 <_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 );
4e744: 2079 0005 fd7a moveal 5fd7a <_Thread_Allocated_fp>,%a0 4e74a: b1ca cmpal %a2,%a0
4e74c: 6716 beqs 4e764 <_Thread_Handler+0x54> <== NEVER TAKEN
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
4e74e: 4a88 tstl %a0
4e750: 670c beqs 4e75e <_Thread_Handler+0x4e> <== ALWAYS TAKEN
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4e752: 4868 00f6 pea %a0@(246) <== NOT EXECUTED 4e756: 4eb9 0004 9d2e jsr 49d2e <_CPU_Context_save_fp> <== NOT EXECUTED 4e75c: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Allocated_fp = executing;
4e75e: 23ca 0005 fd7a movel %a2,5fd7a <_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 );
4e764: 2f0a movel %a2,%sp@- 4e766: 4eb9 0004 96e0 jsr 496e0 <_User_extensions_Thread_begin>
/*
* At this point, the dispatch disable level BETTER be 1.
*/
_Thread_Enable_dispatch();
4e76c: 4eb9 0004 8996 jsr 48996 <_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) */ {
4e772: 588f addql #4,%sp 4e774: 4a02 tstb %d2
4e776: 6724 beqs 4e79c <_Thread_Handler+0x8c>
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4e778: 202a 0092 movel %a2@(146),%d0
4e77c: 672a beqs 4e7a8 <_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 ) {
4e77e: 7201 moveq #1,%d1 4e780: b280 cmpl %d0,%d1
4e782: 674c beqs 4e7d0 <_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 );
4e784: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e786: 4eb9 0004 971e jsr 4971e <_User_extensions_Thread_exitted> <== NOT EXECUTED
_Internal_error_Occurred(
4e78c: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 4e790: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4e794: 42a7 clrl %sp@- <== NOT EXECUTED 4e796: 4eb9 0004 7868 jsr 47868 <_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 ();
4e79c: 4eb9 0005 c8f4 jsr 5c8f4 <_init>
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4e7a2: 202a 0092 movel %a2@(146),%d0
4e7a6: 66d6 bnes 4e77e <_Thread_Handler+0x6e>
executing->Wait.return_argument =
(*(Thread_Entry_numeric) executing->Start.entry_point)(
4e7a8: 2f2a 009a movel %a2@(154),%sp@- 4e7ac: 206a 008e moveal %a2@(142),%a0 4e7b0: 4e90 jsr %a0@
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
4e7b2: 588f addql #4,%sp 4e7b4: 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 );
4e7b8: 2f0a movel %a2,%sp@- 4e7ba: 4eb9 0004 971e jsr 4971e <_User_extensions_Thread_exitted>
_Internal_error_Occurred(
4e7c0: 4878 0005 pea 5 <COMPARE> 4e7c4: 4878 0001 pea 1 <ADD> 4e7c8: 42a7 clrl %sp@- 4e7ca: 4eb9 0004 7868 jsr 47868 <_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)(
4e7d0: 2f2a 0096 movel %a2@(150),%sp@- 4e7d4: 206a 008e moveal %a2@(142),%a0 4e7d8: 4e90 jsr %a0@
executing->Start.numeric_argument
);
}
#if defined(RTEMS_POSIX_API)
else if ( executing->Start.prototype == THREAD_START_POINTER ) {
executing->Wait.return_argument =
4e7da: 588f addql #4,%sp <== NOT EXECUTED 4e7dc: 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 );
4e7e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e7e2: 4eb9 0004 971e jsr 4971e <_User_extensions_Thread_exitted> <== NOT EXECUTED
_Internal_error_Occurred(
4e7e8: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED 4e7ec: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4e7f0: 42a7 clrl %sp@- <== NOT EXECUTED 4e7f2: 4eb9 0004 7868 jsr 47868 <_Internal_error_Occurred> <== NOT EXECUTED
00048c6c <_Thread_Handler_initialization>:
*
* Output parameters: NONE
*/
void _Thread_Handler_initialization(void)
{
48c6c: 4e56 0000 linkw %fp,#0
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
== (!Configuration.stack_free_hook) ) )
48c70: 4ab9 0005 e46c tstl 5e46c <Configuration+0x28> 48c76: 57c1 seq %d1
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48c78: 4ab9 0005 e468 tstl 5e468 <Configuration+0x24> 48c7e: 57c0 seq %d0
== (!Configuration.stack_free_hook) ) )
48c80: 4481 negl %d1
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48c82: 4480 negl %d0 48c84: b380 eorl %d1,%d0
uint32_t maximum_extensions;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t maximum_proxies;
#endif
ticks_per_timeslice = Configuration.ticks_per_timeslice;
48c86: 2239 0005 e454 movel 5e454 <Configuration+0x10>,%d1
maximum_extensions = Configuration.maximum_extensions;
48c8c: 2079 0005 e44c moveal 5e44c <Configuration+0x8>,%a0
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48c92: 4a00 tstb %d0
48c94: 6650 bnes 48ce6 <_Thread_Handler_initialization+0x7a>
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48c96: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Thread_Dispatch_necessary = false;
48c9a: 4200 clrb %d0
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48c9c: 42a7 clrl %sp@- 48c9e: 4878 010e pea 10e <DBL_MANT_DIG+0xd9> 48ca2: 4878 0001 pea 1 <ADD> 48ca6: 4878 0001 pea 1 <ADD> 48caa: 4878 0001 pea 1 <ADD> 48cae: 4879 0005 fe2a pea 5fe2a <_Thread_Internal_information>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Thread_Dispatch_necessary = false;
48cb4: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18>
_Thread_Executing = NULL;
48cba: 42b9 0006 0186 clrl 60186 <_Per_CPU_Information+0xc>
_Thread_Heir = NULL;
48cc0: 42b9 0006 018a clrl 6018a <_Per_CPU_Information+0x10>
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) _Thread_Allocated_fp = NULL;
48cc6: 42b9 0005 fd7a clrl 5fd7a <_Thread_Allocated_fp>
#endif
_Thread_Maximum_extensions = maximum_extensions;
48ccc: 23c8 0005 fdaa movel %a0,5fdaa <_Thread_Maximum_extensions>
_Thread_Ticks_per_timeslice = ticks_per_timeslice;
48cd2: 23c1 0005 fcb0 movel %d1,5fcb0 <_Thread_Ticks_per_timeslice>
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48cd8: 4eb9 0004 7e50 jsr 47e50 <_Objects_Initialize_information> 48cde: 4fef 001c lea %sp@(28),%sp
false, /* true if this is a global object class */
NULL /* Proxy extraction support callout */
#endif
);
}
48ce2: 4e5e unlk %fp 48ce4: 4e75 rts
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
== (!Configuration.stack_free_hook) ) )
_Internal_error_Occurred(
48ce6: 4878 000e pea e <OPER1+0x2> 48cea: 4878 0001 pea 1 <ADD> 48cee: 42a7 clrl %sp@- 48cf0: 4eb9 0004 7868 jsr 47868 <_Internal_error_Occurred>
...
00048a54 <_Thread_Initialize>:
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
48a54: 4e56 ffe4 linkw %fp,#-28 48a58: 202e 0010 movel %fp@(16),%d0 48a5c: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ 48a60: 246e 000c moveal %fp@(12),%a2 48a64: 282e 0014 movel %fp@(20),%d4 48a68: 242e 001c movel %fp@(28),%d2 48a6c: 262e 0024 movel %fp@(36),%d3 48a70: 1a2e 001b moveb %fp@(27),%d5 48a74: 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;
48a78: 42aa 00fe clrl %a2@(254) 48a7c: 42aa 0102 clrl %a2@(258)
extensions_area = NULL;
the_thread->libc_reent = NULL;
48a80: 42aa 00fa clrl %a2@(250)
if ( !actual_stack_size || actual_stack_size < stack_size )
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
#else
if ( !stack_area ) {
48a84: 4a80 tstl %d0 48a86: 6700 01ae beqw 48c36 <_Thread_Initialize+0x1e2>
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;
48a8a: 2204 movel %d4,%d1 <== NOT EXECUTED 48a8c: 4204 clrb %d4 <== NOT EXECUTED 48a8e: 1544 00b0 moveb %d4,%a2@(176) <== NOT EXECUTED
Stack_Control *the_stack,
void *starting_address,
size_t size
)
{
the_stack->area = starting_address;
48a92: 2540 00b6 movel %d0,%a2@(182)
the_stack->size = size;
48a96: 2541 00b2 movel %d1,%a2@(178)
/*
* Allocate the floating point area for this thread
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( is_fp ) {
48a9a: 4a05 tstb %d5 48a9c: 6600 013c bnew 48bda <_Thread_Initialize+0x186> 48aa0: 4280 clrl %d0
extensions_area = NULL;
the_thread->libc_reent = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
fp_area = NULL;
48aa2: 4284 clrl %d4
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
48aa4: 2239 0005 fdaa movel 5fdaa <_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;
48aaa: 2540 00f6 movel %d0,%a2@(246)
the_thread->Start.fp_context = fp_area;
48aae: 2540 00ba movel %d0,%a2@(186)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48ab2: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
48ab6: 42aa 0064 clrl %a2@(100)
the_watchdog->id = id;
48aba: 42aa 0068 clrl %a2@(104)
the_watchdog->user_data = user_data;
48abe: 42aa 006c clrl %a2@(108)
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
48ac2: 4a81 tstl %d1 48ac4: 6600 012e bnew 48bf4 <_Thread_Initialize+0x1a0>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48ac8: 42aa 0106 clrl %a2@(262)
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
48acc: 97cb subal %a3,%a3
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
the_thread->Start.budget_algorithm = budget_algorithm;
48ace: 2543 00a0 movel %d3,%a2@(160)
the_thread->Start.budget_callout = budget_callout;
switch ( budget_algorithm ) {
48ad2: 7002 moveq #2,%d0
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
48ad4: 1546 009e moveb %d6,%a2@(158)
the_thread->Start.budget_algorithm = budget_algorithm; the_thread->Start.budget_callout = budget_callout;
48ad8: 256e 0028 00a4 movel %fp@(40),%a2@(164)
switch ( budget_algorithm ) {
48ade: b083 cmpl %d3,%d0 48ae0: 6700 00de beqw 48bc0 <_Thread_Initialize+0x16c>
RTEMS_INLINE_ROUTINE void* _Scheduler_Thread_scheduler_allocate(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
return
48ae4: 2f0a movel %a2,%sp@- 48ae6: 4879 0005 fd7e pea 5fd7e <_Scheduler>
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
48aec: 7001 moveq #1,%d0
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
break;
#endif
}
the_thread->Start.isr_level = isr_level;
48aee: 256e 002c 00a8 movel %fp@(44),%a2@(168) 48af4: 2079 0005 fd92 moveal 5fd92 <_Scheduler+0x14>,%a0
the_thread->current_state = STATES_DORMANT;
48afa: 2540 0010 movel %d0,%a2@(16)
the_thread->Wait.queue = NULL;
48afe: 42aa 0044 clrl %a2@(68)
the_thread->resource_count = 0;
48b02: 42aa 001c clrl %a2@(28)
the_thread->real_priority = priority;
48b06: 2542 0018 movel %d2,%a2@(24)
the_thread->Start.initial_priority = priority;
48b0a: 2542 00ac movel %d2,%a2@(172) 48b0e: 4e90 jsr %a0@
sched =_Scheduler_Thread_scheduler_allocate( &_Scheduler, the_thread ); if ( !sched )
48b10: 508f addql #8,%sp 48b12: 2600 movel %d0,%d3
48b14: 673a beqs 48b50 <_Thread_Initialize+0xfc> <== NEVER TAKEN
goto failed;
_Thread_Set_priority( the_thread, priority );
48b16: 2f02 movel %d2,%sp@- 48b18: 2f0a movel %a2,%sp@- 48b1a: 4eb9 0004 926c jsr 4926c <_Thread_Set_priority>
_Thread_Stack_Free( the_thread );
return false;
}
48b20: 206e 0008 moveal %fp@(8),%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
48b24: 4280 clrl %d0 48b26: 2068 0018 moveal %a0@(24),%a0 48b2a: 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 );
48b2e: 42aa 0082 clrl %a2@(130) 48b32: 42aa 0086 clrl %a2@(134)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48b36: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
48b3a: 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 );
48b40: 2f0a movel %a2,%sp@- 48b42: 4eb9 0004 97b0 jsr 497b0 <_User_extensions_Thread_create>
if ( extension_status )
48b48: 4fef 000c lea %sp@(12),%sp 48b4c: 4a00 tstb %d0
48b4e: 667e bnes 48bce <_Thread_Initialize+0x17a> <== ALWAYS TAKEN
return true;
failed:
if ( the_thread->libc_reent )
48b50: 202a 00fa movel %a2@(250),%d0 <== NOT EXECUTED 48b54: 670a beqs 48b60 <_Thread_Initialize+0x10c> <== NOT EXECUTED
_Workspace_Free( the_thread->libc_reent );
48b56: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48b58: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 48b5e: 588f addql #4,%sp <== NOT EXECUTED
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
if ( the_thread->API_Extensions[i] )
48b60: 202a 00fe movel %a2@(254),%d0 <== NOT EXECUTED 48b64: 670a beqs 48b70 <_Thread_Initialize+0x11c> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
48b66: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48b68: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 48b6e: 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] )
48b70: 202a 0102 movel %a2@(258),%d0 <== NOT EXECUTED 48b74: 670a beqs 48b80 <_Thread_Initialize+0x12c> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
48b76: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48b78: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 48b7e: 588f addql #4,%sp <== NOT EXECUTED
if ( extensions_area )
48b80: 4a8b tstl %a3 <== NOT EXECUTED 48b82: 670a beqs 48b8e <_Thread_Initialize+0x13a> <== NOT EXECUTED
(void) _Workspace_Free( extensions_area );
48b84: 2f0b movel %a3,%sp@- <== NOT EXECUTED 48b86: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 48b8c: 588f addql #4,%sp <== NOT EXECUTED
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( fp_area )
48b8e: 4a84 tstl %d4 <== NOT EXECUTED 48b90: 670a beqs 48b9c <_Thread_Initialize+0x148> <== NOT EXECUTED
(void) _Workspace_Free( fp_area );
48b92: 2f04 movel %d4,%sp@- <== NOT EXECUTED 48b94: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 48b9a: 588f addql #4,%sp <== NOT EXECUTED
#endif
if ( sched )
48b9c: 4a83 tstl %d3 <== NOT EXECUTED 48b9e: 670a beqs 48baa <_Thread_Initialize+0x156> <== NOT EXECUTED
(void) _Workspace_Free( sched );
48ba0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48ba2: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> <== NOT EXECUTED 48ba8: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Stack_Free( the_thread );
48baa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48bac: 4eb9 0004 93cc jsr 493cc <_Thread_Stack_Free> <== NOT EXECUTED
return false;
48bb2: 588f addql #4,%sp <== NOT EXECUTED
}
48bb4: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
if ( sched )
(void) _Workspace_Free( sched );
_Thread_Stack_Free( the_thread );
return false;
48bba: 4200 clrb %d0 <== NOT EXECUTED
}
48bbc: 4e5e unlk %fp <== NOT EXECUTED 48bbe: 4e75 rts <== 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;
48bc0: 41f9 0005 fcb0 lea 5fcb0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 48bc6: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
break;
48bca: 6000 ff18 braw 48ae4 <_Thread_Initialize+0x90> <== NOT EXECUTED
_Thread_Stack_Free( the_thread );
return false;
}
48bce: 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;
48bd4: 7001 moveq #1,%d0
_Thread_Stack_Free( the_thread );
return false;
}
48bd6: 4e5e unlk %fp 48bd8: 4e75 rts
/*
* 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 );
48bda: 4878 001c pea 1c <OPER2+0x8> 48bde: 4eb9 0004 9b9e jsr 49b9e <_Workspace_Allocate>
if ( !fp_area )
48be4: 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 );
48be6: 2800 movel %d0,%d4
if ( !fp_area )
48be8: 6600 feba bnew 48aa4 <_Thread_Initialize+0x50>
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
48bec: 97cb subal %a3,%a3 <== NOT EXECUTED
size_t actual_stack_size = 0;
void *stack = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
void *fp_area;
#endif
void *sched = NULL;
48bee: 4283 clrl %d3 <== NOT EXECUTED 48bf0: 6000 ff5e braw 48b50 <_Thread_Initialize+0xfc> <== NOT EXECUTED
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
48bf4: e589 lsll #2,%d1 48bf6: 2041 moveal %d1,%a0 48bf8: 4868 0004 pea %a0@(4) 48bfc: 4eb9 0004 9b9e jsr 49b9e <_Workspace_Allocate>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
48c02: 588f addql #4,%sp
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
48c04: 2640 moveal %d0,%a3
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
48c06: 4a80 tstl %d0
48c08: 675a beqs 48c64 <_Thread_Initialize+0x210> <== NEVER TAKEN
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48c0a: 2079 0005 fdaa moveal 5fdaa <_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++ )
48c10: 4281 clrl %d1
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48c12: 4280 clrl %d0 48c14: 254b 0106 movel %a3,%a2@(262)
* 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;
48c18: 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++ )
48c1c: 5280 addql #1,%d0 48c1e: 2200 movel %d0,%d1 48c20: b088 cmpl %a0,%d0 48c22: 6200 feaa bhiw 48ace <_Thread_Initialize+0x7a>
the_thread->extensions[i] = NULL;
48c26: 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++ )
48c2a: 5280 addql #1,%d0 48c2c: 2200 movel %d0,%d1 48c2e: b088 cmpl %a0,%d0
48c30: 63e6 blss 48c18 <_Thread_Initialize+0x1c4>
48c32: 6000 fe9a braw 48ace <_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 );
48c36: 2f04 movel %d4,%sp@- 48c38: 2f0a movel %a2,%sp@- 48c3a: 4eb9 0004 9368 jsr 49368 <_Thread_Stack_Allocate>
if ( !actual_stack_size || actual_stack_size < stack_size )
48c40: 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 );
48c42: 2200 movel %d0,%d1
if ( !actual_stack_size || actual_stack_size < stack_size )
48c44: 6712 beqs 48c58 <_Thread_Initialize+0x204>
48c46: b084 cmpl %d4,%d0
48c48: 650e bcss 48c58 <_Thread_Initialize+0x204> <== NEVER TAKEN
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
48c4a: 202a 00be movel %a2@(190),%d0
the_thread->Start.core_allocated_stack = true;
48c4e: 7801 moveq #1,%d4 48c50: 1544 00b0 moveb %d4,%a2@(176) 48c54: 6000 fe3c braw 48a92 <_Thread_Initialize+0x3e>
_Thread_Stack_Free( the_thread );
return false;
}
48c58: 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 */
48c5e: 4200 clrb %d0
_Thread_Stack_Free( the_thread );
return false;
}
48c60: 4e5e unlk %fp 48c62: 4e75 rts
size_t actual_stack_size = 0;
void *stack = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
void *fp_area;
#endif
void *sched = NULL;
48c64: 4283 clrl %d3 <== NOT EXECUTED 48c66: 6000 fee8 braw 48b50 <_Thread_Initialize+0xfc> <== NOT EXECUTED
...
0004da98 <_Thread_Reset>:
void _Thread_Reset(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4da98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4da9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4da9e: 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;
4daa2: 256a 00a0 007a movel %a2@(160),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = the_thread->Start.budget_callout;
4daa8: 256a 00a4 007e movel %a2@(164),%a2@(126) <== NOT EXECUTED
the_thread->Start.pointer_argument = pointer_argument;
4daae: 256e 000c 0096 movel %fp@(12),%a2@(150) <== NOT EXECUTED
the_thread->Start.numeric_argument = numeric_argument;
4dab4: 256e 0010 009a movel %fp@(16),%a2@(154) <== 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;
4daba: 156a 009e 0074 moveb %a2@(158),%a2@(116) <== NOT EXECUTED
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
the_thread->resource_count = 0;
4dac0: 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 ) ) {
4dac4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dac6: 4eb9 0004 9cd0 jsr 49cd0 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED 4dacc: 588f addql #4,%sp <== NOT EXECUTED 4dace: 4a00 tstb %d0 <== NOT EXECUTED 4dad0: 6608 bnes 4dada <_Thread_Reset+0x42> <== NOT EXECUTED
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4dad2: 7002 moveq #2,%d0 <== NOT EXECUTED 4dad4: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4dad8: 672a beqs 4db04 <_Thread_Reset+0x6c> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
4dada: 202a 00ac movel %a2@(172),%d0 <== NOT EXECUTED 4dade: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 4dae2: 6718 beqs 4dafc <_Thread_Reset+0x64> <== NOT EXECUTED
the_thread->real_priority = the_thread->Start.initial_priority;
4dae4: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4dae8: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
} }
4daec: 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 );
4daf0: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
} }
4daf4: 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 );
4daf6: 4ef9 0004 9f10 jmp 49f10 <_Thread_Set_priority> <== NOT EXECUTED
} }
4dafc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4db00: 4e5e unlk %fp <== NOT EXECUTED 4db02: 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 );
4db04: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4db08: 4eb9 0004 a704 jsr 4a704 <_Watchdog_Remove> <== NOT EXECUTED 4db0e: 588f addql #4,%sp <== NOT EXECUTED 4db10: 60c8 bras 4dada <_Thread_Reset+0x42> <== NOT EXECUTED
...
00049e80 <_Thread_Restart>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
49e80: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _Thread_Restart(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
49e82: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49e86: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49e88: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 49e8c: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
if ( !_States_Is_dormant( the_thread->current_state ) ) {
49e90: 670a beqs 49e9c <_Thread_Restart+0x1c> <== NOT EXECUTED
return true;
}
return false;
}
49e92: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49e96: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Restart_self();
return true;
}
return false;
49e98: 4200 clrb %d0 <== NOT EXECUTED
}
49e9a: 4e75 rts <== NOT EXECUTED
Thread_Entry_numeric_type numeric_argument
)
{
if ( !_States_Is_dormant( the_thread->current_state ) ) {
_Thread_Set_transient( the_thread );
49e9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49e9e: 4eb9 0004 9f88 jsr 49f88 <_Thread_Set_transient> <== NOT EXECUTED
_Thread_Reset( the_thread, pointer_argument, numeric_argument );
49ea4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49ea8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49eac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49eae: 4eb9 0004 da98 jsr 4da98 <_Thread_Reset> <== NOT EXECUTED
_Thread_Load_environment( the_thread );
49eb4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49eb6: 4eb9 0004 d77c jsr 4d77c <_Thread_Load_environment> <== NOT EXECUTED
_Thread_Ready( the_thread );
49ebc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49ebe: 4eb9 0004 da60 jsr 4da60 <_Thread_Ready> <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
49ec4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49ec6: 4eb9 0004 a4f4 jsr 4a4f4 <_User_extensions_Thread_restart> <== NOT EXECUTED
if ( _Thread_Is_executing ( the_thread ) )
49ecc: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 49ed0: b5f9 0006 112e cmpal 6112e <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 49ed6: 670a beqs 49ee2 <_Thread_Restart+0x62> <== NOT EXECUTED
return true;
}
return false;
}
49ed8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49edc: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49ede: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
49ee0: 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 )
49ee2: 4aaa 00f6 tstl %a2@(246) <== NOT EXECUTED 49ee6: 6712 beqs 49efa <_Thread_Restart+0x7a> <== NOT EXECUTED
_Context_Restore_fp( &_Thread_Executing->fp_context );
49ee8: 486a 00f6 pea %a2@(246) <== NOT EXECUTED 49eec: 4eb9 0004 aa4e jsr 4aa4e <_CPU_Context_restore_fp> <== NOT EXECUTED 49ef2: 2479 0006 112e moveal 6112e <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 49ef8: 588f addql #4,%sp <== NOT EXECUTED
#endif
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
49efa: 486a 00c2 pea %a2@(194) <== NOT EXECUTED 49efe: 4eb9 0004 a906 jsr 4a906 <_CPU_Context_Restart_self> <== NOT EXECUTED 49f04: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49f08: 588f addql #4,%sp <== NOT EXECUTED 49f0a: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49f0c: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
0004c90c <_Thread_Resume>:
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c90c: 203c 0000 0700 movel #1792,%d0
void _Thread_Resume(
Thread_Control *the_thread,
bool force
)
{
4c912: 4e56 0000 linkw %fp,#0 4c916: 206e 0008 moveal %fp@(8),%a0 4c91a: 2f02 movel %d2,%sp@-
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c91c: 40c2 movew %sr,%d2 4c91e: 8082 orl %d2,%d0 4c920: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
4c922: 2028 0010 movel %a0@(16),%d0
if ( current_state & STATES_SUSPENDED ) {
4c926: 0800 0001 btst #1,%d0
4c92a: 670a beqs 4c936 <_Thread_Resume+0x2a> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
4c92c: 72fd moveq #-3,%d1 4c92e: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state);
4c930: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
4c934: 670a beqs 4c940 <_Thread_Resume+0x34> <== ALWAYS TAKEN
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4c936: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4c938: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4c93c: 4e5e unlk %fp <== NOT EXECUTED 4c93e: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_Unblock(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.unblock( the_scheduler, the_thread );
4c940: 2f08 movel %a0,%sp@- 4c942: 4879 0006 3ab6 pea 63ab6 <_Scheduler> 4c948: 2079 0006 3ac6 moveal 63ac6 <_Scheduler+0x10>,%a0 4c94e: 4e90 jsr %a0@ 4c950: 508f addql #8,%sp
if ( _States_Is_ready( current_state ) ) {
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4c952: 46c2 movew %d2,%sr
}
4c954: 242e fffc movel %fp@(-4),%d2
4c958: 4e5e unlk %fp <== NOT EXECUTED
0004926c <_Thread_Set_priority>:
void _Thread_Set_priority(
Thread_Control *the_thread,
Priority_Control new_priority
)
{
4926c: 4e56 0000 linkw %fp,#0
RTEMS_INLINE_ROUTINE void _Scheduler_Thread_scheduler_update(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.scheduler_update( the_scheduler, the_thread );
49270: 203c 0005 fd7e movel #392574,%d0 49276: 206e 0008 moveal %fp@(8),%a0
the_thread->current_priority = new_priority;
4927a: 216e 000c 0014 movel %fp@(12),%a0@(20) 49280: 2279 0005 fd9a moveal 5fd9a <_Scheduler+0x1c>,%a1 49286: 2d40 0008 movel %d0,%fp@(8) 4928a: 2d48 000c movel %a0,%fp@(12)
_Scheduler_Thread_scheduler_update(&_Scheduler, the_thread);
}
4928e: 4e5e unlk %fp 49290: 4ed1 jmp %a1@
...
00049294 <_Thread_Set_state>:
States_Control state
)
{
ISR_Level level;
_ISR_Disable( level );
49294: 203c 0000 0700 movel #1792,%d0
void _Thread_Set_state(
Thread_Control *the_thread,
States_Control state
)
{
4929a: 4e56 0000 linkw %fp,#0 4929e: 206e 0008 moveal %fp@(8),%a0 492a2: 2f02 movel %d2,%sp@- 492a4: 222e 000c movel %fp@(12),%d1
ISR_Level level;
_ISR_Disable( level );
492a8: 40c2 movew %sr,%d2 492aa: 8082 orl %d2,%d0 492ac: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
492ae: 2028 0010 movel %a0@(16),%d0
492b2: 6710 beqs 492c4 <_Thread_Set_state+0x30> <== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
492b4: 8280 orl %d0,%d1 <== NOT EXECUTED 492b6: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
492ba: 46c2 movew %d2,%sr <== NOT EXECUTED
the_thread->current_state = state;
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
}
492bc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 492c0: 4e5e unlk %fp <== NOT EXECUTED 492c2: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_Block(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.block( the_scheduler, the_thread );
492c4: 2f08 movel %a0,%sp@- 492c6: 4879 0005 fd7e pea 5fd7e <_Scheduler>
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = state;
492cc: 2141 0010 movel %d1,%a0@(16) 492d0: 2079 0005 fd8a moveal 5fd8a <_Scheduler+0xc>,%a0 492d6: 4e90 jsr %a0@
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
492d8: 46c2 movew %d2,%sr 492da: 508f addql #8,%sp
}
492dc: 242e fffc movel %fp@(-4),%d2
492e0: 4e5e unlk %fp <== NOT EXECUTED
000492e4 <_Thread_Set_transient>:
)
{
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
492e4: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Set_transient(
Thread_Control *the_thread
)
{
492ea: 4e56 0000 linkw %fp,#0 492ee: 206e 0008 moveal %fp@(8),%a0 492f2: 2f02 movel %d2,%sp@-
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
492f4: 40c1 movew %sr,%d1 492f6: 8081 orl %d1,%d0 492f8: 46c0 movew %d0,%sr
old_state = the_thread->current_state;
492fa: 2028 0010 movel %a0@(16),%d0 492fe: 7404 moveq #4,%d2 49300: 8480 orl %d0,%d2 49302: 2142 0010 movel %d2,%a0@(16)
the_thread->current_state = _States_Set( STATES_TRANSIENT, old_state );
/* FIXME: need to check which scheduler to use? */
if ( _States_Is_ready( old_state ) ) {
49306: 4a80 tstl %d0
49308: 661a bnes 49324 <_Thread_Set_transient+0x40>
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract(
Thread_Control *the_thread
)
{
Chain_Control *ready = the_thread->scheduler.priority->ready_chain;
4930a: 2268 008a moveal %a0@(138),%a1 4930e: 2251 moveal %a1@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
49310: 2029 0008 movel %a1@(8),%d0 49314: b091 cmpl %a1@,%d0
49316: 6714 beqs 4932c <_Thread_Set_transient+0x48> <== ALWAYS TAKEN
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
49318: 2250 moveal %a0@,%a1 <== NOT EXECUTED
previous = the_node->previous;
4931a: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4931e: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
49322: 2089 movel %a1,%a0@ <== NOT EXECUTED
_Scheduler_priority_Ready_queue_extract( the_thread);
}
_ISR_Enable( level );
49324: 46c1 movew %d1,%sr
}
49326: 241f movel %sp@+,%d2 49328: 4e5e unlk %fp 4932a: 4e75 rts
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4932c: 2409 movel %a1,%d2 4932e: 5882 addql #4,%d2
head->next = tail;
head->previous = NULL;
49330: 42a9 0004 clrl %a1@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
49334: 2282 movel %d2,%a1@
head->next = tail;
head->previous = NULL;
tail->previous = head;
49336: 2349 0008 movel %a1,%a1@(8)
_Chain_Initialize_empty( ready );
_Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
4933a: 2068 008a moveal %a0@(138),%a0
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
4933e: 2268 0004 moveal %a0@(4),%a1 49342: 3028 000e movew %a0@(14),%d0 49346: 3411 movew %a1@,%d2 49348: c082 andl %d2,%d0 4934a: 3280 movew %d0,%a1@
if ( *the_priority_map->minor == 0 )
4934c: 66d6 bnes 49324 <_Thread_Set_transient+0x40>
_Priority_Major_bit_map &= the_priority_map->block_major;
4934e: 3439 0006 0194 movew 60194 <_Priority_Major_bit_map>,%d2 49354: 3028 000c movew %a0@(12),%d0 49358: c082 andl %d2,%d0 4935a: 33c0 0006 0194 movew %d0,60194 <_Priority_Major_bit_map>
/* FIXME: need to check which scheduler to use? */
if ( _States_Is_ready( old_state ) ) {
_Scheduler_priority_Ready_queue_extract( the_thread);
}
_ISR_Enable( level );
49360: 46c1 movew %d1,%sr
}
49362: 241f movel %sp@+,%d2
49364: 4e5e unlk %fp <== NOT EXECUTED
000493cc <_Thread_Stack_Free>:
*/
void _Thread_Stack_Free(
Thread_Control *the_thread
)
{
493cc: 4e56 0000 linkw %fp,#0 493d0: 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 )
493d4: 4a28 00b0 tstb %a0@(176)
493d8: 6714 beqs 493ee <_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 )
493da: 2279 0005 e46c moveal 5e46c <Configuration+0x28>,%a1 493e0: 4a89 tstl %a1
493e2: 670e beqs 493f2 <_Thread_Stack_Free+0x26> <== ALWAYS TAKEN
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
493e4: 2d68 00b6 0008 movel %a0@(182),%fp@(8) <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
493ea: 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 );
493ec: 4ed1 jmp %a1@ <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
493ee: 4e5e unlk %fp <== NOT EXECUTED 493f0: 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 );
493f2: 2d68 00b6 0008 movel %a0@(182),%fp@(8)
}
493f8: 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 );
493fa: 4ef9 0004 9bba jmp 49bba <_Workspace_Free>
00049450 <_Thread_Start>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
49450: 7001 moveq #1,%d0
Thread_Start_types the_prototype,
void *entry_point,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
49452: 4e56 0000 linkw %fp,#0 49456: 2f0a movel %a2,%sp@- 49458: 246e 0008 moveal %fp@(8),%a2 4945c: c0aa 0010 andl %a2@(16),%d0
if ( _States_Is_dormant( the_thread->current_state ) ) {
49460: 660a bnes 4946c <_Thread_Start+0x1c> <== ALWAYS TAKEN
return true;
}
return false;
}
49462: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49466: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_start( the_thread );
return true;
}
return false;
49468: 4200 clrb %d0 <== NOT EXECUTED
}
4946a: 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 );
4946c: 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;
4946e: 256e 0010 008e movel %fp@(16),%a2@(142)
the_thread->Start.prototype = the_prototype;
49474: 256e 000c 0092 movel %fp@(12),%a2@(146)
the_thread->Start.pointer_argument = pointer_argument;
4947a: 256e 0014 0096 movel %fp@(20),%a2@(150)
the_thread->Start.numeric_argument = numeric_argument;
49480: 256e 0018 009a movel %fp@(24),%a2@(154)
_Thread_Load_environment( the_thread );
49486: 4eb9 0004 ca94 jsr 4ca94 <_Thread_Load_environment>
_Thread_Ready( the_thread );
4948c: 2f0a movel %a2,%sp@- 4948e: 4eb9 0004 cd78 jsr 4cd78 <_Thread_Ready>
_User_extensions_Thread_start( the_thread );
49494: 2f0a movel %a2,%sp@- 49496: 4eb9 0004 9850 jsr 49850 <_User_extensions_Thread_start>
return true;
}
return false;
}
4949c: 246e fffc moveal %fp@(-4),%a2
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
494a0: 4fef 000c lea %sp@(12),%sp
}
return false;
}
494a4: 4e5e unlk %fp
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
494a6: 7001 moveq #1,%d0
}
return false;
}
...
000494ac <_Thread_Suspend>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
494ac: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Suspend(
Thread_Control *the_thread
)
{
494b2: 4e56 0000 linkw %fp,#0 494b6: 206e 0008 moveal %fp@(8),%a0 494ba: 2f02 movel %d2,%sp@-
ISR_Level level;
_ISR_Disable( level );
494bc: 40c2 movew %sr,%d2 494be: 8082 orl %d2,%d0 494c0: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
494c2: 2028 0010 movel %a0@(16),%d0
494c6: 6712 beqs 494da <_Thread_Suspend+0x2e> <== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
494c8: 7202 moveq #2,%d1 <== NOT EXECUTED 494ca: 8280 orl %d0,%d1 <== NOT EXECUTED 494cc: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
494d0: 46c2 movew %d2,%sr <== NOT EXECUTED
the_thread->current_state = STATES_SUSPENDED;
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
}
494d2: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 494d6: 4e5e unlk %fp <== NOT EXECUTED 494d8: 4e75 rts <== NOT EXECUTED
494da: 2f08 movel %a0,%sp@- 494dc: 4879 0005 fd7e pea 5fd7e <_Scheduler>
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = STATES_SUSPENDED;
494e2: 7002 moveq #2,%d0 494e4: 2140 0010 movel %d0,%a0@(16) 494e8: 2079 0005 fd8a moveal 5fd8a <_Scheduler+0xc>,%a0 494ee: 4e90 jsr %a0@
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
494f0: 46c2 movew %d2,%sr 494f2: 508f addql #8,%sp
}
494f4: 242e fffc movel %fp@(-4),%d2
494f8: 4e5e unlk %fp <== NOT EXECUTED
000494fc <_Thread_Tickle_timeslice>:
*
* Output parameters: NONE
*/
void _Thread_Tickle_timeslice( void )
{
494fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49500: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Thread_Control *executing;
executing = _Thread_Executing;
49502: 2479 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
/*
* If the thread is not preemptible or is not ready, then
* just return.
*/
if ( !executing->is_preemptible )
49508: 4a2a 0074 tstb %a2@(116) <== NOT EXECUTED 4950c: 6720 beqs 4952e <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
return;
if ( !_States_Is_ready( executing->current_state ) )
4950e: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 49512: 661a bnes 4952e <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
/*
* The cpu budget algorithm determines what happens next.
*/
switch ( executing->budget_algorithm ) {
49514: 202a 007a movel %a2@(122),%d0 <== NOT EXECUTED 49518: 7201 moveq #1,%d1 <== NOT EXECUTED 4951a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4951c: 6210 bhis 4952e <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED 4951e: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 49522: b280 cmpl %d0,%d1 <== NOT EXECUTED 49524: 642e bccs 49554 <_Thread_Tickle_timeslice+0x58> <== NOT EXECUTED 49526: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 4952a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4952c: 6708 beqs 49536 <_Thread_Tickle_timeslice+0x3a> <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
4952e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49532: 4e5e unlk %fp <== NOT EXECUTED 49534: 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 )
49536: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED 4953a: 5380 subql #1,%d0 <== NOT EXECUTED 4953c: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED 49540: 66ec bnes 4952e <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
(*executing->budget_callout)( executing );
49542: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49544: 206a 007e moveal %a2@(126),%a0 <== NOT EXECUTED 49548: 4e90 jsr %a0@ <== NOT EXECUTED
break;
#endif
}
}
4954a: 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 );
4954e: 588f addql #4,%sp <== NOT EXECUTED
break;
#endif
}
}
49550: 4e5e unlk %fp <== NOT EXECUTED 49552: 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 ) {
49554: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED 49558: 5380 subql #1,%d0 <== NOT EXECUTED 4955a: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED 4955e: 6ece bgts 4952e <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
49560: 4879 0005 fd7e pea 5fd7e <_Scheduler> <== NOT EXECUTED 49566: 2079 0005 fd86 moveal 5fd86 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 4956c: 4e90 jsr %a0@ <== NOT EXECUTED
* 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.
*/
_Scheduler_Yield( );
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4956e: 588f addql #4,%sp <== NOT EXECUTED 49570: 41f9 0005 fcb0 lea 5fcb0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 49576: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
4957a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4957e: 4e5e unlk %fp <== NOT EXECUTED
...
00048438 <_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 ) ) {
48438: 7202 moveq #2,%d1 <== NOT EXECUTED
Thread_blocking_operation_States sync_state __attribute__((unused)),
#endif
Thread_Control *the_thread,
ISR_Level level
)
{
4843a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4843e: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 48442: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48444: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
#endif
/*
* The thread is not waiting on anything after this completes.
*/
the_thread->Wait.queue = NULL;
48448: 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 ) ) {
4844c: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 48450: 671c beqs 4846e <_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 );
48452: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
48454: 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
}
48458: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4845c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 48462: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 48466: 4e5e unlk %fp <== NOT EXECUTED 48468: 4ef9 0004 85e0 jmp 485e0 <_Thread_Clear_state> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4846e: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 48472: 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 );
48476: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
48478: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4847c: 4eb9 0004 9a1c jsr 49a1c <_Watchdog_Remove> <== NOT EXECUTED 48482: 588f addql #4,%sp <== NOT EXECUTED 48484: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4848a: 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
}
4848e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48492: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 48496: 4e5e unlk %fp <== NOT EXECUTED 48498: 4ef9 0004 85e0 jmp 485e0 <_Thread_Clear_state> <== NOT EXECUTED
...
00048cf8 <_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;
48cf8: 41f9 0004 cb10 lea 4cb10 <_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 )
48cfe: 7001 moveq #1,%d0
*/
Thread_Control *_Thread_queue_Dequeue(
Thread_queue_Control *the_thread_queue
)
{
48d00: 4e56 fff4 linkw %fp,#-12 48d04: 48d7 040c moveml %d2-%d3/%a2,%sp@ 48d08: 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 )
48d0c: b0aa 0034 cmpl %a2@(52),%d0
48d10: 6722 beqs 48d34 <_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 );
48d12: 2f0a movel %a2,%sp@- 48d14: 4e90 jsr %a0@
_ISR_Disable( level );
48d16: 223c 0000 0700 movel #1792,%d1 48d1c: 40c2 movew %sr,%d2 48d1e: 8282 orl %d2,%d1 48d20: 46c1 movew %d1,%sr
if ( !the_thread ) {
48d22: 588f addql #4,%sp 48d24: 4a80 tstl %d0
48d26: 6728 beqs 48d50 <_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 );
48d28: 46c2 movew %d2,%sr
return the_thread; }
48d2a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 48d30: 4e5e unlk %fp 48d32: 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 );
48d34: 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;
48d36: 41f9 0004 8d74 lea 48d74 <_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 );
48d3c: 4e90 jsr %a0@
_ISR_Disable( level );
48d3e: 223c 0000 0700 movel #1792,%d1 48d44: 40c2 movew %sr,%d2 48d46: 8282 orl %d2,%d1 48d48: 46c1 movew %d1,%sr
if ( !the_thread ) {
48d4a: 588f addql #4,%sp 48d4c: 4a80 tstl %d0
48d4e: 66d8 bnes 48d28 <_Thread_queue_Dequeue+0x30>
sync_state = the_thread_queue->sync_state;
if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
48d50: 222a 0030 movel %a2@(48),%d1 48d54: 7601 moveq #1,%d3 48d56: 5381 subql #1,%d1 48d58: b681 cmpl %d1,%d3
48d5a: 65cc bcss 48d28 <_Thread_queue_Dequeue+0x30> <== ALWAYS TAKEN
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
48d5c: 7203 moveq #3,%d1 <== NOT EXECUTED
the_thread = _Thread_Executing;
48d5e: 2039 0006 0186 movel 60186 <_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;
48d64: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED
the_thread = _Thread_Executing;
}
}
_ISR_Enable( level );
48d68: 46c2 movew %d2,%sr <== NOT EXECUTED
return the_thread; }
48d6a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 48d70: 4e5e unlk %fp <== NOT EXECUTED
0004cb10 <_Thread_queue_Dequeue_fifo>:
)
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4cb10: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_fifo(
Thread_queue_Control *the_thread_queue
)
{
4cb16: 4e56 0000 linkw %fp,#0 4cb1a: 226e 0008 moveal %fp@(8),%a1 4cb1e: 2f0b movel %a3,%sp@- 4cb20: 2f0a movel %a2,%sp@-
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4cb22: 40c1 movew %sr,%d1 4cb24: 8081 orl %d1,%d0 4cb26: 46c0 movew %d0,%sr
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4cb28: 2049 moveal %a1,%a0 4cb2a: 2458 moveal %a0@+,%a2
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) {
4cb2c: b1ca cmpal %a2,%a0
4cb2e: 6768 beqs 4cb98 <_Thread_queue_Dequeue_fifo+0x88><== ALWAYS TAKEN
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
4cb30: 2052 moveal %a2@,%a0 <== NOT EXECUTED
the_thread = (Thread_Control *)
4cb32: 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 ) ) {
4cb34: 7002 moveq #2,%d0 <== NOT EXECUTED
head->next = new_first;
4cb36: 2288 movel %a0,%a1@ <== NOT EXECUTED
new_first->previous = head;
4cb38: 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;
4cb3c: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4cb40: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4cb44: 6720 beqs 4cb66 <_Thread_queue_Dequeue_fifo+0x56><== NOT EXECUTED
_ISR_Enable( level );
4cb46: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4cb48: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4cb4e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cb50: 4eb9 0004 85e0 jsr 485e0 <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4cb56: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4cb5a: 200b movel %a3,%d0 <== NOT EXECUTED 4cb5c: 508f addql #8,%sp <== NOT EXECUTED 4cb5e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4cb62: 4e5e unlk %fp <== NOT EXECUTED 4cb64: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4cb66: 7003 moveq #3,%d0 <== NOT EXECUTED 4cb68: 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 );
4cb6c: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4cb6e: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4cb72: 4eb9 0004 9a1c jsr 49a1c <_Watchdog_Remove> <== NOT EXECUTED 4cb78: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4cb7e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cb80: 4eb9 0004 85e0 jsr 485e0 <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4cb86: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4cb8a: 200b movel %a3,%d0 <== NOT EXECUTED 4cb8c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cb90: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4cb94: 4e5e unlk %fp <== NOT EXECUTED 4cb96: 4e75 rts <== NOT EXECUTED
#endif
return the_thread;
}
_ISR_Enable( level );
4cb98: 46c1 movew %d1,%sr
return NULL;
4cb9a: 97cb subal %a3,%a3
}
4cb9c: 200b movel %a3,%d0 4cb9e: 246e fff8 moveal %fp@(-8),%a2 4cba2: 266e fffc moveal %fp@(-4),%a3 4cba6: 4e5e unlk %fp
...
00048d74 <_Thread_queue_Dequeue_priority>:
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48d74: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_priority(
Thread_queue_Control *the_thread_queue
)
{
48d7a: 4e56 ffe8 linkw %fp,#-24 48d7e: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ 48d82: 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 );
48d86: 40c3 movew %sr,%d3 48d88: 8083 orl %d3,%d0 48d8a: 46c0 movew %d0,%sr
for( index=0 ;
48d8c: 4280 clrl %d0
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48d8e: 204b moveal %a3,%a0
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
48d90: 2400 movel %d0,%d2 48d92: 2200 movel %d0,%d1
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48d94: 5280 addql #1,%d0 48d96: e58a lsll #2,%d2 48d98: e989 lsll #4,%d1
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48d9a: 2450 moveal %a0@,%a2 48d9c: 9282 subl %d2,%d1
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48d9e: 41e8 000c lea %a0@(12),%a0 48da2: 43f3 1804 lea %a3@(00000004,%d1:l),%a1
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
48da6: b3ca cmpal %a2,%a1
48da8: 6616 bnes 48dc0 <_Thread_queue_Dequeue_priority+0x4c>
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
48daa: 7204 moveq #4,%d1 48dac: b280 cmpl %d0,%d1
48dae: 66e0 bnes 48d90 <_Thread_queue_Dequeue_priority+0x1c>
}
/*
* We did not find a thread to unblock.
*/
_ISR_Enable( level );
48db0: 46c3 movew %d3,%sr
return NULL;
48db2: 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 );
}
48db4: 2002 movel %d2,%d0 48db6: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 48dbc: 4e5e unlk %fp 48dbe: 4e75 rts 48dc0: 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 *) _Chain_First(
48dc2: 240a movel %a2,%d2 48dc4: 0680 0000 003c addil #60,%d0
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48dca: 206a 0038 moveal %a2@(56),%a0
dequeue:
the_thread->Wait.queue = NULL;
new_first_node = _Chain_First( &the_thread->Wait.Block2n );
new_first_thread = (Thread_Control *) new_first_node;
next_node = the_thread->Object.Node.next;
48dce: 2252 moveal %a2@,%a1
previous_node = the_thread->Object.Node.previous;
48dd0: 266a 0004 moveal %a2@(4),%a3
*/
_ISR_Enable( level );
return NULL;
dequeue:
the_thread->Wait.queue = NULL;
48dd4: 42aa 0044 clrl %a2@(68)
new_first_node = _Chain_First( &the_thread->Wait.Block2n );
new_first_thread = (Thread_Control *) new_first_node;
next_node = the_thread->Object.Node.next;
previous_node = the_thread->Object.Node.previous;
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
48dd8: b088 cmpl %a0,%d0 48dda: 6700 008a beqw 48e66 <_Thread_queue_Dequeue_priority+0xf2>
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48dde: 286a 0040 moveal %a2@(64),%a4 <== NOT EXECUTED
next_node = the_thread->Object.Node.next;
previous_node = the_thread->Object.Node.previous;
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
48de2: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
48de4: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
48de8: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
48dea: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
next_node->previous = new_first_node;
new_first_node->next = next_node;
48dee: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
48df0: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED 48df4: b3ea 0038 cmpal %a2@(56),%a1 <== NOT EXECUTED 48df8: 6716 beqs 48e10 <_Thread_queue_Dequeue_priority+0x9c><== NOT EXECUTED
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
48dfa: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
48dfe: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED 48e02: 2889 movel %a1,%a4@ <== NOT EXECUTED
new_first_node->next = next_node;
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
48e04: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED 48e08: 2b49 0004 movel %a1,%a5@(4) <== NOT EXECUTED
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
tail->previous = last_node;
48e0c: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED
} else {
previous_node->next = next_node;
next_node->previous = previous_node;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
48e10: 7002 moveq #2,%d0 48e12: b0aa 0050 cmpl %a2@(80),%d0
48e16: 671e beqs 48e36 <_Thread_queue_Dequeue_priority+0xc2><== NEVER TAKEN
_ISR_Enable( level );
48e18: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
48e1a: 2f3c 1003 fff8 movel #268697592,%sp@- 48e20: 2f0a movel %a2,%sp@- 48e22: 4eb9 0004 85e0 jsr 485e0 <_Thread_Clear_state> 48e28: 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 );
}
48e2a: 2002 movel %d2,%d0 48e2c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 48e32: 4e5e unlk %fp 48e34: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
48e36: 7203 moveq #3,%d1 <== NOT EXECUTED 48e38: 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 );
48e3c: 46c3 movew %d3,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
48e3e: 486a 0048 pea %a2@(72) <== NOT EXECUTED 48e42: 4eb9 0004 9a1c jsr 49a1c <_Watchdog_Remove> <== NOT EXECUTED 48e48: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 48e4e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48e50: 4eb9 0004 85e0 jsr 485e0 <_Thread_Clear_state> <== NOT EXECUTED 48e56: 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 );
}
48e5a: 2002 movel %d2,%d0 <== NOT EXECUTED 48e5c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 48e62: 4e5e unlk %fp <== NOT EXECUTED 48e64: 4e75 rts <== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
48e66: 2689 movel %a1,%a3@
next_node->previous = previous_node;
48e68: 234b 0004 movel %a3,%a1@(4) 48e6c: 60a2 bras 48e10 <_Thread_queue_Dequeue_priority+0x9c>
...
0004cbac <_Thread_queue_Enqueue_fifo>:
)
{
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4cbac: 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
)
{
4cbb2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cbb6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4cbba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cbbc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4cbc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4cbc2: 40c1 movew %sr,%d1 <== NOT EXECUTED 4cbc4: 8081 orl %d1,%d0 <== NOT EXECUTED 4cbc6: 46c0 movew %d0,%sr <== NOT EXECUTED
sync_state = the_thread_queue->sync_state;
4cbc8: 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) {
4cbcc: 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;
4cbce: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
4cbd2: b480 cmpl %d0,%d2 <== NOT EXECUTED 4cbd4: 670e beqs 4cbe4 <_Thread_queue_Enqueue_fifo+0x38><== NOT EXECUTED
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return sync_state; }
4cbd6: 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;
4cbd8: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
return sync_state; }
4cbdc: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4cbde: 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;
4cbe0: 2081 movel %d1,%a0@ <== NOT EXECUTED
return sync_state; }
4cbe2: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
4cbe4: 2408 movel %a0,%d2 <== NOT EXECUTED 4cbe6: 5882 addql #4,%d2 <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
4cbe8: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
4cbec: 2282 movel %d2,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
4cbee: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED
old_last->next = the_node;
4cbf2: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
4cbf4: 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;
4cbf8: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
_ISR_Enable( level );
4cbfc: 46c1 movew %d1,%sr <== NOT EXECUTED
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return sync_state; }
4cbfe: 241f movel %sp@+,%d2 <== NOT EXECUTED 4cc00: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4cc02: 4e5e unlk %fp <== NOT EXECUTED
...
00048f18 <_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
)
{
48f18: 4e56 ffe0 linkw %fp,#-32 48f1c: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ 48f20: 246e 000c moveal %fp@(12),%a2
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
48f24: 41ea 003c lea %a2@(60),%a0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48f28: 49ea 0038 lea %a2@(56),%a4 48f2c: 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;
48f30: 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);
48f34: 2a01 movel %d1,%d5 48f36: ec8d lsrl #6,%d5
header_index = _Thread_queue_Header_number( priority ); header = &the_thread_queue->Queues.Priority[ header_index ]; block_state = the_thread_queue->state;
48f38: 242b 0038 movel %a3@(56),%d2
Chain_Node *tail = _Chain_Tail( the_chain );
48f3c: 2548 0038 movel %a0,%a2@(56)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48f40: 254c 0040 movel %a4,%a2@(64)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
48f44: 42aa 003c clrl %a2@(60)
if ( _Thread_queue_Is_reverse_search( priority ) )
48f48: 0801 0005 btst #5,%d1
48f4c: 665e bnes 48fac <_Thread_queue_Enqueue_priority+0x94>
48f4e: 700c moveq #12,%d0 48f50: 4c00 5800 mulsl %d0,%d5
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
48f54: 2c3c 0000 0700 movel #1792,%d6 48f5a: 2006 movel %d6,%d0
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
48f5c: 49f3 5804 lea %a3@(00000004,%d5:l),%a4 48f60: 40c3 movew %sr,%d3 48f62: 8083 orl %d3,%d0 48f64: 46c0 movew %d0,%sr 48f66: 2803 movel %d3,%d4
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
48f68: 2073 5800 moveal %a3@(00000000,%d5:l),%a0
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
48f6c: b9c8 cmpal %a0,%a4 48f6e: 6700 013a beqw 490aa <_Thread_queue_Enqueue_priority+0x192>
search_priority = search_thread->current_priority;
48f72: 2268 0014 moveal %a0@(20),%a1
if ( priority <= search_priority )
48f76: b3c1 cmpal %d1,%a1
48f78: 6418 bccs 48f92 <_Thread_queue_Enqueue_priority+0x7a>
break;
search_priority = search_thread->current_priority;
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
48f7a: 2006 movel %d6,%d0 48f7c: 46c3 movew %d3,%sr 48f7e: 8083 orl %d3,%d0 48f80: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE bool _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
48f82: 2002 movel %d2,%d0 48f84: c0a8 0010 andl %a0@(16),%d0
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48f88: 6700 00be beqw 49048 <_Thread_queue_Enqueue_priority+0x130>
_ISR_Enable( level );
goto restart_forward_search;
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
48f8c: 2050 moveal %a0@,%a0
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
48f8e: b9c8 cmpal %a0,%a4
48f90: 66e0 bnes 48f72 <_Thread_queue_Enqueue_priority+0x5a>
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48f92: 202b 0030 movel %a3@(48),%d0 48f96: 7401 moveq #1,%d2 48f98: b480 cmpl %d0,%d2 48f9a: 6700 00c4 beqw 49060 <_Thread_queue_Enqueue_priority+0x148>
* 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;
48f9e: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 48fa2: 2084 movel %d4,%a0@ <== NOT EXECUTED
return the_thread_queue->sync_state; }
48fa4: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED 48fa8: 4e5e unlk %fp <== NOT EXECUTED 48faa: 4e75 rts <== NOT EXECUTED
48fac: 700c moveq #12,%d0 48fae: 4c00 5800 mulsl %d0,%d5
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48fb2: 4283 clrl %d3 48fb4: 1639 0005 e442 moveb 5e442 <rtems_maximum_priority>,%d3
_ISR_Disable( level );
48fba: 2c3c 0000 0700 movel #1792,%d6
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
48fc0: da8b addl %a3,%d5 48fc2: 2845 moveal %d5,%a4
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48fc4: 2243 moveal %d3,%a1
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
48fc6: 508c addql #8,%a4
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
48fc8: 2006 movel %d6,%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;
48fca: 5289 addql #1,%a1
_ISR_Disable( level );
48fcc: 40c3 movew %sr,%d3 48fce: 8083 orl %d3,%d0 48fd0: 46c0 movew %d0,%sr 48fd2: 2803 movel %d3,%d4
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
48fd4: 2054 moveal %a4@,%a0
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
48fd6: ba88 cmpl %a0,%d5
48fd8: 6720 beqs 48ffa <_Thread_queue_Enqueue_priority+0xe2>
search_priority = search_thread->current_priority;
48fda: 2268 0014 moveal %a0@(20),%a1
if ( priority >= search_priority )
48fde: b3c1 cmpal %d1,%a1
48fe0: 6318 blss 48ffa <_Thread_queue_Enqueue_priority+0xe2><== ALWAYS TAKEN
break;
search_priority = search_thread->current_priority;
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
48fe2: 2006 movel %d6,%d0 <== NOT EXECUTED 48fe4: 46c3 movew %d3,%sr <== NOT EXECUTED 48fe6: 8083 orl %d3,%d0 <== NOT EXECUTED 48fe8: 46c0 movew %d0,%sr <== NOT EXECUTED 48fea: 2002 movel %d2,%d0 <== NOT EXECUTED 48fec: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48ff0: 6736 beqs 49028 <_Thread_queue_Enqueue_priority+0x110><== NOT EXECUTED
_ISR_Enable( level );
goto restart_reverse_search;
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
48ff2: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
48ff6: ba88 cmpl %a0,%d5 <== NOT EXECUTED 48ff8: 66e0 bnes 48fda <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
48ffa: 202b 0030 movel %a3@(48),%d0 48ffe: 7401 moveq #1,%d2 49000: b480 cmpl %d0,%d2
49002: 669a bnes 48f9e <_Thread_queue_Enqueue_priority+0x86><== NEVER TAKEN
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
49004: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
49008: b3c1 cmpal %d1,%a1
4900a: 677a beqs 49086 <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
4900c: 2250 moveal %a0@,%a1
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
4900e: 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;
49012: 2489 movel %a1,%a2@
the_node->previous = search_node; search_node->next = the_node; next_node->previous = the_node;
49014: 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;
49018: 208a movel %a2,%a0@
next_node->previous = the_node; the_thread->Wait.queue = the_thread_queue;
4901a: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
4901e: 46c3 movew %d3,%sr
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
49020: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 49024: 4e5e unlk %fp 49026: 4e75 rts
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
49028: 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;
4902a: 4283 clrl %d3 <== NOT EXECUTED 4902c: 1639 0005 e442 moveb 5e442 <rtems_maximum_priority>,%d3 <== NOT EXECUTED
_ISR_Disable( level );
49032: 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;
49034: 2243 moveal %d3,%a1 <== NOT EXECUTED 49036: 5289 addql #1,%a1 <== NOT EXECUTED
_ISR_Disable( level );
49038: 40c3 movew %sr,%d3 <== NOT EXECUTED 4903a: 8083 orl %d3,%d0 <== NOT EXECUTED 4903c: 46c0 movew %d0,%sr <== NOT EXECUTED 4903e: 2803 movel %d3,%d4 <== NOT EXECUTED
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
49040: 2054 moveal %a4@,%a0 <== NOT EXECUTED
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
49042: ba88 cmpl %a0,%d5 <== NOT EXECUTED 49044: 6694 bnes 48fda <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED 49046: 60b2 bras 48ffa <_Thread_queue_Enqueue_priority+0xe2><== NOT EXECUTED
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
49048: 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 );
4904a: 2006 movel %d6,%d0 <== NOT EXECUTED 4904c: 40c3 movew %sr,%d3 <== NOT EXECUTED 4904e: 8083 orl %d3,%d0 <== NOT EXECUTED 49050: 46c0 movew %d0,%sr <== NOT EXECUTED 49052: 2803 movel %d3,%d4 <== NOT EXECUTED
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
49054: 2073 5800 moveal %a3@(00000000,%d5:l),%a0 <== NOT EXECUTED
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
49058: b9c8 cmpal %a0,%a4 <== NOT EXECUTED 4905a: 6600 ff16 bnew 48f72 <_Thread_queue_Enqueue_priority+0x5a><== NOT EXECUTED 4905e: 604a bras 490aa <_Thread_queue_Enqueue_priority+0x192><== NOT EXECUTED
if ( the_thread_queue->sync_state !=
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
49060: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
49064: b3c1 cmpal %d1,%a1
49066: 671e beqs 49086 <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
previous_node = search_node->previous;
49068: 2268 0004 moveal %a0@(4),%a1
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
4906c: 2488 movel %a0,%a2@
the_node->previous = previous_node;
4906e: 2549 0004 movel %a1,%a2@(4)
previous_node->next = the_node;
49072: 228a movel %a2,%a1@
search_node->previous = the_node;
49074: 214a 0004 movel %a2,%a0@(4)
the_thread->Wait.queue = the_thread_queue;
49078: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
4907c: 46c3 movew %d3,%sr
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
4907e: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 49082: 4e5e unlk %fp 49084: 4e75 rts
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
equal_priority: /* add at end of priority group */
search_node = _Chain_Tail( &search_thread->Wait.Block2n );
49086: 49e8 003c lea %a0@(60),%a4 <== NOT EXECUTED
previous_node = search_node->previous;
4908a: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
equal_priority: /* add at end of priority group */
search_node = _Chain_Tail( &search_thread->Wait.Block2n );
4908e: 248c movel %a4,%a2@ <== NOT EXECUTED
previous_node = search_node->previous;
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
the_node->previous = previous_node;
49090: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous_node->next = the_node;
49094: 228a movel %a2,%a1@ <== NOT EXECUTED
search_node->previous = the_node;
49096: 214a 0040 movel %a2,%a0@(64) <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
4909a: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
4909e: 46c4 movew %d4,%sr <== NOT EXECUTED
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
490a0: 7001 moveq #1,%d0 <== NOT EXECUTED
* * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; }
490a2: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED 490a6: 4e5e unlk %fp <== NOT EXECUTED 490a8: 4e75 rts <== NOT EXECUTED
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
490aa: 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;
490ae: 327c ffff moveaw #-1,%a1
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
490b2: 7401 moveq #1,%d2 490b4: b480 cmpl %d0,%d2 490b6: 6600 fee6 bnew 48f9e <_Thread_queue_Enqueue_priority+0x86> 490ba: 60a4 bras 49060 <_Thread_queue_Enqueue_priority+0x148>
00048e70 <_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
)
{
48e70: 4e56 fff0 linkw %fp,#-16 48e74: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 48e78: 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 );
48e7c: 2f2b 0038 movel %a3@(56),%sp@-
Thread_queue_Control *,
Thread_Control *,
ISR_Level *
);
the_thread = _Thread_Executing;
48e80: 2479 0006 0186 moveal 60186 <_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
)
{
48e86: 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 );
48e8a: 2f0a movel %a2,%sp@- 48e8c: 4eb9 0004 9294 jsr 49294 <_Thread_Set_state>
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
48e92: 508f addql #8,%sp 48e94: 4a82 tstl %d2
48e96: 663e bnes 48ed6 <_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;
48e98: 41f9 0004 cbac lea 4cbac <_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 )
48e9e: 7001 moveq #1,%d0 48ea0: b0ab 0034 cmpl %a3@(52),%d0
48ea4: 676a beqs 48f10 <_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 );
48ea6: 486e fffc pea %fp@(-4) 48eaa: 2f0a movel %a2,%sp@- 48eac: 2f0b movel %a3,%sp@- 48eae: 4e90 jsr %a0@
if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
48eb0: 4fef 000c lea %sp@(12),%sp 48eb4: 7201 moveq #1,%d1 48eb6: b280 cmpl %d0,%d1
48eb8: 6712 beqs 48ecc <_Thread_queue_Enqueue_with_handler+0x5c><== ALWAYS TAKEN
_Thread_blocking_operation_Cancel( sync_state, the_thread, level );
48eba: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 48ebe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48ec0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48ec2: 4eb9 0004 8438 jsr 48438 <_Thread_blocking_operation_Cancel><== NOT EXECUTED 48ec8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
48ecc: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 48ed2: 4e5e unlk %fp 48ed4: 4e75 rts
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
_Watchdog_Initialize(
48ed6: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
48eda: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED
the_watchdog->id = id;
48ee0: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48ee4: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data;
48ee8: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
48eec: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
48ef0: 486a 0048 pea %a2@(72) <== NOT EXECUTED 48ef4: 4879 0005 fdd8 pea 5fdd8 <_Watchdog_Ticks_chain> <== NOT EXECUTED 48efa: 4eb9 0004 98d4 jsr 498d4 <_Watchdog_Insert> <== NOT EXECUTED 48f00: 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;
48f02: 41f9 0004 cbac lea 4cbac <_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 )
48f08: 7001 moveq #1,%d0 <== NOT EXECUTED 48f0a: b0ab 0034 cmpl %a3@(52),%d0 <== NOT EXECUTED 48f0e: 6696 bnes 48ea6 <_Thread_queue_Enqueue_with_handler+0x36><== NOT EXECUTED
enqueue_p = _Thread_queue_Enqueue_priority;
48f10: 41f9 0004 8f18 lea 48f18 <_Thread_queue_Enqueue_priority>,%a0 48f16: 608e bras 48ea6 <_Thread_queue_Enqueue_with_handler+0x36>
0004cc08 <_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 )
4cc08: 7201 moveq #1,%d1 <== NOT EXECUTED
void _Thread_queue_Extract(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
4cc0a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cc0e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4cc12: 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 )
4cc16: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED 4cc1a: 6710 beqs 4cc2c <_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 );
4cc1c: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4cc20: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4cc24: 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 );
4cc26: 4ef9 0004 e7f8 jmp 4e7f8 <_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 );
4cc2c: 42a7 clrl %sp@- <== NOT EXECUTED 4cc2e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cc30: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cc32: 4eb9 0004 cc40 jsr 4cc40 <_Thread_queue_Extract_priority_helper><== NOT EXECUTED 4cc38: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
}
4cc3c: 4e5e unlk %fp <== NOT EXECUTED
0004e7f8 <_Thread_queue_Extract_fifo>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
4e7f8: 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
)
{
4e7fe: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e802: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e804: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4e808: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e80a: 8081 orl %d1,%d0 <== NOT EXECUTED 4e80c: 46c0 movew %d0,%sr <== NOT EXECUTED 4e80e: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4e812: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4e818: 6734 beqs 4e84e <_Thread_queue_Extract_fifo+0x56><== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4e81a: 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 ) ) {
4e81c: 7002 moveq #2,%d0 <== NOT EXECUTED
previous = the_node->previous;
4e81e: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4e822: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4e826: 2089 movel %a1,%a0@ <== NOT EXECUTED
return;
}
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
4e828: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4e82c: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4e830: 6726 beqs 4e858 <_Thread_queue_Extract_fifo+0x60><== NOT EXECUTED
_ISR_Enable( level );
4e832: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4e834: 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
}
4e838: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e83c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4e842: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4e846: 4e5e unlk %fp <== NOT EXECUTED 4e848: 4ef9 0004 85e0 jmp 485e0 <_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 );
4e84e: 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
}
4e850: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e854: 4e5e unlk %fp <== NOT EXECUTED 4e856: 4e75 rts <== NOT EXECUTED 4e858: 7003 moveq #3,%d0 <== NOT EXECUTED 4e85a: 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 );
4e85e: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4e860: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4e864: 4eb9 0004 9a1c jsr 49a1c <_Watchdog_Remove> <== NOT EXECUTED 4e86a: 588f addql #4,%sp <== NOT EXECUTED 4e86c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4e872: 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
}
4e876: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4e87a: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4e87e: 4e5e unlk %fp <== NOT EXECUTED 4e880: 4ef9 0004 85e0 jmp 485e0 <_Thread_Clear_state> <== NOT EXECUTED
...
0004cc40 <_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 );
4cc40: 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
)
{
4cc46: 4e56 ffec linkw %fp,#-20 4cc4a: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 4cc4e: 246e 000c moveal %fp@(12),%a2 4cc52: 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 );
4cc56: 40c1 movew %sr,%d1 4cc58: 8081 orl %d1,%d0 4cc5a: 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);
4cc5c: 202a 0010 movel %a2@(16),%d0 4cc60: 0280 0003 bee0 andil #245472,%d0
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4cc66: 677e beqs 4cce6 <_Thread_queue_Extract_priority_helper+0xa6><== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4cc68: 200a movel %a2,%d0 4cc6a: 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;
4cc70: 2252 moveal %a2@,%a1
previous_node = the_node->previous;
4cc72: 266a 0004 moveal %a2@(4),%a3
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cc76: 206a 0038 moveal %a2@(56),%a0
*/
next_node = the_node->next;
previous_node = the_node->previous;
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
4cc7a: b088 cmpl %a0,%d0
4cc7c: 6774 beqs 4ccf2 <_Thread_queue_Extract_priority_helper+0xb2><== ALWAYS TAKEN
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cc7e: 286a 0040 moveal %a2@(64),%a4 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
new_first_node = _Chain_First( &the_thread->Wait.Block2n );
new_first_thread = (Thread_Control *) new_first_node;
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
4cc82: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
4cc84: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
new_first_node = _Chain_First( &the_thread->Wait.Block2n );
new_first_thread = (Thread_Control *) new_first_node;
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
4cc88: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
4cc8a: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED
last_node = _Chain_Last( &the_thread->Wait.Block2n );
new_second_node = new_first_node->next;
previous_node->next = new_first_node;
next_node->previous = new_first_node;
new_first_node->next = next_node;
4cc8e: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4cc90: 202a 0040 movel %a2@(64),%d0 <== NOT EXECUTED 4cc94: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 4cc98: 6716 beqs 4ccb0 <_Thread_queue_Extract_priority_helper+0x70><== NOT EXECUTED
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
4cc9a: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
4cc9e: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED 4cca2: 2889 movel %a1,%a4@ <== NOT EXECUTED
new_first_node->next = next_node;
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
4cca4: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED 4cca8: 2b49 0004 movel %a1,%a5@(4) <== NOT EXECUTED
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
tail->previous = last_node;
4ccac: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4ccb0: 4a02 tstb %d2 <== NOT EXECUTED 4ccb2: 6626 bnes 4ccda <_Thread_queue_Extract_priority_helper+0x9a><== NOT EXECUTED
_ISR_Enable( level );
return;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4ccb4: 7002 moveq #2,%d0 <== NOT EXECUTED 4ccb6: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4ccba: 6742 beqs 4ccfe <_Thread_queue_Extract_priority_helper+0xbe><== NOT EXECUTED
_ISR_Enable( level );
4ccbc: 46c1 movew %d1,%sr <== NOT EXECUTED 4ccbe: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 4ccc2: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4ccc8: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4ccce: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED 4ccd2: 4e5e unlk %fp <== NOT EXECUTED 4ccd4: 4ef9 0004 85e0 jmp 485e0 <_Thread_Clear_state> <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
_ISR_Enable( level );
4ccda: 46c1 movew %d1,%sr
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4ccdc: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 4cce2: 4e5e unlk %fp 4cce4: 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 );
4cce6: 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
}
4cce8: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4ccee: 4e5e unlk %fp <== NOT EXECUTED 4ccf0: 4e75 rts <== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
4ccf2: 2689 movel %a1,%a3@
next_node->previous = previous_node;
4ccf4: 234b 0004 movel %a3,%a1@(4)
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4ccf8: 4a02 tstb %d2
4ccfa: 67b8 beqs 4ccb4 <_Thread_queue_Extract_priority_helper+0x74><== NEVER TAKEN
4ccfc: 60dc bras 4ccda <_Thread_queue_Extract_priority_helper+0x9a>
4ccfe: 7003 moveq #3,%d0 <== NOT EXECUTED 4cd00: 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 );
4cd04: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4cd06: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4cd0a: 4eb9 0004 9a1c jsr 49a1c <_Watchdog_Remove> <== NOT EXECUTED 4cd10: 588f addql #4,%sp <== NOT EXECUTED 4cd12: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED 4cd18: 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
}
4cd1c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4cd22: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED 4cd26: 4e5e unlk %fp <== NOT EXECUTED 4cd28: 4ef9 0004 85e0 jmp 485e0 <_Thread_Clear_state> <== NOT EXECUTED
...
000490bc <_Thread_queue_Extract_with_proxy>:
*/
bool _Thread_queue_Extract_with_proxy(
Thread_Control *the_thread
)
{
490bc: 4e56 0000 linkw %fp,#0 490c0: 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);
490c4: 2028 0010 movel %a0@(16),%d0 490c8: 0280 0003 bee0 andil #245472,%d0
States_Control state;
state = the_thread->current_state;
if ( _States_Is_waiting_on_thread_queue( state ) ) {
490ce: 6606 bnes 490d6 <_Thread_queue_Extract_with_proxy+0x1a><== NEVER TAKEN
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
}
490d0: 4e5e unlk %fp
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
490d2: 4200 clrb %d0
}
490d4: 4e75 rts
if ( proxy_extract_callout )
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
490d6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 490d8: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED 490dc: 4eb9 0004 cc08 jsr 4cc08 <_Thread_queue_Extract> <== NOT EXECUTED
return true;
490e2: 508f addql #8,%sp <== NOT EXECUTED
} return false; }
490e4: 4e5e unlk %fp <== NOT EXECUTED
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
490e6: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
...
0004b2b0 <_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;
4b2b0: 43f9 0004 ef74 lea 4ef74 <_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 )
4b2b6: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First(
Thread_queue_Control *the_thread_queue
)
{
4b2b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b2bc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
4b2c0: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4b2c4: 6708 beqs 4b2ce <_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 );
4b2c6: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4b2ca: 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 );
4b2cc: 4ed1 jmp %a1@ <== NOT EXECUTED 4b2ce: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4b2d2: 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;
4b2d4: 43f9 0004 b2dc lea 4b2dc <_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 );
4b2da: 4ed1 jmp %a1@ <== NOT EXECUTED
0004ef74 <_Thread_queue_First_fifo>:
*/
Thread_Control *_Thread_queue_First_fifo(
Thread_queue_Control *the_thread_queue
)
{
4ef74: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) )
return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo );
return NULL;
}
4ef78: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4ef7c: 2018 movel %a0@+,%d0 <== NOT EXECUTED
Thread_Control *_Thread_queue_First_fifo(
Thread_queue_Control *the_thread_queue
)
{
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) )
4ef7e: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 4ef80: 6704 beqs 4ef86 <_Thread_queue_First_fifo+0x12> <== NOT EXECUTED
return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo );
return NULL;
}
4ef82: 4e5e unlk %fp <== NOT EXECUTED 4ef84: 4e75 rts <== NOT EXECUTED
)
{
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) )
return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo );
return NULL;
4ef86: 4280 clrl %d0 <== NOT EXECUTED
}
4ef88: 4e5e unlk %fp <== NOT EXECUTED
0004b2dc <_Thread_queue_First_priority>:
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
4b2dc: 4281 clrl %d1 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First_priority (
Thread_queue_Control *the_thread_queue
)
{
4b2de: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b2e2: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4b2e6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
return (Thread_Control *) _Chain_First(
&the_thread_queue->Queues.Priority[ index ]
);
}
return NULL;
4b2ea: 204a moveal %a2,%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4b2ec: 2601 movel %d1,%d3 <== NOT EXECUTED 4b2ee: 2401 movel %d1,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
4b2f0: 5281 addql #1,%d1 <== NOT EXECUTED 4b2f2: e58b lsll #2,%d3 <== NOT EXECUTED 4b2f4: e98a lsll #4,%d2 <== NOT EXECUTED
return (Thread_Control *) _Chain_First(
&the_thread_queue->Queues.Priority[ index ]
);
}
return NULL;
}
4b2f6: 2010 movel %a0@,%d0 <== NOT EXECUTED 4b2f8: 9483 subl %d3,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
4b2fa: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED 4b2fe: 43f2 2804 lea %a2@(00000004,%d2:l),%a1 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
4b302: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 4b304: 6608 bnes 4b30e <_Thread_queue_First_priority+0x32><== NOT EXECUTED
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
4b306: 7004 moveq #4,%d0 <== NOT EXECUTED 4b308: b081 cmpl %d1,%d0 <== NOT EXECUTED 4b30a: 66e0 bnes 4b2ec <_Thread_queue_First_priority+0x10><== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
return (Thread_Control *) _Chain_First(
&the_thread_queue->Queues.Priority[ index ]
);
}
return NULL;
4b30c: 4200 clrb %d0 <== NOT EXECUTED
}
4b30e: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 4b312: 4e5e unlk %fp <== NOT EXECUTED
...
00049128 <_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 ) {
49128: 7201 moveq #1,%d1
Thread_queue_Control *the_thread_queue,
Thread_queue_Disciplines the_discipline,
States_Control state,
uint32_t timeout_status
)
{
4912a: 4e56 0000 linkw %fp,#0 4912e: 206e 0008 moveal %fp@(8),%a0 49132: 2f0a movel %a2,%sp@- 49134: 202e 000c movel %fp@(12),%d0 49138: 2f02 movel %d2,%sp@-
the_thread_queue->state = state;
4913a: 216e 0010 0038 movel %fp@(16),%a0@(56)
the_thread_queue->discipline = the_discipline; the_thread_queue->timeout_status = timeout_status;
49140: 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;
49146: 2140 0034 movel %d0,%a0@(52)
the_thread_queue->timeout_status = timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
4914a: 42a8 0030 clrl %a0@(48)
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
4914e: b280 cmpl %d0,%d1
49150: 6716 beqs 49168 <_Thread_queue_Initialize+0x40>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
49152: 2448 moveal %a0,%a2 49154: 588a addql #4,%a2
head->next = tail;
head->previous = NULL;
49156: 42a8 0004 clrl %a0@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4915a: 208a movel %a2,%a0@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4915c: 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 );
}
}
49160: 241f movel %sp@+,%d2 49162: 245f moveal %sp@+,%a2 49164: 4e5e unlk %fp 49166: 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 ) {
49168: 2248 moveal %a0,%a1 4916a: 4280 clrl %d0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4916c: 2400 movel %d0,%d2 4916e: 2200 movel %d0,%d1
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
49170: 5280 addql #1,%d0 49172: e58a lsll #2,%d2 49174: e989 lsll #4,%d1
head->next = tail;
head->previous = NULL;
49176: 42a9 0004 clrl %a1@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4917a: 9282 subl %d2,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4917c: 45f0 1800 lea %a0@(00000000,%d1:l),%a2 49180: 234a 0008 movel %a2,%a1@(8)
Chain_Node *tail = _Chain_Tail( the_chain );
49184: 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 ;
49188: 7204 moveq #4,%d1 4918a: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
4918c: 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 ;
49190: b280 cmpl %d0,%d1
49192: 67cc beqs 49160 <_Thread_queue_Initialize+0x38> <== NEVER TAKEN
49194: 2400 movel %d0,%d2 49196: 2200 movel %d0,%d1
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
49198: 5280 addql #1,%d0 4919a: e58a lsll #2,%d2 4919c: e989 lsll #4,%d1
head->next = tail;
head->previous = NULL;
4919e: 42a9 0004 clrl %a1@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
491a2: 9282 subl %d2,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
491a4: 45f0 1800 lea %a0@(00000000,%d1:l),%a2 491a8: 234a 0008 movel %a2,%a1@(8)
Chain_Node *tail = _Chain_Tail( the_chain );
491ac: 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 ;
491b0: 7204 moveq #4,%d1 491b2: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
491b4: 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 ;
491b8: b280 cmpl %d0,%d1
491ba: 66b0 bnes 4916c <_Thread_queue_Initialize+0x44>
491bc: 60a2 bras 49160 <_Thread_queue_Initialize+0x38>
...
0004cd30 <_Thread_queue_Process_timeout>:
#include <rtems/score/tqdata.h>
void _Thread_queue_Process_timeout(
Thread_Control *the_thread
)
{
4cd30: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4cd34: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;
4cd38: 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 &&
4cd3c: 2029 0030 movel %a1@(48),%d0 <== NOT EXECUTED 4cd40: 6708 beqs 4cd4a <_Thread_queue_Process_timeout+0x1a><== NOT EXECUTED 4cd42: b1f9 0006 0186 cmpal 60186 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4cd48: 6716 beqs 4cd60 <_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;
4cd4a: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4cd50: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cd52: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4cd54: 4eb9 0004 cc08 jsr 4cc08 <_Thread_queue_Extract> <== NOT EXECUTED 4cd5a: 508f addql #8,%sp <== NOT EXECUTED
} }
4cd5c: 4e5e unlk %fp <== NOT EXECUTED 4cd5e: 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 ) {
4cd60: 7203 moveq #3,%d1 <== NOT EXECUTED 4cd62: b280 cmpl %d0,%d1 <== NOT EXECUTED 4cd64: 67f6 beqs 4cd5c <_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;
4cd66: 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 );
}
}
4cd68: 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;
4cd6a: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4cd70: 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 );
}
}
...
000491c0 <_Thread_queue_Requeue>:
void _Thread_queue_Requeue(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
491c0: 4e56 fff0 linkw %fp,#-16 491c4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 491c8: 246e 0008 moveal %fp@(8),%a2 491cc: 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 )
491d0: 4a8a tstl %a2
491d2: 6708 beqs 491dc <_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 ) {
491d4: 7001 moveq #1,%d0 491d6: b0aa 0034 cmpl %a2@(52),%d0
491da: 670a beqs 491e6 <_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 );
}
}
491dc: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 491e2: 4e5e unlk %fp <== NOT EXECUTED 491e4: 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 );
491e6: 303c 0700 movew #1792,%d0 491ea: 40c2 movew %sr,%d2 491ec: 8082 orl %d2,%d0 491ee: 46c0 movew %d0,%sr 491f0: 202b 0010 movel %a3@(16),%d0 491f4: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
491fa: 660c bnes 49208 <_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 );
491fc: 46c2 movew %d2,%sr <== NOT EXECUTED
} }
491fe: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 49204: 4e5e unlk %fp 49206: 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 );
49208: 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;
4920c: 7001 moveq #1,%d0 4920e: 2f0b movel %a3,%sp@- 49210: 2540 0030 movel %d0,%a2@(48) 49214: 2f0a movel %a2,%sp@- 49216: 4eb9 0004 cc40 jsr 4cc40 <_Thread_queue_Extract_priority_helper>
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
4921c: 486e fffc pea %fp@(-4) 49220: 2f0b movel %a3,%sp@- 49222: 2f0a movel %a2,%sp@- 49224: 4eb9 0004 8f18 jsr 48f18 <_Thread_queue_Enqueue_priority> 4922a: 4fef 0018 lea %sp@(24),%sp
}
_ISR_Enable( level );
4922e: 46c2 movew %d2,%sr 49230: 60cc bras 491fe <_Thread_queue_Requeue+0x3e>
...
00049234 <_Thread_queue_Timeout>:
void _Thread_queue_Timeout(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
49234: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49238: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4923c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49240: 4eb9 0004 89bc jsr 489bc <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
49246: 508f addql #8,%sp <== NOT EXECUTED 49248: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4924c: 6618 bnes 49266 <_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 );
4924e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49250: 4eb9 0004 cd30 jsr 4cd30 <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
49256: 588f addql #4,%sp <== NOT EXECUTED 49258: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4925e: 5380 subql #1,%d0 <== NOT EXECUTED 49260: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
49266: 4e5e unlk %fp <== NOT EXECUTED
...
00059090 <_Timer_server_Body>:
* @a arg points to the corresponding timer server control block.
*/
static rtems_task _Timer_server_Body(
rtems_task_argument arg
)
{
59090: 4e56 ffb0 linkw %fp,#-80 <== NOT EXECUTED
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
tail->previous = head;
59094: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59098: 200e movel %fp,%d0 <== NOT EXECUTED 5909a: 5180 subql #8,%d0 <== NOT EXECUTED
head->previous = NULL; tail->previous = head;
5909c: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED 590a0: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED 590a4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 590a8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
590ac: 260e movel %fp,%d3 <== NOT EXECUTED 590ae: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 590b4: 240a movel %a2,%d2 <== NOT EXECUTED 590b6: 2a0a movel %a2,%d5 <== NOT EXECUTED 590b8: 4bf9 0005 d688 lea 5d688 <_Watchdog_Adjust_to_chain>,%a5 <== NOT EXECUTED 590be: 0682 0000 0030 addil #48,%d2 <== NOT EXECUTED 590c4: 0685 0000 0068 addil #104,%d5 <== NOT EXECUTED 590ca: 47f9 0005 9cac lea 59cac <_Chain_Get>,%a3 <== NOT EXECUTED 590d0: 49f9 0005 d710 lea 5d710 <_Watchdog_Insert>,%a4 <== NOT EXECUTED 590d6: 2e00 movel %d0,%d7 <== 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 );
590d8: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED 590de: 2d48 ffd8 movel %a0,%fp@(-40) <== NOT EXECUTED 590e2: 41ea 0008 lea %a2@(8),%a0 <== NOT EXECUTED 590e6: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED 590ea: 41ea 0040 lea %a2@(64),%a0 <== NOT EXECUTED 590ee: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED 590f2: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED 590f6: 2d40 fff4 movel %d0,%fp@(-12) <== NOT EXECUTED
head->previous = NULL;
590fa: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED 590fe: 42ae ffec clrl %fp@(-20) <== NOT EXECUTED
tail->previous = head;
59102: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59106: 2d48 ffe8 movel %a0,%fp@(-24) <== NOT EXECUTED
Chain_Control *tmp; /* * 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;
5910a: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED 5910e: 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;
59112: 2039 0007 eca6 movel 7eca6 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
/*
* We assume adequate unsigned arithmetic here.
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
59118: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
watchdogs->last_snapshot = snapshot;
5911c: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
59120: 9081 subl %d1,%d0 <== NOT EXECUTED 59122: 2f03 movel %d3,%sp@- <== NOT EXECUTED 59124: 2f00 movel %d0,%sp@- <== NOT EXECUTED 59126: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59128: 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();
5912a: 2039 0007 ec26 movel 7ec26 <_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 ) {
59130: 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;
59134: 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 ) {
59138: b280 cmpl %d0,%d1 <== NOT EXECUTED 5913a: 6500 0148 bcsw 59284 <_Timer_server_Body+0x1f4> <== 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 ) {
5913e: 6200 00be bhiw 591fe <_Timer_server_Body+0x16e> <== NOT EXECUTED
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
59142: 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 );
59146: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 5914a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5914c: 4e93 jsr %a3@ <== NOT EXECUTED
if ( timer == NULL ) {
5914e: 588f addql #4,%sp <== NOT EXECUTED 59150: 4a80 tstl %d0 <== NOT EXECUTED 59152: 672e beqs 59182 <_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 ) {
59154: 2040 moveal %d0,%a0 <== NOT EXECUTED 59156: 7c01 moveq #1,%d6 <== NOT EXECUTED 59158: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED 5915c: bc81 cmpl %d1,%d6 <== NOT EXECUTED 5915e: 6700 00c2 beqw 59222 <_Timer_server_Body+0x192> <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
59162: 7c03 moveq #3,%d6 <== NOT EXECUTED 59164: bc81 cmpl %d1,%d6 <== NOT EXECUTED 59166: 66de bnes 59146 <_Timer_server_Body+0xb6> <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
59168: 2040 moveal %d0,%a0 <== NOT EXECUTED 5916a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 5916e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 59170: 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 );
59172: 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 );
59176: 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 );
59178: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5917a: 4e93 jsr %a3@ <== NOT EXECUTED
if ( timer == NULL ) {
5917c: 588f addql #4,%sp <== NOT EXECUTED 5917e: 4a80 tstl %d0 <== NOT EXECUTED 59180: 66d2 bnes 59154 <_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 );
59182: 2004 movel %d4,%d0 <== NOT EXECUTED 59184: 40c1 movew %sr,%d1 <== NOT EXECUTED 59186: 8081 orl %d1,%d0 <== NOT EXECUTED 59188: 46c0 movew %d0,%sr <== NOT EXECUTED
tmp = ts->insert_chain;
5918a: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
if ( _Chain_Is_empty( insert_chain ) ) {
5918e: beae fff4 cmpl %fp@(-12),%d7 <== NOT EXECUTED 59192: 6700 0114 beqw 592a8 <_Timer_server_Body+0x218> <== NOT EXECUTED 59196: 7001 moveq #1,%d0 <== NOT EXECUTED
ts->insert_chain = NULL;
do_loop = false;
}
_ISR_Enable( level );
59198: 46c1 movew %d1,%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;
while ( do_loop ) {
5919a: 4a00 tstb %d0 <== NOT EXECUTED 5919c: 6600 ff74 bnew 59112 <_Timer_server_Body+0x82> <== 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 ) ) {
591a0: 202e ffd8 movel %fp@(-40),%d0 <== NOT EXECUTED 591a4: b0ae ffe8 cmpl %fp@(-24),%d0 <== NOT EXECUTED 591a8: 6700 0086 beqw 59230 <_Timer_server_Body+0x1a0> <== 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 );
591ac: 2204 movel %d4,%d1 <== NOT EXECUTED 591ae: 40c0 movew %sr,%d0 <== NOT EXECUTED 591b0: 8280 orl %d0,%d1 <== NOT EXECUTED 591b2: 46c1 movew %d1,%sr <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
591b4: 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))
591b8: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED 591bc: 6732 beqs 591f0 <_Timer_server_Body+0x160> <== NOT EXECUTED
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
591be: 2250 moveal %a0@,%a1 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
591c0: 2343 0004 movel %d3,%a1@(4) <== NOT EXECUTED
* service routine may remove a watchdog from the chain.
*/
_ISR_Disable( level );
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
591c4: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
591c8: 2d49 ffe8 movel %a1,%fp@(-24) <== NOT EXECUTED
_ISR_Enable( level );
591cc: 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 );
591ce: 2f28 0024 movel %a0@(36),%sp@- <== NOT EXECUTED 591d2: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED 591d6: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED 591da: 4e90 jsr %a0@ <== NOT EXECUTED
}
591dc: 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 );
591de: 2204 movel %d4,%d1 <== NOT EXECUTED 591e0: 40c0 movew %sr,%d0 <== NOT EXECUTED 591e2: 8280 orl %d0,%d1 <== NOT EXECUTED 591e4: 46c1 movew %d1,%sr <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
591e6: 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))
591ea: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED 591ee: 66ce bnes 591be <_Timer_server_Body+0x12e> <== NOT EXECUTED
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
_ISR_Enable( level );
} else {
_ISR_Enable( level );
591f0: 46c0 movew %d0,%sr <== NOT EXECUTED
Chain_Control *tmp; /* * 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;
591f2: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED 591f6: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED 591fa: 6000 ff16 braw 59112 <_Timer_server_Body+0x82> <== 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 );
591fe: 9280 subl %d0,%d1 <== NOT EXECUTED 59200: 2f01 movel %d1,%sp@- <== NOT EXECUTED 59202: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 59206: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED 5920a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 5920c: 4eb9 0005 d5f4 jsr 5d5f4 <_Watchdog_Adjust> <== NOT EXECUTED 59212: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 59216: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
watchdogs->last_snapshot = snapshot;
5921a: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 5921e: 6000 ff26 braw 59146 <_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 );
59222: 4868 0010 pea %a0@(16) <== NOT EXECUTED 59226: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59228: 4e94 jsr %a4@ <== NOT EXECUTED 5922a: 508f addql #8,%sp <== NOT EXECUTED 5922c: 6000 ff18 braw 59146 <_Timer_server_Body+0xb6> <== NOT EXECUTED
* the active flag of the timer server is true.
*/
(*watchdog->routine)( watchdog->id, watchdog->user_data );
}
} else {
ts->active = false;
59230: 4206 clrb %d6 <== NOT EXECUTED 59232: 1546 007c moveb %d6,%a2@(124) <== NOT EXECUTED 59236: 2039 0007 eb7c movel 7eb7c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5923c: 5280 addql #1,%d0 <== NOT EXECUTED 5923e: 23c0 0007 eb7c movel %d0,7eb7c <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Block until there is something to do.
*/
_Thread_Disable_dispatch();
_Thread_Set_state( ts->thread, STATES_DELAYING );
59244: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED 59248: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 5924a: 4eb9 0005 cf08 jsr 5cf08 <_Thread_Set_state> <== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
59250: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59252: 4eba fd64 jsr %pc@(58fb8 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
59256: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59258: 4eba fdc8 jsr %pc@(59022 <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED
_Thread_Enable_dispatch();
5925c: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
ts->active = true;
59262: 7001 moveq #1,%d0 <== NOT EXECUTED 59264: 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 );
59268: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED 5926c: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
59272: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED 59276: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED 5927c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 59280: 6000 fe88 braw 5910a <_Timer_server_Body+0x7a> <== 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 );
59284: 2f03 movel %d3,%sp@- <== NOT EXECUTED 59286: 2c00 movel %d0,%d6 <== NOT EXECUTED 59288: 9c81 subl %d1,%d6 <== NOT EXECUTED 5928a: 2f06 movel %d6,%sp@- <== NOT EXECUTED 5928c: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED 59290: 2f05 movel %d5,%sp@- <== NOT EXECUTED 59292: 4eb9 0005 d688 jsr 5d688 <_Watchdog_Adjust_to_chain> <== NOT EXECUTED 59298: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 5929c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
592a0: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 592a4: 6000 fea0 braw 59146 <_Timer_server_Body+0xb6> <== NOT EXECUTED
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
tmp = ts->insert_chain;
if ( _Chain_Is_empty( insert_chain ) ) {
ts->insert_chain = NULL;
592a8: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED
do_loop = false;
592ac: 4200 clrb %d0 <== NOT EXECUTED
}
_ISR_Enable( level );
592ae: 46c1 movew %d1,%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;
while ( do_loop ) {
592b0: 4a00 tstb %d0 <== NOT EXECUTED 592b2: 6600 fe5e bnew 59112 <_Timer_server_Body+0x82> <== NOT EXECUTED 592b6: 6000 fee8 braw 591a0 <_Timer_server_Body+0x110> <== NOT EXECUTED
00058fb8 <_Timer_server_Reset_interval_system_watchdog>:
}
static void _Timer_server_Reset_interval_system_watchdog(
Timer_server_Control *ts
)
{
58fb8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 58fbc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58fbe: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 58fc2: 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 );
58fc4: 240a movel %a2,%d2 <== NOT EXECUTED 58fc6: 5082 addql #8,%d2 <== NOT EXECUTED 58fc8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58fca: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_interval_system_watchdog( ts );
_ISR_Disable( level );
58fd0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 58fd6: 40c1 movew %sr,%d1 <== NOT EXECUTED 58fd8: 8081 orl %d1,%d0 <== NOT EXECUTED 58fda: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
58fdc: 200a movel %a2,%d0 <== NOT EXECUTED 58fde: 0680 0000 0034 addil #52,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
58fe4: 588f addql #4,%sp <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
58fe6: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED
ISR_Level level;
_Timer_server_Stop_interval_system_watchdog( ts );
_ISR_Disable( level );
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
58fea: b088 cmpl %a0,%d0 <== NOT EXECUTED 58fec: 6726 beqs 59014 <_Timer_server_Reset_interval_system_watchdog+0x5c><== NOT EXECUTED
Watchdog_Interval delta_interval =
58fee: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->Interval_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
58ff2: 46c1 movew %d1,%sr <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
58ff4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58ff6: 4879 0007 ec5c pea 7ec5c <_Watchdog_Ticks_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
58ffc: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
59000: 4eb9 0005 d710 jsr 5d710 <_Watchdog_Insert> <== NOT EXECUTED
delta_interval
);
} else {
_ISR_Enable( level );
}
}
59006: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5900a: 508f addql #8,%sp <== NOT EXECUTED 5900c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 59010: 4e5e unlk %fp <== NOT EXECUTED 59012: 4e75 rts <== NOT EXECUTED
_Watchdog_Insert_ticks(
&ts->Interval_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
59014: 46c1 movew %d1,%sr <== NOT EXECUTED
} }
59016: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5901a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5901e: 4e5e unlk %fp <== NOT EXECUTED
00059022 <_Timer_server_Reset_tod_system_watchdog>:
}
static void _Timer_server_Reset_tod_system_watchdog(
Timer_server_Control *ts
)
{
59022: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 59026: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59028: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5902c: 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 );
5902e: 240a movel %a2,%d2 <== NOT EXECUTED 59030: 0682 0000 0040 addil #64,%d2 <== NOT EXECUTED 59036: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59038: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_tod_system_watchdog( ts );
_ISR_Disable( level );
5903e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 59044: 40c1 movew %sr,%d1 <== NOT EXECUTED 59046: 8081 orl %d1,%d0 <== NOT EXECUTED 59048: 46c0 movew %d0,%sr <== NOT EXECUTED 5904a: 200a movel %a2,%d0 <== NOT EXECUTED 5904c: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
59052: 588f addql #4,%sp <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59054: 206a 0068 moveal %a2@(104),%a0 <== NOT EXECUTED
ISR_Level level;
_Timer_server_Stop_tod_system_watchdog( ts );
_ISR_Disable( level );
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
59058: b088 cmpl %a0,%d0 <== NOT EXECUTED 5905a: 6726 beqs 59082 <_Timer_server_Reset_tod_system_watchdog+0x60><== NOT EXECUTED
Watchdog_Interval delta_interval =
5905c: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->TOD_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
59060: 46c1 movew %d1,%sr <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
59062: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59064: 4879 0007 ec50 pea 7ec50 <_Watchdog_Seconds_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
5906a: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
5906e: 4eb9 0005 d710 jsr 5d710 <_Watchdog_Insert> <== NOT EXECUTED
delta_interval
);
} else {
_ISR_Enable( level );
}
}
59074: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 59078: 508f addql #8,%sp <== NOT EXECUTED 5907a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5907e: 4e5e unlk %fp <== NOT EXECUTED 59080: 4e75 rts <== NOT EXECUTED
_Watchdog_Insert_seconds(
&ts->TOD_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
59082: 46c1 movew %d1,%sr <== NOT EXECUTED
} }
59084: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 59088: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5908c: 4e5e unlk %fp <== NOT EXECUTED
000592ba <_Timer_server_Schedule_operation_method>:
static void _Timer_server_Schedule_operation_method(
Timer_server_Control *ts,
Timer_Control *timer
)
{
592ba: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 592be: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 592c2: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 592c6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( ts->insert_chain == NULL ) {
592ca: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 592ce: 671a beqs 592ea <_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 );
592d0: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 592d4: 2d48 000c movel %a0,%fp@(12) <== NOT EXECUTED
} }
592d8: 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 );
592de: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
} }
592e2: 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 );
592e4: 4ef9 0005 9c4c jmp 59c4c <_Chain_Append> <== NOT EXECUTED 592ea: 2039 0007 eb7c movel 7eb7c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 592f0: 5280 addql #1,%d0 <== NOT EXECUTED 592f2: 23c0 0007 eb7c movel %d0,7eb7c <_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 ) {
592f8: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 592fc: 7201 moveq #1,%d1 <== NOT EXECUTED 592fe: b280 cmpl %d0,%d1 <== NOT EXECUTED 59300: 6700 008a beqw 5938c <_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 ) {
59304: 7803 moveq #3,%d4 <== NOT EXECUTED 59306: b880 cmpl %d0,%d4 <== NOT EXECUTED 59308: 670e beqs 59318 <_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 );
}
}
5930a: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 59310: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
59312: 4ef9 0005 c52a jmp 5c52a <_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 );
59318: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 5931e: 40c2 movew %sr,%d2 <== NOT EXECUTED 59320: 8082 orl %d2,%d0 <== NOT EXECUTED 59322: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
59324: 260a movel %a2,%d3 <== NOT EXECUTED 59326: 0683 0000 006c addil #108,%d3 <== NOT EXECUTED
snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5932c: 2039 0007 ec26 movel 7ec26 <_TOD_Now>,%d0 <== NOT EXECUTED
last_snapshot = ts->TOD_watchdogs.last_snapshot;
59332: 222a 0074 movel %a2@(116),%d1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59336: 226a 0068 moveal %a2@(104),%a1 <== NOT EXECUTED
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
last_snapshot = ts->TOD_watchdogs.last_snapshot;
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
5933a: b689 cmpl %a1,%d3 <== NOT EXECUTED 5933c: 671c beqs 5935a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );
delta_interval = first_watchdog->delta_interval;
5933e: 2629 0010 movel %a1@(16),%d3 <== NOT EXECUTED
if ( snapshot > last_snapshot ) {
59342: b280 cmpl %d0,%d1 <== NOT EXECUTED 59344: 6400 00ba bccw 59400 <_Timer_server_Schedule_operation_method+0x146><== NOT EXECUTED
/*
* We advanced in time.
*/
delta = snapshot - last_snapshot;
59348: 2800 movel %d0,%d4 <== NOT EXECUTED 5934a: 9881 subl %d1,%d4 <== NOT EXECUTED
if (delta_interval > delta) {
5934c: b883 cmpl %d3,%d4 <== NOT EXECUTED 5934e: 6400 00bc bccw 5940c <_Timer_server_Schedule_operation_method+0x152><== NOT EXECUTED
delta_interval -= delta;
59352: 9684 subl %d4,%d3 <== NOT EXECUTED 59354: 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;
59356: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
}
ts->TOD_watchdogs.last_snapshot = snapshot;
5935a: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
_ISR_Enable( level );
5935e: 46c2 movew %d2,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
59360: 4868 0010 pea %a0@(16) <== NOT EXECUTED 59364: 486a 0068 pea %a2@(104) <== NOT EXECUTED 59368: 4eb9 0005 d710 jsr 5d710 <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
5936e: 508f addql #8,%sp <== NOT EXECUTED 59370: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED 59374: 6694 bnes 5930a <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
59376: 2f0a movel %a2,%sp@- <== NOT EXECUTED 59378: 4eba fca8 jsr %pc@(59022 <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED 5937c: 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 );
}
}
5937e: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 59384: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
59386: 4ef9 0005 c52a jmp 5c52a <_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 );
5938c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 59392: 40c3 movew %sr,%d3 <== NOT EXECUTED 59394: 8083 orl %d3,%d0 <== NOT EXECUTED 59396: 46c0 movew %d0,%sr <== NOT EXECUTED
snapshot = _Watchdog_Ticks_since_boot;
59398: 2039 0007 eca6 movel 7eca6 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED 5939e: 220a movel %a2,%d1 <== NOT EXECUTED 593a0: 0681 0000 0034 addil #52,%d1 <== NOT EXECUTED
last_snapshot = ts->Interval_watchdogs.last_snapshot;
593a6: 282a 003c movel %a2@(60),%d4 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
593aa: 226a 0030 moveal %a2@(48),%a1 <== NOT EXECUTED
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
snapshot = _Watchdog_Ticks_since_boot;
last_snapshot = ts->Interval_watchdogs.last_snapshot;
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
593ae: b289 cmpl %a1,%d1 <== NOT EXECUTED 593b0: 6712 beqs 593c4 <_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;
593b2: 2200 movel %d0,%d1 <== NOT EXECUTED 593b4: 9284 subl %d4,%d1 <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
593b6: 2429 0010 movel %a1@(16),%d2 <== NOT EXECUTED
if (delta_interval > delta) {
593ba: b481 cmpl %d1,%d2 <== NOT EXECUTED 593bc: 633a blss 593f8 <_Timer_server_Schedule_operation_method+0x13e><== NOT EXECUTED
delta_interval -= delta;
593be: 9481 subl %d1,%d2 <== NOT EXECUTED
} else {
delta_interval = 0;
}
first_watchdog->delta_interval = delta_interval;
593c0: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED
}
ts->Interval_watchdogs.last_snapshot = snapshot;
593c4: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_ISR_Enable( level );
593c8: 46c3 movew %d3,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
593ca: 4868 0010 pea %a0@(16) <== NOT EXECUTED 593ce: 486a 0030 pea %a2@(48) <== NOT EXECUTED 593d2: 4eb9 0005 d710 jsr 5d710 <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
593d8: 508f addql #8,%sp <== NOT EXECUTED 593da: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED 593de: 6600 ff2a bnew 5930a <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
593e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 593e4: 4eba fbd2 jsr %pc@(58fb8 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED 593e8: 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 );
}
}
593ea: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 593f0: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
593f2: 4ef9 0005 c52a jmp 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
593f8: 4282 clrl %d2 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
593fa: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED 593fe: 60c4 bras 593c4 <_Timer_server_Schedule_operation_method+0x10a><== NOT EXECUTED
}
} else {
/*
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
59400: d283 addl %d3,%d1 <== NOT EXECUTED
delta_interval += delta;
59402: 9280 subl %d0,%d1 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
59404: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED 59408: 6000 ff50 braw 5935a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
*/
delta = snapshot - last_snapshot;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
5940c: 4281 clrl %d1 <== NOT EXECUTED
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
5940e: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED 59412: 6000 ff46 braw 5935a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
00049584 <_Timespec_Add_to>:
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
49584: 4e56 0000 linkw %fp,#0 49588: 226e 0008 moveal %fp@(8),%a1 4958c: 2f0a movel %a2,%sp@- 4958e: 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;
49592: 206a 0004 moveal %a2@(4),%a0 49596: d1e9 0004 addal %a1@(4),%a0
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4959a: 2208 movel %a0,%d1
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
uint32_t seconds = add->tv_sec;
4959c: 2012 movel %a2@,%d0
/* Add the basics */
time->tv_sec += add->tv_sec;
4959e: d191 addl %d0,%a1@
time->tv_nsec += add->tv_nsec;
495a0: 2348 0004 movel %a0,%a1@(4)
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
495a4: b1fc 3b9a c9ff cmpal #999999999,%a0
495aa: 631a blss 495c6 <_Timespec_Add_to+0x42> <== ALWAYS TAKEN
495ac: 2051 moveal %a1@,%a0 <== NOT EXECUTED
*
* This routines adds two timespecs. The second argument is added
* to the first.
*/
uint32_t _Timespec_Add_to(
495ae: 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;
495b0: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED
time->tv_sec++;
seconds++;
495b6: 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 ) {
495b8: 0c81 3b9a c9ff cmpil #999999999,%d1 <== NOT EXECUTED 495be: 62ee bhis 495ae <_Timespec_Add_to+0x2a> <== NOT EXECUTED 495c0: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED 495c4: 2288 movel %a0,%a1@ <== NOT EXECUTED
time->tv_sec++;
seconds++;
}
return seconds;
}
495c6: 245f moveal %sp@+,%a2
495c8: 4e5e unlk %fp <== NOT EXECUTED
0004b0c8 <_Timespec_Divide>:
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b0c8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4b0cc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b0d0: 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;
4b0d4: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b0da: 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;
4b0de: 45f9 0005 c824 lea 5c824 <__muldi3>,%a2 <== NOT EXECUTED 4b0e4: 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;
4b0e6: 2a10 movel %a0@,%d5 <== NOT EXECUTED
left += lhs->tv_nsec;
4b0e8: 2828 0004 movel %a0@(4),%d4 <== NOT EXECUTED
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b0ec: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 4b0ee: 5bc0 smi %d0 <== NOT EXECUTED 4b0f0: 49c0 extbl %d0 <== NOT EXECUTED 4b0f2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b0f4: 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;
4b0f8: 4e92 jsr %a2@ <== NOT EXECUTED 4b0fa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b0fe: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b100: 2241 moveal %d1,%a1 <== NOT EXECUTED
right += rhs->tv_nsec;
4b102: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED 4b106: 5bc2 smi %d2 <== NOT EXECUTED 4b108: 49c2 extbl %d2 <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b10a: 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;
4b10e: 2208 movel %a0,%d1 <== NOT EXECUTED 4b110: d689 addl %a1,%d3 <== NOT EXECUTED 4b112: d581 addxl %d1,%d2 <== NOT EXECUTED
if ( right == 0 ) {
4b114: 6700 0086 beqw 4b19c <_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;
4b118: 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;
4b11e: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 4b124: 42a7 clrl %sp@- <== NOT EXECUTED 4b126: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b128: 5bc1 smi %d1 <== NOT EXECUTED 4b12a: 49c1 extbl %d1 <== NOT EXECUTED 4b12c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
left += lhs->tv_nsec;
4b12e: 2a04 movel %d4,%d5 <== NOT EXECUTED 4b130: 5bc4 smi %d4 <== NOT EXECUTED 4b132: 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;
4b134: 4e92 jsr %a2@ <== NOT EXECUTED 4b136: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b13a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b13c: 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;
4b13e: 2f3c 0001 86a0 movel #100000,%sp@- <== NOT EXECUTED 4b144: 2008 movel %a0,%d0 <== NOT EXECUTED 4b146: 2209 movel %a1,%d1 <== NOT EXECUTED 4b148: 42a7 clrl %sp@- <== NOT EXECUTED 4b14a: d285 addl %d5,%d1 <== NOT EXECUTED 4b14c: d184 addxl %d4,%d0 <== NOT EXECUTED 4b14e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b150: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b152: 4e92 jsr %a2@ <== NOT EXECUTED 4b154: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b158: 2e83 movel %d3,%sp@ <== NOT EXECUTED 4b15a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b15c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b15e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b160: 4e95 jsr %a5@ <== NOT EXECUTED 4b162: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b166: 2400 movel %d0,%d2 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b168: 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;
4b16c: 2601 movel %d1,%d3 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b16e: 42a7 clrl %sp@- <== NOT EXECUTED 4b170: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b172: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b174: 4e95 jsr %a5@ <== NOT EXECUTED 4b176: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b17a: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3> <== NOT EXECUTED 4b17e: 42a7 clrl %sp@- <== NOT EXECUTED
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
4b180: 2881 movel %d1,%a4@ <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b182: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b184: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b186: 4eb9 0005 d3fc jsr 5d3fc <__umoddi3> <== NOT EXECUTED 4b18c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b190: 2681 movel %d1,%a3@ <== NOT EXECUTED
}
4b192: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4b198: 4e5e unlk %fp <== NOT EXECUTED 4b19a: 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;
4b19c: 4294 clrl %a4@ <== NOT EXECUTED
*fval_percentage = 0;
4b19e: 4293 clrl %a3@ <== NOT EXECUTED
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
*fval_percentage = answer % 1000;
}
4b1a0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4b1a6: 4e5e unlk %fp <== NOT EXECUTED
...
0004b140 <_Timespec_Divide_by_integer>:
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b140: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4b144: 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;
4b148: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b14e: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b152: 47f9 0005 cb8c lea 5cb8c <__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;
4b158: 42a7 clrl %sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b15a: 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;
4b15e: 2f14 movel %a4@,%sp@- <== NOT EXECUTED 4b160: 5bc0 smi %d0 <== NOT EXECUTED 4b162: 49c0 extbl %d0 <== NOT EXECUTED 4b164: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b166: 4eb9 0005 c340 jsr 5c340 <__muldi3> <== NOT EXECUTED 4b16c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b170: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b172: 2241 moveal %d1,%a1 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b174: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b178: 2408 movel %a0,%d2 <== NOT EXECUTED 4b17a: 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;
4b17c: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED 4b180: 5bc0 smi %d0 <== NOT EXECUTED 4b182: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b184: 42a7 clrl %sp@- <== NOT EXECUTED 4b186: d681 addl %d1,%d3 <== NOT EXECUTED 4b188: d580 addxl %d0,%d2 <== NOT EXECUTED 4b18a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b18c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b18e: 4e93 jsr %a3@ <== NOT EXECUTED 4b190: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b194: 2400 movel %d0,%d2 <== NOT EXECUTED 4b196: 2601 movel %d1,%d3 <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b198: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 4b19e: 42a7 clrl %sp@- <== NOT EXECUTED 4b1a0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b1a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1a4: 4e93 jsr %a3@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b1a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b1aa: 2ebc 3b9a ca00 movel #1000000000,%sp@ <== NOT EXECUTED 4b1b0: 42a7 clrl %sp@- <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b1b2: 2481 movel %d1,%a2@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b1b4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b1b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b1b8: 4eb9 0005 cf18 jsr 5cf18 <__umoddi3> <== NOT EXECUTED 4b1be: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b1c2: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
4b1c6: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4b1cc: 4e5e unlk %fp <== NOT EXECUTED
0005ccd0 <_Timespec_From_ticks>:
struct timespec *time
)
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
5ccd0: 43f9 0005 f350 lea 5f350 <Configuration+0xc>,%a1 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5ccd6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
5ccda: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5ccde: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5cce2: 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;
5cce4: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5ccea: 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;
5ccee: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED 5ccf2: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
TOD_NANOSECONDS_PER_MICROSECOND;
}
5ccf6: 241f movel %sp@+,%d2 <== NOT EXECUTED 5ccf8: 4e5e unlk %fp <== NOT EXECUTED
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND;
5ccfa: 2080 movel %d0,%a0@ <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
5ccfc: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED 5cd02: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 5cd06: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
TOD_NANOSECONDS_PER_MICROSECOND;
}
00049e00 <_Timespec_Greater_than>:
bool _Timespec_Greater_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
49e00: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49e04: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 49e08: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec > rhs->tv_sec )
49e0c: 2211 movel %a1@,%d1 <== NOT EXECUTED 49e0e: 2010 movel %a0@,%d0 <== NOT EXECUTED 49e10: b081 cmpl %d1,%d0 <== NOT EXECUTED 49e12: 6d18 blts 49e2c <_Timespec_Greater_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec < rhs->tv_sec )
49e14: 6e10 bgts 49e26 <_Timespec_Greater_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
49e16: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 49e1a: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 49e1e: 5dc0 slt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49e20: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
49e22: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49e24: 4e75 rts <== NOT EXECUTED 49e26: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
if ( lhs->tv_sec < rhs->tv_sec )
return false;
49e28: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49e2a: 4e75 rts <== NOT EXECUTED 49e2c: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
49e2e: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
...
0005cd0c <_Timespec_Is_valid>:
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
const struct timespec *time
)
{
5cd0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5cd10: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !time )
5cd14: 4a88 tstl %a0 <== NOT EXECUTED 5cd16: 6718 beqs 5cd30 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_sec < 0 )
5cd18: 4a90 tstl %a0@ <== NOT EXECUTED 5cd1a: 6d14 blts 5cd30 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_nsec < 0 )
5cd1c: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 5cd20: 6d0e blts 5cd30 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
5cd22: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
5cd24: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 5cd2a: 53c0 sls %d0 <== NOT EXECUTED 5cd2c: 4480 negl %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
5cd2e: 4e75 rts <== NOT EXECUTED 5cd30: 4e5e unlk %fp <== NOT EXECUTED
if ( time->tv_sec < 0 )
return false;
if ( time->tv_nsec < 0 )
return false;
5cd32: 4200 clrb %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
...
0004ca20 <_Timespec_Less_than>:
bool _Timespec_Less_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
4ca20: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ca24: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4ca28: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec < rhs->tv_sec )
4ca2c: 2211 movel %a1@,%d1 <== NOT EXECUTED 4ca2e: 2010 movel %a0@,%d0 <== NOT EXECUTED 4ca30: b081 cmpl %d1,%d0 <== NOT EXECUTED 4ca32: 6e18 bgts 4ca4c <_Timespec_Less_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec > rhs->tv_sec )
4ca34: 6d10 blts 4ca46 <_Timespec_Less_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4ca36: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 4ca3a: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 4ca3e: 5ec0 sgt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4ca40: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4ca42: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4ca44: 4e75 rts <== NOT EXECUTED 4ca46: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
if ( lhs->tv_sec > rhs->tv_sec )
return false;
4ca48: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4ca4a: 4e75 rts <== NOT EXECUTED 4ca4c: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
4ca4e: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
...
000495cc <_Timespec_Subtract>:
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
495cc: 4e56 0000 linkw %fp,#0 495d0: 226e 0008 moveal %fp@(8),%a1 495d4: 2f0a movel %a2,%sp@- 495d6: 246e 000c moveal %fp@(12),%a2 495da: 206e 0010 moveal %fp@(16),%a0
if (end->tv_nsec < start->tv_nsec) {
495de: 222a 0004 movel %a2@(4),%d1 495e2: 2029 0004 movel %a1@(4),%d0
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
495e6: 2f02 movel %d2,%sp@-
if (end->tv_nsec < start->tv_nsec) {
495e8: b081 cmpl %d1,%d0
495ea: 6e14 bgts 49600 <_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;
495ec: 2412 movel %a2@,%d2 495ee: 9491 subl %a1@,%d2
result->tv_nsec = end->tv_nsec - start->tv_nsec;
495f0: 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;
495f2: 2082 movel %d2,%a0@
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
495f4: 241f movel %sp@+,%d2 495f6: 245f moveal %sp@+,%a2 495f8: 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;
495fa: 2141 0004 movel %d1,%a0@(4)
} }
495fe: 4e75 rts
struct timespec *result
)
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
49600: 2452 moveal %a2@,%a2 <== NOT EXECUTED 49602: 538a subql #1,%a2 <== NOT EXECUTED 49604: 95d1 subal %a1@,%a2 <== NOT EXECUTED
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
49606: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED 4960c: 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;
}
}
4960e: 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;
49610: 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;
}
}
49612: 245f moveal %sp@+,%a2 <== NOT EXECUTED 49614: 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;
49616: 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;
}
}
0004cdb0 <_Timespec_To_ticks>:
*/
uint32_t _Timespec_To_ticks(
const struct timespec *time
)
{
4cdb0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4cdb4: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4cdb8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
4cdbc: 2412 movel %a2@,%d2 <== NOT EXECUTED 4cdbe: 6606 bnes 4cdc6 <_Timespec_To_ticks+0x16> <== NOT EXECUTED 4cdc0: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 4cdc4: 673e beqs 4ce04 <_Timespec_To_ticks+0x54> <== NOT EXECUTED
return 0;
ticks = time->tv_sec * TOD_TICKS_PER_SECOND;
4cdc6: 4eb9 0004 e6f8 jsr 4e6f8 <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4cdcc: 2239 0005 e450 movel 5e450 <Configuration+0xc>,%d1 <== NOT EXECUTED 4cdd2: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED 4cdd8: 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;
4cddc: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4cde0: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 4cde4: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED 4cde8: d083 addl %d3,%d0 <== NOT EXECUTED
if (ticks)
4cdea: 670a beqs 4cdf6 <_Timespec_To_ticks+0x46> <== NOT EXECUTED
return ticks;
return 1;
}
4cdec: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4cdf2: 4e5e unlk %fp <== NOT EXECUTED 4cdf4: 4e75 rts <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
if (ticks)
return ticks;
return 1;
4cdf6: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
}
4cdfa: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4ce00: 4e5e unlk %fp <== NOT EXECUTED 4ce02: 4e75 rts <== NOT EXECUTED
)
{
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
return 0;
4ce04: 4280 clrl %d0 <== NOT EXECUTED
if (ticks)
return ticks;
return 1;
}
4ce06: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4ce0c: 4e5e unlk %fp <== NOT EXECUTED
0004975e <_User_extensions_Fatal>:
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
4975e: 4e56 fff0 linkw %fp,#-16 49762: 48d7 041c moveml %d2-%d4/%a2,%sp@ 49766: 242e 0008 movel %fp@(8),%d2 4976a: 262e 0010 movel %fp@(16),%d3
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
}
}
4976e: 2479 0005 fe74 moveal 5fe74 <_User_extensions_List+0x8>,%a2
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
49774: 182e 000f moveb %fp@(15),%d4
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49778: b5fc 0005 fe6c cmpal #392812,%a2
4977e: 6726 beqs 497a6 <_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 );
49780: 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 )
49786: 206a 0030 moveal %a2@(48),%a0 4978a: 4a88 tstl %a0
4978c: 670c beqs 4979a <_User_extensions_Fatal+0x3c>
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
4978e: 2f03 movel %d3,%sp@- 49790: 2f04 movel %d4,%sp@- 49792: 2f02 movel %d2,%sp@- 49794: 4e90 jsr %a0@
49796: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
4979a: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
4979e: b5fc 0005 fe6c cmpal #392812,%a2
497a4: 66e0 bnes 49786 <_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 );
}
}
497a6: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 497ac: 4e5e unlk %fp <== NOT EXECUTED
0004961c <_User_extensions_Handler_initialization>:
#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <string.h>
void _User_extensions_Handler_initialization(void)
{
4961c: 4e56 ffec linkw %fp,#-20
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
49620: 203c 0005 fe70 movel #392816,%d0 49626: 23c0 0005 fe6c movel %d0,5fe6c <_User_extensions_List>
head->previous = NULL; tail->previous = head;
4962c: 203c 0005 fe6c movel #392812,%d0 49632: 23c0 0005 fe74 movel %d0,5fe74 <_User_extensions_List+0x8>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
49638: 203c 0005 fd00 movel #392448,%d0 4963e: 23c0 0005 fcfc movel %d0,5fcfc <_User_extensions_Switches_list>
head->previous = NULL; tail->previous = head;
49644: 203c 0005 fcfc movel #392444,%d0
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4964a: 42b9 0005 fe70 clrl 5fe70 <_User_extensions_List+0x4> 49650: 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;
49654: 2439 0005 e47e movel 5e47e <Configuration+0x3a>,%d2
initial_extensions = Configuration.User_extension_table;
4965a: 2639 0005 e482 movel 5e482 <Configuration+0x3e>,%d3 49660: 42b9 0005 fd00 clrl 5fd00 <_User_extensions_Switches_list+0x4>
tail->previous = head;
49666: 23c0 0005 fd04 movel %d0,5fd04 <_User_extensions_Switches_list+0x8>
_Chain_Initialize_empty( &_User_extensions_List );
_Chain_Initialize_empty( &_User_extensions_Switches_list );
if ( initial_extensions ) {
4966c: 4a83 tstl %d3
4966e: 6764 beqs 496d4 <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
extension = (User_extensions_Control *)
_Workspace_Allocate_or_fatal_error(
49670: 7834 moveq #52,%d4 49672: 4c02 4800 mulsl %d2,%d4 49676: 2f04 movel %d4,%sp@- 49678: 4eb9 0004 9bd2 jsr 49bd2 <_Workspace_Allocate_or_fatal_error> 4967e: 2440 moveal %d0,%a2
number_of_extensions * sizeof( User_extensions_Control )
);
memset (
49680: 2f04 movel %d4,%sp@- 49682: 42a7 clrl %sp@- 49684: 2f00 movel %d0,%sp@- 49686: 4eb9 0004 f288 jsr 4f288 <memset>
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
4968c: 4fef 0010 lea %sp@(16),%sp 49690: 4a82 tstl %d2
49692: 6740 beqs 496d4 <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
49694: 4284 clrl %d4 49696: 47f9 0004 ce10 lea 4ce10 <_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;
4969c: 2043 moveal %d3,%a0 4969e: 5284 addql #1,%d4 496a0: 0683 0000 0020 addil #32,%d3 496a6: 2558 0014 movel %a0@+,%a2@(20) 496aa: 2558 0018 movel %a0@+,%a2@(24) 496ae: 2558 001c movel %a0@+,%a2@(28) 496b2: 2558 0020 movel %a0@+,%a2@(32) 496b6: 2558 0024 movel %a0@+,%a2@(36) 496ba: 2558 0028 movel %a0@+,%a2@(40) 496be: 2558 002c movel %a0@+,%a2@(44) 496c2: 2550 0030 movel %a0@,%a2@(48)
_User_extensions_Add_set( extension );
496c6: 2f0a movel %a2,%sp@-
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
496c8: 45ea 0034 lea %a2@(52),%a2 496cc: 4e93 jsr %a3@
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
496ce: 588f addql #4,%sp 496d0: b882 cmpl %d2,%d4
496d2: 65c8 bcss 4969c <_User_extensions_Handler_initialization+0x80>
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
}
}
}
496d4: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 496da: 4e5e unlk %fp
...
0004ae7c <_User_extensions_Remove_set>:
#include <rtems/score/userext.h>
void _User_extensions_Remove_set (
User_extensions_Control *the_extension
)
{
4ae7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ae80: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ae82: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
_Chain_Extract( &the_extension->Node );
4ae86: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ae88: 4eb9 0004 8618 jsr 48618 <_Chain_Extract> <== NOT EXECUTED
/*
* If a switch handler is present, remove it.
*/
if ( the_extension->Callouts.thread_switch != NULL )
4ae8e: 588f addql #4,%sp <== NOT EXECUTED 4ae90: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED 4ae94: 6712 beqs 4aea8 <_User_extensions_Remove_set+0x2c><== NOT EXECUTED
_Chain_Extract( &the_extension->Switch.Node );
4ae96: 508a addql #8,%a2 <== NOT EXECUTED 4ae98: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4ae9c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aea0: 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 );
4aea2: 4ef9 0004 8618 jmp 48618 <_Chain_Extract> <== NOT EXECUTED
}
4aea8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aeac: 4e5e unlk %fp <== NOT EXECUTED
000496e0 <_User_extensions_Thread_begin>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
496e0: 4e56 0000 linkw %fp,#0 496e4: 2f0a movel %a2,%sp@-
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
}
}
496e6: 2479 0005 fe6c moveal 5fe6c <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
496ec: 2f02 movel %d2,%sp@- 496ee: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
496f2: b5fc 0005 fe70 cmpal #392816,%a2
496f8: 6718 beqs 49712 <_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 )
496fa: 206a 0028 moveal %a2@(40),%a0 496fe: 4a88 tstl %a0
49700: 6706 beqs 49708 <_User_extensions_Thread_begin+0x28>
(*the_extension->Callouts.thread_begin)( executing );
49702: 2f02 movel %d2,%sp@- 49704: 4e90 jsr %a0@ 49706: 588f addql #4,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
49708: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4970a: b5fc 0005 fe70 cmpal #392816,%a2
49710: 66e8 bnes 496fa <_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 );
}
}
49712: 242e fff8 movel %fp@(-8),%d2 49716: 246e fffc moveal %fp@(-4),%a2
4971a: 4e5e unlk %fp <== NOT EXECUTED
000497b0 <_User_extensions_Thread_create>:
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
497b0: 4e56 0000 linkw %fp,#0 497b4: 2f0a movel %a2,%sp@-
return false;
}
}
return true;
}
497b6: 2479 0005 fe6c moveal 5fe6c <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
497bc: 2f02 movel %d2,%sp@- 497be: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
497c2: b5fc 0005 fe70 cmpal #392816,%a2
497c8: 6722 beqs 497ec <_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 ) {
497ca: 206a 0014 moveal %a2@(20),%a0 497ce: 4a88 tstl %a0
497d0: 6710 beqs 497e2 <_User_extensions_Thread_create+0x32>
status = (*the_extension->Callouts.thread_create)(
497d2: 2f02 movel %d2,%sp@- 497d4: 2f39 0006 0186 movel 60186 <_Per_CPU_Information+0xc>,%sp@- 497da: 4e90 jsr %a0@
_Thread_Executing,
the_thread
);
if ( !status )
497dc: 508f addql #8,%sp 497de: 4a00 tstb %d0
497e0: 6718 beqs 497fa <_User_extensions_Thread_create+0x4a><== NEVER TAKEN
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
497e2: 2452 moveal %a2@,%a2
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
497e4: b5fc 0005 fe70 cmpal #392816,%a2
497ea: 66de bnes 497ca <_User_extensions_Thread_create+0x1a>
return false;
}
}
return true;
}
497ec: 242e fff8 movel %fp@(-8),%d2 497f0: 246e fffc moveal %fp@(-4),%a2 497f4: 4e5e unlk %fp
if ( !status )
return false;
}
}
return true;
497f6: 7001 moveq #1,%d0
}
497f8: 4e75 rts
497fa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 497fe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49802: 4e5e unlk %fp <== NOT EXECUTED
status = (*the_extension->Callouts.thread_create)(
_Thread_Executing,
the_thread
);
if ( !status )
return false;
49804: 4200 clrb %d0 <== NOT EXECUTED
}
}
return true;
}
00049808 <_User_extensions_Thread_delete>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
49808: 4e56 0000 linkw %fp,#0 4980c: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
4980e: 2479 0005 fe74 moveal 5fe74 <_User_extensions_List+0x8>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
49814: 2f02 movel %d2,%sp@- 49816: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
4981a: b5fc 0005 fe6c cmpal #392812,%a2
49820: 6720 beqs 49842 <_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 )
49822: 206a 0020 moveal %a2@(32),%a0 49826: 4a88 tstl %a0
49828: 670c beqs 49836 <_User_extensions_Thread_delete+0x2e><== NEVER TAKEN
(*the_extension->Callouts.thread_delete)(
4982a: 2f02 movel %d2,%sp@- 4982c: 2f39 0006 0186 movel 60186 <_Per_CPU_Information+0xc>,%sp@- 49832: 4e90 jsr %a0@ 49834: 508f addql #8,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
49836: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
4983a: b5fc 0005 fe6c cmpal #392812,%a2
49840: 66e0 bnes 49822 <_User_extensions_Thread_delete+0x1a>
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
49842: 242e fff8 movel %fp@(-8),%d2 49846: 246e fffc moveal %fp@(-4),%a2 4984a: 4e5e unlk %fp
...
0004971e <_User_extensions_Thread_exitted>:
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
4971e: 4e56 0000 linkw %fp,#0 49722: 2f0a movel %a2,%sp@-
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
}
}
49724: 2479 0005 fe74 moveal 5fe74 <_User_extensions_List+0x8>,%a2
}
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
4972a: 2f02 movel %d2,%sp@- 4972c: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49730: b5fc 0005 fe6c cmpal #392812,%a2
49736: 671a beqs 49752 <_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 )
49738: 206a 002c moveal %a2@(44),%a0 4973c: 4a88 tstl %a0
4973e: 6706 beqs 49746 <_User_extensions_Thread_exitted+0x28>
(*the_extension->Callouts.thread_exitted)( executing );
49740: 2f02 movel %d2,%sp@- 49742: 4e90 jsr %a0@ 49744: 588f addql #4,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
49746: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
4974a: b5fc 0005 fe6c cmpal #392812,%a2
49750: 66e6 bnes 49738 <_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 );
}
}
49752: 242e fff8 movel %fp@(-8),%d2 49756: 246e fffc moveal %fp@(-4),%a2
4975a: 4e5e unlk %fp <== NOT EXECUTED
0004a4f4 <_User_extensions_Thread_restart>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a4f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a4f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a4fa: 2479 0006 0e14 moveal 60e14 <_User_extensions_List>,%a2 <== NOT EXECUTED
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a500: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a502: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4a506: b5fc 0006 0e18 cmpal #396824,%a2 <== NOT EXECUTED 4a50c: 671e beqs 4a52c <_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 )
4a50e: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 4a512: 4a88 tstl %a0 <== NOT EXECUTED 4a514: 670c beqs 4a522 <_User_extensions_Thread_restart+0x2e><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
4a516: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a518: 2f39 0006 112e movel 6112e <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4a51e: 4e90 jsr %a0@ <== NOT EXECUTED 4a520: 508f addql #8,%sp <== NOT EXECUTED
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
4a522: 2452 moveal %a2@,%a2 <== NOT EXECUTED
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4a524: b5fc 0006 0e18 cmpal #396824,%a2 <== NOT EXECUTED 4a52a: 66e2 bnes 4a50e <_User_extensions_Thread_restart+0x1a><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a52c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4a530: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4a534: 4e5e unlk %fp <== NOT EXECUTED
00049850 <_User_extensions_Thread_start>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
49850: 4e56 0000 linkw %fp,#0 49854: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
49856: 2479 0005 fe6c moveal 5fe6c <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
4985c: 2f02 movel %d2,%sp@- 4985e: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
49862: b5fc 0005 fe70 cmpal #392816,%a2
49868: 671e beqs 49888 <_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 )
4986a: 206a 0018 moveal %a2@(24),%a0 4986e: 4a88 tstl %a0
49870: 670c beqs 4987e <_User_extensions_Thread_start+0x2e>
(*the_extension->Callouts.thread_start)(
49872: 2f02 movel %d2,%sp@- 49874: 2f39 0006 0186 movel 60186 <_Per_CPU_Information+0xc>,%sp@- 4987a: 4e90 jsr %a0@ 4987c: 508f addql #8,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
4987e: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
49880: b5fc 0005 fe70 cmpal #392816,%a2
49886: 66e2 bnes 4986a <_User_extensions_Thread_start+0x1a>
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
49888: 242e fff8 movel %fp@(-8),%d2 4988c: 246e fffc moveal %fp@(-4),%a2
49890: 4e5e unlk %fp <== NOT EXECUTED
00049894 <_User_extensions_Thread_switch>:
void _User_extensions_Thread_switch (
Thread_Control *executing,
Thread_Control *heir
)
{
49894: 4e56 fff4 linkw %fp,#-12 49898: 48d7 040c moveml %d2-%d3/%a2,%sp@ 4989c: 262e 0008 movel %fp@(8),%d3 498a0: 242e 000c movel %fp@(12),%d2
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
498a4: 2479 0005 fcfc moveal 5fcfc <_User_extensions_Switches_list>,%a2
)
{
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _Chain_First( &_User_extensions_Switches_list );
498aa: b5fc 0005 fd00 cmpal #392448,%a2
498b0: 6716 beqs 498c8 <_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 );
498b2: 2f02 movel %d2,%sp@- 498b4: 2f03 movel %d3,%sp@- 498b6: 206a 0008 moveal %a2@(8),%a0 498ba: 4e90 jsr %a0@
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _Chain_First( &_User_extensions_Switches_list );
!_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
the_node = the_node->next ) {
498bc: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _Chain_First( &_User_extensions_Switches_list );
498be: 508f addql #8,%sp 498c0: b5fc 0005 fd00 cmpal #392448,%a2
498c6: 66ea bnes 498b2 <_User_extensions_Thread_switch+0x1e><== NEVER TAKEN
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
498c8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 498ce: 4e5e unlk %fp
...
0004b4f8 <_Watchdog_Adjust>:
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b4f8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4b4fc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4b500: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b504: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED 4b50a: 2004 movel %d4,%d0 <== NOT EXECUTED
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b50c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 4b510: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b514: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b516: 8081 orl %d1,%d0 <== NOT EXECUTED 4b518: 46c0 movew %d0,%sr <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
4b51a: 244b moveal %a3,%a2 <== NOT EXECUTED 4b51c: 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 ) ) {
4b51e: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 4b520: 6748 beqs 4b56a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
4b522: 4a89 tstl %a1 <== NOT EXECUTED 4b524: 6650 bnes 4b576 <_Watchdog_Adjust+0x7e> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b526: 4a82 tstl %d2 <== NOT EXECUTED 4b528: 6740 beqs 4b56a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b52a: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 4b52e: 49f9 0004 b774 lea 4b774 <_Watchdog_Tickle>,%a4 <== NOT EXECUTED 4b534: b682 cmpl %d2,%d3 <== NOT EXECUTED 4b536: 622c bhis 4b564 <_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;
4b538: 7001 moveq #1,%d0 <== NOT EXECUTED 4b53a: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
_ISR_Enable( level );
4b53e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Watchdog_Tickle( header );
4b540: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b542: 4e94 jsr %a4@ <== NOT EXECUTED
_ISR_Disable( level );
4b544: 2004 movel %d4,%d0 <== NOT EXECUTED 4b546: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b548: 8081 orl %d1,%d0 <== NOT EXECUTED 4b54a: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _Chain_Is_empty( header ) )
4b54c: 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;
4b54e: 9483 subl %d3,%d2 <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
4b550: 2013 movel %a3@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
4b552: 2040 moveal %d0,%a0 <== NOT EXECUTED
_Watchdog_Tickle( header );
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
4b554: b08a cmpl %a2,%d0 <== NOT EXECUTED 4b556: 6712 beqs 4b56a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b558: 4a82 tstl %d2 <== NOT EXECUTED 4b55a: 670e beqs 4b56a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b55c: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 4b560: b483 cmpl %d3,%d2 <== NOT EXECUTED 4b562: 64d4 bccs 4b538 <_Watchdog_Adjust+0x40> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval -= units;
4b564: 9682 subl %d2,%d3 <== NOT EXECUTED 4b566: 2143 0010 movel %d3,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b56a: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b56c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4b572: 4e5e unlk %fp <== NOT EXECUTED 4b574: 4e75 rts <== NOT EXECUTED
* unmodified across that call.
*
* Till Straumann, 7/2003
*/
if ( !_Chain_Is_empty( header ) ) {
switch ( direction ) {
4b576: 7001 moveq #1,%d0 <== NOT EXECUTED 4b578: b089 cmpl %a1,%d0 <== NOT EXECUTED 4b57a: 66ee bnes 4b56a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
4b57c: d5a8 0010 addl %d2,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b580: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b582: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4b588: 4e5e unlk %fp <== NOT EXECUTED
0005d688 <_Watchdog_Adjust_to_chain>:
Chain_Control *header,
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
5d688: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5d68c: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 5d690: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 5d694: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 5d698: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
Watchdog_Interval units = units_arg;
ISR_Level level;
Watchdog_Control *first;
if ( units <= 0 ) {
5d69c: 6760 beqs 5d6fe <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
return;
}
_ISR_Disable( level );
5d69e: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED 5d6a4: 2003 movel %d3,%d0 <== NOT EXECUTED 5d6a6: 40c2 movew %sr,%d2 <== NOT EXECUTED 5d6a8: 8082 orl %d2,%d0 <== NOT EXECUTED 5d6aa: 46c0 movew %d0,%sr <== NOT EXECUTED 5d6ac: 2a41 moveal %d1,%a5 <== NOT EXECUTED 5d6ae: 205d moveal %a5@+,%a0 <== NOT EXECUTED
while ( 1 ) {
if ( units <= 0 ) {
break;
}
if ( _Chain_Is_empty( header ) ) {
5d6b0: bbc8 cmpal %a0,%a5 <== NOT EXECUTED 5d6b2: 6748 beqs 5d6fc <_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 ) {
5d6b4: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED 5d6b8: b880 cmpl %d0,%d4 <== NOT EXECUTED 5d6ba: 654a bcss 5d706 <_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;
5d6bc: 9880 subl %d0,%d4 <== NOT EXECUTED
first->delta_interval = 0;
5d6be: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
5d6c2: 2850 moveal %a0@,%a4 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
5d6c4: 2009 movel %a1,%d0 <== NOT EXECUTED 5d6c6: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
5d6c8: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
next->previous = previous;
5d6cc: 294b 0004 movel %a3,%a4@(4) <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
5d6d0: 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;
5d6d4: 268c movel %a4,%a3@ <== NOT EXECUTED
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
5d6d6: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
5d6da: 2080 movel %d0,%a0@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
5d6dc: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
5d6e0: 2488 movel %a0,%a2@ <== NOT EXECUTED
while ( 1 ) {
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
5d6e2: 2003 movel %d3,%d0 <== NOT EXECUTED 5d6e4: 46c2 movew %d2,%sr <== NOT EXECUTED 5d6e6: 8082 orl %d2,%d0 <== NOT EXECUTED 5d6e8: 46c0 movew %d0,%sr <== NOT EXECUTED
break;
}
}
_ISR_Enable( level );
}
5d6ea: 2441 moveal %d1,%a2 <== NOT EXECUTED 5d6ec: 2052 moveal %a2@,%a0 <== NOT EXECUTED
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
if ( _Chain_Is_empty( header ) )
5d6ee: b1cd cmpal %a5,%a0 <== NOT EXECUTED 5d6f0: 6706 beqs 5d6f8 <_Watchdog_Adjust_to_chain+0x70> <== NOT EXECUTED
break;
first = _Watchdog_First( header );
if ( first->delta_interval != 0 )
5d6f2: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED 5d6f6: 67ca beqs 5d6c2 <_Watchdog_Adjust_to_chain+0x3a> <== NOT EXECUTED
}
_ISR_Disable( level );
while ( 1 ) {
if ( units <= 0 ) {
5d6f8: 4a84 tstl %d4 <== NOT EXECUTED 5d6fa: 66b4 bnes 5d6b0 <_Watchdog_Adjust_to_chain+0x28> <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d6fc: 46c2 movew %d2,%sr <== NOT EXECUTED
}
5d6fe: 4cd7 3c1c moveml %sp@,%d2-%d4/%a2-%a5 <== NOT EXECUTED 5d702: 4e5e unlk %fp <== NOT EXECUTED 5d704: 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;
5d706: 9084 subl %d4,%d0 <== NOT EXECUTED 5d708: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d70c: 46c2 movew %d2,%sr <== NOT EXECUTED 5d70e: 60ee bras 5d6fe <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
000498d4 <_Watchdog_Insert>:
void _Watchdog_Insert(
Chain_Control *header,
Watchdog_Control *the_watchdog
)
{
498d4: 4e56 ffec linkw %fp,#-20 498d8: 226e 000c moveal %fp@(12),%a1 498dc: 48d7 043c moveml %d2-%d5/%a2,%sp@ 498e0: 246e 0008 moveal %fp@(8),%a2
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
_ISR_Disable( level );
498e4: 2a3c 0000 0700 movel #1792,%d5 498ea: 2005 movel %d5,%d0
Watchdog_Control *after;
uint32_t insert_isr_nest_level;
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
498ec: 2839 0006 0182 movel 60182 <_Per_CPU_Information+0x8>,%d4
_ISR_Disable( level );
498f2: 40c3 movew %sr,%d3 498f4: 8083 orl %d3,%d0 498f6: 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 ) {
498f8: 4aa9 0008 tstl %a1@(8) 498fc: 6600 00c6 bnew 499c4 <_Watchdog_Insert+0xf0>
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
_Watchdog_Sync_count++;
49900: 2039 0005 fe1e movel 5fe1e <_Watchdog_Sync_count>,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
49906: 7201 moveq #1,%d1
_Watchdog_Sync_count++;
49908: 5280 addql #1,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
4990a: 2341 0008 movel %d1,%a1@(8)
_Watchdog_Sync_count++;
4990e: 23c0 0005 fe1e movel %d0,5fe1e <_Watchdog_Sync_count>
restart:
delta_interval = the_watchdog->initial;
49914: 2029 000c movel %a1@(12),%d0
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
49918: 2052 moveal %a2@,%a0
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
4991a: 6764 beqs 49980 <_Watchdog_Insert+0xac> <== NEVER TAKEN
4991c: 4a90 tstl %a0@
4991e: 6760 beqs 49980 <_Watchdog_Insert+0xac> <== ALWAYS TAKEN
break;
if ( delta_interval < after->delta_interval ) {
49920: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED 49924: b280 cmpl %d0,%d1 <== NOT EXECUTED 49926: 6252 bhis 4997a <_Watchdog_Insert+0xa6> <== NOT EXECUTED
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
49928: 2405 movel %d5,%d2 <== NOT EXECUTED 4992a: 46c3 movew %d3,%sr <== NOT EXECUTED 4992c: 8483 orl %d3,%d2 <== NOT EXECUTED 4992e: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49930: 7401 moveq #1,%d2 <== NOT EXECUTED 49932: b4a9 0008 cmpl %a1@(8),%d2 <== NOT EXECUTED 49936: 666e bnes 499a6 <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49938: 2439 0005 fdbc movel 5fdbc <_Watchdog_Sync_level>,%d2 <== NOT EXECUTED 4993e: b484 cmpl %d4,%d2 <== NOT EXECUTED 49940: 6230 bhis 49972 <_Watchdog_Insert+0x9e> <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
49942: 9081 subl %d1,%d0 <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
49944: 2050 moveal %a0@,%a0 <== NOT EXECUTED
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
49946: 4a80 tstl %d0 <== NOT EXECUTED 49948: 6736 beqs 49980 <_Watchdog_Insert+0xac> <== NOT EXECUTED 4994a: 4a90 tstl %a0@ <== NOT EXECUTED 4994c: 6732 beqs 49980 <_Watchdog_Insert+0xac> <== NOT EXECUTED
break;
if ( delta_interval < after->delta_interval ) {
4994e: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED 49952: b081 cmpl %d1,%d0 <== NOT EXECUTED 49954: 6524 bcss 4997a <_Watchdog_Insert+0xa6> <== NOT EXECUTED
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
49956: 2405 movel %d5,%d2 <== NOT EXECUTED 49958: 46c3 movew %d3,%sr <== NOT EXECUTED 4995a: 8483 orl %d3,%d2 <== NOT EXECUTED 4995c: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
4995e: 9081 subl %d1,%d0 <== NOT EXECUTED
_ISR_Flash( level );
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49960: 7201 moveq #1,%d1 <== NOT EXECUTED 49962: b2a9 0008 cmpl %a1@(8),%d1 <== NOT EXECUTED 49966: 663e bnes 499a6 <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49968: 2239 0005 fdbc movel 5fdbc <_Watchdog_Sync_level>,%d1 <== NOT EXECUTED 4996e: b284 cmpl %d4,%d1 <== NOT EXECUTED 49970: 63d2 blss 49944 <_Watchdog_Insert+0x70> <== NOT EXECUTED
_Watchdog_Sync_level = insert_isr_nest_level;
49972: 23c4 0005 fdbc movel %d4,5fdbc <_Watchdog_Sync_level> <== NOT EXECUTED
goto restart;
49978: 609a bras 49914 <_Watchdog_Insert+0x40> <== NOT EXECUTED
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
break;
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
4997a: 9280 subl %d0,%d1 <== NOT EXECUTED 4997c: 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 );
49980: 2068 0004 moveal %a0@(4),%a0
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_ACTIVE;
49984: 7402 moveq #2,%d2
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
49986: 2450 moveal %a0@,%a2
}
}
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
49988: 2340 0010 movel %d0,%a1@(16)
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
the_watchdog->start_time = _Watchdog_Ticks_since_boot;
4998c: 2039 0005 fe22 movel 5fe22 <_Watchdog_Ticks_since_boot>,%d0 49992: 2342 0008 movel %d2,%a1@(8)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
49996: 2348 0004 movel %a0,%a1@(4)
before_node = after_node->next; after_node->next = the_node;
4999a: 2089 movel %a1,%a0@
the_node->next = before_node; before_node->previous = the_node;
4999c: 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;
499a0: 228a movel %a2,%a1@ 499a2: 2340 0014 movel %d0,%a1@(20)
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
499a6: 23c4 0005 fdbc movel %d4,5fdbc <_Watchdog_Sync_level>
_Watchdog_Sync_count--;
499ac: 2039 0005 fe1e movel 5fe1e <_Watchdog_Sync_count>,%d0 499b2: 5380 subql #1,%d0 499b4: 23c0 0005 fe1e movel %d0,5fe1e <_Watchdog_Sync_count>
_ISR_Enable( level );
499ba: 46c3 movew %d3,%sr
}
499bc: 4cd7 043c moveml %sp@,%d2-%d5/%a2 499c0: 4e5e unlk %fp 499c2: 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 );
499c4: 46c3 movew %d3,%sr <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
499c6: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED 499ca: 4e5e unlk %fp <== NOT EXECUTED
...
00049a1c <_Watchdog_Remove>:
{
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
49a1c: 203c 0000 0700 movel #1792,%d0
*/
Watchdog_States _Watchdog_Remove(
Watchdog_Control *the_watchdog
)
{
49a22: 4e56 0000 linkw %fp,#0 49a26: 206e 0008 moveal %fp@(8),%a0 49a2a: 2f0a movel %a2,%sp@- 49a2c: 2f02 movel %d2,%sp@-
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
49a2e: 40c1 movew %sr,%d1 49a30: 8081 orl %d1,%d0 49a32: 46c0 movew %d0,%sr
previous_state = the_watchdog->state;
49a34: 2028 0008 movel %a0@(8),%d0
switch ( previous_state ) {
49a38: 7401 moveq #1,%d2 49a3a: b480 cmpl %d0,%d2
49a3c: 6764 beqs 49aa2 <_Watchdog_Remove+0x86> <== NEVER TAKEN
49a3e: 6314 blss 49a54 <_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;
49a40: 2279 0005 fe22 moveal 5fe22 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED 49a46: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
49a4a: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state ); }
49a4c: 241f movel %sp@+,%d2 <== NOT EXECUTED 49a4e: 245f moveal %sp@+,%a2 <== NOT EXECUTED 49a50: 4e5e unlk %fp <== NOT EXECUTED 49a52: 4e75 rts <== NOT EXECUTED
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
previous_state = the_watchdog->state;
switch ( previous_state ) {
49a54: 143c 0003 moveb #3,%d2 49a58: b480 cmpl %d0,%d2
49a5a: 65e4 bcss 49a40 <_Watchdog_Remove+0x24> <== NEVER TAKEN
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
_ISR_Enable( level );
return( previous_state );
}
49a5c: 2250 moveal %a0@,%a1
break;
case WATCHDOG_ACTIVE:
case WATCHDOG_REMOVE_IT:
the_watchdog->state = WATCHDOG_INACTIVE;
49a5e: 42a8 0008 clrl %a0@(8)
next_watchdog = _Watchdog_Next( the_watchdog );
if ( _Watchdog_Next(next_watchdog) )
49a62: 4a91 tstl %a1@
49a64: 6708 beqs 49a6e <_Watchdog_Remove+0x52> <== ALWAYS TAKEN
next_watchdog->delta_interval += the_watchdog->delta_interval;
49a66: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED 49a6a: d5a9 0010 addl %d2,%a1@(16) <== NOT EXECUTED
if ( _Watchdog_Sync_count )
49a6e: 2479 0005 fe1e moveal 5fe1e <_Watchdog_Sync_count>,%a2 49a74: 4a8a tstl %a2
49a76: 670c beqs 49a84 <_Watchdog_Remove+0x68> <== ALWAYS TAKEN
_Watchdog_Sync_level = _ISR_Nest_level;
49a78: 45f9 0006 0182 lea 60182 <_Per_CPU_Information+0x8>,%a2 <== NOT EXECUTED 49a7e: 23d2 0005 fdbc movel %a2@,5fdbc <_Watchdog_Sync_level> <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
49a84: 2468 0004 moveal %a0@(4),%a2
next->previous = previous;
49a88: 234a 0004 movel %a2,%a1@(4)
previous->next = next;
49a8c: 2489 movel %a1,%a2@
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49a8e: 2279 0005 fe22 moveal 5fe22 <_Watchdog_Ticks_since_boot>,%a1 49a94: 2149 0018 movel %a1,%a0@(24)
_ISR_Enable( level );
49a98: 46c1 movew %d1,%sr
return( previous_state ); }
49a9a: 241f movel %sp@+,%d2 49a9c: 245f moveal %sp@+,%a2 49a9e: 4e5e unlk %fp 49aa0: 4e75 rts
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49aa2: 2279 0005 fe22 moveal 5fe22 <_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;
49aa8: 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;
49aac: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
49ab0: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state ); }
49ab2: 241f movel %sp@+,%d2 <== NOT EXECUTED 49ab4: 245f moveal %sp@+,%a2 <== NOT EXECUTED 49ab6: 4e5e unlk %fp <== NOT EXECUTED
...
0004af34 <_Watchdog_Report>:
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4af34: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
printk(
4af38: 223c 0005 f43d movel #390205,%d1 <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4af3e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4af42: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED 4af46: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
printk(
4af4a: 2a28 0024 movel %a0@(36),%d5 <== NOT EXECUTED 4af4e: 2828 0020 movel %a0@(32),%d4 <== NOT EXECUTED 4af52: 2628 001c movel %a0@(28),%d3 <== NOT EXECUTED 4af56: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED 4af5a: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED 4af5e: 4a80 tstl %d0 <== NOT EXECUTED 4af60: 672a beqs 4af8c <_Watchdog_Report+0x58> <== NOT EXECUTED 4af62: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4af64: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4af66: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4af68: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4af6a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4af6c: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4af6e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4af70: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4af72: 4879 0005 f5be pea 5f5be <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED 4af78: 4eb9 0004 4874 jsr 44874 <printk> <== NOT EXECUTED 4af7e: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4af82: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED 4af88: 4e5e unlk %fp <== NOT EXECUTED 4af8a: 4e75 rts <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
printk(
4af8c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4af8e: 223c 0005 f442 movel #390210,%d1 <== NOT EXECUTED 4af94: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4af96: 2001 movel %d1,%d0 <== NOT EXECUTED 4af98: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4af9a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4af9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4af9e: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4afa0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4afa2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4afa4: 4879 0005 f5be pea 5f5be <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED 4afaa: 4eb9 0004 4874 jsr 44874 <printk> <== NOT EXECUTED 4afb0: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4afb4: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED 4afba: 4e5e unlk %fp <== NOT EXECUTED
...
0004aeb8 <_Watchdog_Report_chain>:
)
{
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4aeb8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _Watchdog_Report_chain(
const char *name,
Chain_Control *header
)
{
4aebe: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4aec2: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 4aec6: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4aeca: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4aece: 40c3 movew %sr,%d3 <== NOT EXECUTED 4aed0: 8083 orl %d3,%d0 <== NOT EXECUTED 4aed2: 46c0 movew %d0,%sr <== NOT EXECUTED
printk( "Watchdog Chain: %s %p\n", name, header );
4aed4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4aed6: 4bf9 0004 4874 lea 44874 <printk>,%a5 <== NOT EXECUTED 4aedc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4aede: 4879 0005 f588 pea 5f588 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED 4aee4: 4e95 jsr %a5@ <== NOT EXECUTED
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
}
4aee6: 245b moveal %a3@+,%a2 <== NOT EXECUTED
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
printk( "Watchdog Chain: %s %p\n", name, header );
if ( !_Chain_Is_empty( header ) ) {
4aee8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4aeec: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4aeee: 672c beqs 4af1c <_Watchdog_Report_chain+0x64> <== NOT EXECUTED 4aef0: 49f9 0004 af34 lea 4af34 <_Watchdog_Report>,%a4 <== NOT EXECUTED
node != _Chain_Tail(header) ;
node = node->next )
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
4aef6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aef8: 42a7 clrl %sp@- <== NOT EXECUTED 4aefa: 4e94 jsr %a4@ <== NOT EXECUTED
_ISR_Disable( level );
printk( "Watchdog Chain: %s %p\n", name, header );
if ( !_Chain_Is_empty( header ) ) {
for ( node = _Chain_First( header ) ;
node != _Chain_Tail(header) ;
node = node->next )
4aefc: 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 = _Chain_First( header ) ;
4aefe: 508f addql #8,%sp <== NOT EXECUTED 4af00: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4af02: 66f2 bnes 4aef6 <_Watchdog_Report_chain+0x3e> <== NOT EXECUTED
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
4af04: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4af06: 4879 0005 f59f pea 5f59f <_Status_Object_name_errors_to_status+0x2b><== NOT EXECUTED 4af0c: 4e95 jsr %a5@ <== NOT EXECUTED 4af0e: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
4af10: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4af12: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4af18: 4e5e unlk %fp <== NOT EXECUTED 4af1a: 4e75 rts <== NOT EXECUTED
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
4af1c: 4879 0005 f5ae pea 5f5ae <_Status_Object_name_errors_to_status+0x3a><== NOT EXECUTED 4af22: 4e95 jsr %a5@ <== NOT EXECUTED 4af24: 588f addql #4,%sp <== NOT EXECUTED
}
_ISR_Enable( level );
4af26: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4af28: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4af2e: 4e5e unlk %fp <== NOT EXECUTED
...
00049abc <_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 );
49abc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _Watchdog_Tickle(
Chain_Control *header
)
{
49ac2: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 49ac6: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 49aca: 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 );
49ace: 40c2 movew %sr,%d2 <== NOT EXECUTED 49ad0: 8082 orl %d2,%d0 <== NOT EXECUTED 49ad2: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
49ad4: 264c moveal %a4,%a3 <== NOT EXECUTED 49ad6: 245b moveal %a3@+,%a2 <== NOT EXECUTED
* volatile data - till, 2003/7
*/
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
49ad8: b7ca cmpal %a2,%a3 <== NOT EXECUTED 49ada: 673e beqs 49b1a <_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) {
49adc: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 49ae0: 4bf9 0004 9a1c lea 49a1c <_Watchdog_Remove>,%a5 <== NOT EXECUTED 49ae6: 6708 beqs 49af0 <_Watchdog_Tickle+0x34> <== NOT EXECUTED
the_watchdog->delta_interval--;
49ae8: 5380 subql #1,%d0 <== NOT EXECUTED 49aea: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
49aee: 662a bnes 49b1a <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
49af0: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
goto leave;
}
do {
watchdog_state = _Watchdog_Remove( the_watchdog );
49af6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49af8: 4e95 jsr %a5@ <== NOT EXECUTED
_ISR_Enable( level );
49afa: 46c2 movew %d2,%sr <== NOT EXECUTED
switch( watchdog_state ) {
49afc: 7202 moveq #2,%d1 <== NOT EXECUTED 49afe: 588f addql #4,%sp <== NOT EXECUTED 49b00: b280 cmpl %d0,%d1 <== NOT EXECUTED 49b02: 6722 beqs 49b26 <_Watchdog_Tickle+0x6a> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
49b04: 2003 movel %d3,%d0 <== NOT EXECUTED 49b06: 40c2 movew %sr,%d2 <== NOT EXECUTED 49b08: 8082 orl %d2,%d0 <== NOT EXECUTED 49b0a: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
49b0c: 2014 movel %a4@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
49b0e: 2440 moveal %d0,%a2 <== NOT EXECUTED
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
49b10: b7c0 cmpal %d0,%a3 <== NOT EXECUTED 49b12: 6706 beqs 49b1a <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
}
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
49b14: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 49b18: 67dc beqs 49af6 <_Watchdog_Tickle+0x3a> <== NOT EXECUTED
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
49b1a: 46c2 movew %d2,%sr <== NOT EXECUTED
}
49b1c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 49b22: 4e5e unlk %fp <== NOT EXECUTED 49b24: 4e75 rts <== NOT EXECUTED
_ISR_Enable( level );
switch( watchdog_state ) {
case WATCHDOG_ACTIVE:
(*the_watchdog->routine)(
49b26: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 49b2a: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED 49b2e: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 49b32: 4e90 jsr %a0@ <== NOT EXECUTED
the_watchdog->id,
the_watchdog->user_data
);
break;
49b34: 508f addql #8,%sp <== NOT EXECUTED 49b36: 60cc bras 49b04 <_Watchdog_Tickle+0x48> <== NOT EXECUTED
00049bd2 <_Workspace_Allocate_or_fatal_error>:
* _Workspace_Allocate_or_fatal_error
*/
void *_Workspace_Allocate_or_fatal_error(
size_t size
)
{
49bd2: 4e56 0000 linkw %fp,#0 49bd6: 42a7 clrl %sp@- 49bd8: 42a7 clrl %sp@- 49bda: 2f2e 0008 movel %fp@(8),%sp@- 49bde: 4879 0005 fd16 pea 5fd16 <_Workspace_Area> 49be4: 4eb9 0004 c680 jsr 4c680 <_Heap_Allocate_aligned_with_boundary>
__builtin_return_address( 1 ),
memory
);
#endif
if ( memory == NULL )
49bea: 4fef 0010 lea %sp@(16),%sp 49bee: 4a80 tstl %d0
49bf0: 6704 beqs 49bf6 <_Workspace_Allocate_or_fatal_error+0x24>
true,
INTERNAL_ERROR_WORKSPACE_ALLOCATION
);
return memory;
}
49bf2: 4e5e unlk %fp 49bf4: 4e75 rts
memory
);
#endif
if ( memory == NULL )
_Internal_error_Occurred(
49bf6: 4878 0003 pea 3 <DIVIDE> 49bfa: 4878 0001 pea 1 <ADD> 49bfe: 42a7 clrl %sp@- 49c00: 4eb9 0004 7868 jsr 47868 <_Internal_error_Occurred>
...
00057f00 <__env_lock>:
57f00: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 57f04: 4e5e unlk %fp <== NOT EXECUTED
00057f08 <__env_unlock>:
57f08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 57f0c: 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
0005bbec <_calloc_r>:
void *_calloc_r(
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
5bbec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5bbf0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return calloc( elements, size );
5bbf4: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 5bbfa: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5bbfe: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
return calloc( elements, size );
5bc00: 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 2d28 jsr 52d28 <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
0005cec0 <_execve>:
int _execve(
const char *path __attribute__((unused)),
char *const argv[] __attribute__((unused)),
char *const envp[] __attribute__((unused))
)
{
5cec0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
5cec4: 4eb9 0004 f314 jsr 4f314 <__errno> <== NOT EXECUTED 5ceca: 7258 moveq #88,%d1 <== NOT EXECUTED 5cecc: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
5cece: 70ff moveq #-1,%d0 <== NOT EXECUTED 5ced0: 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 );
5ced2: 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
0005bc08 <_free_r>:
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
5bc08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free( ptr );
5bc0c: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
5bc12: 4e5e unlk %fp <== NOT EXECUTED
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
free( ptr );
5bc14: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
...
0005bcb8 <_fstat_r>:
int _fstat_r(
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
5bcb8: 4e56 0000 linkw %fp,#0 5bcbc: 202e 000c movel %fp@(12),%d0
return fstat( fd, buf );
5bcc0: 2d6e 0010 000c movel %fp@(16),%fp@(12) 5bcc6: 2d40 0008 movel %d0,%fp@(8)
}
5bcca: 4e5e unlk %fp
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
return fstat( fd, buf );
5bccc: 4ef9 0005 bc1c jmp 5bc1c <fstat>
...
0005bcde <_getpid_r>:
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
return getpid();
}
5bcde: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <reent.h>
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
5bce0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid(); }
5bce4: 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
0005bce8 <_isatty_r>:
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
5bce8: 4e56 0000 linkw %fp,#0
return isatty( fd );
5bcec: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5bcf2: 4e5e unlk %fp
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
return isatty( fd );
5bcf4: 4ef9 0005 c860 jmp 5c860 <isatty>
...
0005bfb0 <_kill_r>:
int _kill_r(
struct _reent *ptr,
pid_t pid,
int sig
)
{
5bfb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
5bfb4: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
int _kill_r(
struct _reent *ptr,
pid_t pid,
int sig
)
{
5bfba: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
5bfbe: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED 5bfc2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
5bfc6: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr,
pid_t pid,
int sig
)
{
return killinfo( pid, sig, NULL );
5bfc8: 4ef9 0005 c1a0 jmp 5c1a0 <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
0005be58 <_lseek_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
off_t offset,
int whence
)
{
5be58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5be5c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 5be60: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 5be64: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
return lseek( fd, offset, whence );
5be68: 2d6e 0018 0014 movel %fp@(24),%fp@(20) <== NOT EXECUTED 5be6e: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 5be72: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED 5be76: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5be7a: 4e5e unlk %fp <== NOT EXECUTED
int fd,
off_t offset,
int whence
)
{
return lseek( fd, offset, whence );
5be7c: 4ef9 0005 bcfc jmp 5bcfc <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
...
0005be84 <_malloc_r>:
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
5be84: 4e56 0000 linkw %fp,#0
return malloc( size );
5be88: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5be8e: 4e5e unlk %fp
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
return malloc( size );
5be90: 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
0005bf4e <_read_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
void *buf,
size_t nbytes
)
{
5bf4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5bf52: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 5bf56: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return read( fd, buf, nbytes );
5bf5a: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED 5bf60: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED 5bf64: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5bf68: 4e5e unlk %fp <== NOT EXECUTED
int fd,
void *buf,
size_t nbytes
)
{
return read( fd, buf, nbytes );
5bf6a: 4ef9 0005 be98 jmp 5be98 <read> <== NOT EXECUTED
0005bf70 <_realloc_r>:
void *_realloc_r(
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
5bf70: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5bf74: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return realloc( ptr, size );
5bf78: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED 5bf7e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5bf82: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
return realloc( ptr, size );
5bf84: 4ef9 0005 bfd0 jmp 5bfd0 <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 5954 lea 55954 <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 2920 jsr 52920 <__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 2920 jsr 52920 <__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 e870 movel 5e870 <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 05a6 moveal 605a6 <_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 985c jsr 4985c <_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 ece0 jsr 4ece0 <__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
...
0005bf8c <_write_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
const void *buf,
size_t nbytes
)
{
5bf8c: 4e56 0000 linkw %fp,#0 5bf90: 222e 0010 movel %fp@(16),%d1 5bf94: 202e 000c movel %fp@(12),%d0
return write( fd, buf, nbytes );
5bf98: 2d6e 0014 0010 movel %fp@(20),%fp@(16) 5bf9e: 2d41 000c movel %d1,%fp@(12) 5bfa2: 2d40 0008 movel %d0,%fp@(8)
}
5bfa6: 4e5e unlk %fp
int fd,
const void *buf,
size_t nbytes
)
{
return write( fd, buf, nbytes );
5bfa8: 4ef9 0005 c0ec jmp 5c0ec <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 fba0 cmpl 5fba0 <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 1570 movel 61570 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46578: 5280 addql #1,%d0 <== NOT EXECUTED 4657a: 23c0 0006 1570 movel %d0,61570 <_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 7f00 jsr 47f00 <_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 7fcc jsr 47fcc <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
465fa: 4eb9 0004 9546 jsr 49546 <_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 f654 jsr 4f654 <__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
00046dac <aio_cancel>:
* operation(s) cannot be canceled
*/
int aio_cancel(int fildes, struct aiocb *aiocbp)
{
46dac: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46db0: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
rtems_aio_request_chain *r_chain;
int result;
pthread_mutex_lock (&aio_request_queue.mutex);
46db4: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 46dba: 47f9 0004 8110 lea 48110 <pthread_mutex_lock>,%a3 <== NOT EXECUTED
* operation(s) cannot be canceled
*/
int aio_cancel(int fildes, struct aiocb *aiocbp)
{
46dc0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 46dc4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_aio_request_chain *r_chain;
int result;
pthread_mutex_lock (&aio_request_queue.mutex);
46dc8: 4e93 jsr %a3@ <== NOT EXECUTED
if (aiocbp == NULL)
46dca: 588f addql #4,%sp <== NOT EXECUTED 46dcc: 4a8a tstl %a2 <== NOT EXECUTED 46dce: 6700 00d0 beqw 46ea0 <aio_cancel+0xf4> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_CANCELED;
}
else
{
if (aiocbp->aio_fildes != fildes) {
46dd2: 2612 movel %a2@,%d3 <== NOT EXECUTED 46dd4: b483 cmpl %d3,%d2 <== NOT EXECUTED 46dd6: 6600 00a0 bnew 46e78 <aio_cancel+0xcc> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EINVAL);
}
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
46dda: 42a7 clrl %sp@- <== NOT EXECUTED 46ddc: 49f9 0004 7216 lea 47216 <rtems_aio_search_fd>,%a4 <== NOT EXECUTED 46de2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46de4: 4879 0006 2e70 pea 62e70 <aio_request_queue+0x48> <== NOT EXECUTED 46dea: 4e94 jsr %a4@ <== NOT EXECUTED
fildes,
0);
if (r_chain == NULL)
46dec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (aiocbp->aio_fildes != fildes) {
pthread_mutex_unlock (&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EINVAL);
}
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
46df0: 2400 movel %d0,%d2 <== NOT EXECUTED
fildes,
0);
if (r_chain == NULL)
46df2: 673a beqs 46e2e <aio_cancel+0x82> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
pthread_mutex_lock (&r_chain->mutex);
46df4: 2602 movel %d2,%d3 <== NOT EXECUTED 46df6: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED
result = rtems_aio_remove_req (&r_chain->next_fd, aiocbp);
pthread_mutex_unlock (&r_chain->mutex);
46dfc: 49f9 0004 81ac lea 481ac <pthread_mutex_unlock>,%a4 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
pthread_mutex_lock (&r_chain->mutex);
46e02: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46e04: 4e93 jsr %a3@ <== NOT EXECUTED
result = rtems_aio_remove_req (&r_chain->next_fd, aiocbp);
46e06: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46e08: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46e0a: 4eb9 0004 764a jsr 4764a <rtems_aio_remove_req> <== NOT EXECUTED 46e10: 2400 movel %d0,%d2 <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
46e12: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46e14: 4e94 jsr %a4@ <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46e16: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 46e1c: 4e94 jsr %a4@ <== NOT EXECUTED
return result;
46e1e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
return AIO_ALLDONE;
}
46e22: 2002 movel %d2,%d0 <== NOT EXECUTED 46e24: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 46e2a: 4e5e unlk %fp <== NOT EXECUTED 46e2c: 4e75 rts <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
fildes,
0);
if (r_chain == NULL)
if (!rtems_chain_is_empty (&aio_request_queue.idle_req))
46e2e: 203c 0006 2e80 movel #405120,%d0 <== NOT EXECUTED 46e34: b0b9 0006 2e7c cmpl 62e7c <aio_request_queue+0x54>,%d0 <== NOT EXECUTED 46e3a: 67b8 beqs 46df4 <aio_cancel+0x48> <== NOT EXECUTED
{
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req,
46e3c: 42a7 clrl %sp@- <== NOT EXECUTED 46e3e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46e40: 4879 0006 2e7c pea 62e7c <aio_request_queue+0x54> <== NOT EXECUTED 46e46: 4e94 jsr %a4@ <== NOT EXECUTED
fildes, 0); if (r_chain == NULL)
46e48: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46e4c: 4a80 tstl %d0 <== NOT EXECUTED 46e4e: 6728 beqs 46e78 <aio_cancel+0xcc> <== NOT EXECUTED
{
pthread_mutex_unlock (&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EINVAL);
}
result = rtems_aio_remove_req (&r_chain->next_fd, aiocbp);
46e50: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46e52: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46e54: 4eb9 0004 764a jsr 4764a <rtems_aio_remove_req> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46e5a: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED
{
pthread_mutex_unlock (&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EINVAL);
}
result = rtems_aio_remove_req (&r_chain->next_fd, aiocbp);
46e60: 2400 movel %d0,%d2 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46e62: 4eb9 0004 81ac jsr 481ac <pthread_mutex_unlock> <== NOT EXECUTED
return result;
46e68: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return result;
}
return AIO_ALLDONE;
}
46e6c: 2002 movel %d2,%d0 <== NOT EXECUTED 46e6e: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 46e74: 4e5e unlk %fp <== NOT EXECUTED 46e76: 4e75 rts <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req,
fildes,
0);
if (r_chain == NULL)
{
pthread_mutex_unlock (&aio_request_queue.mutex);
46e78: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
46e7e: 74ff moveq #-1,%d2 <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req,
fildes,
0);
if (r_chain == NULL)
{
pthread_mutex_unlock (&aio_request_queue.mutex);
46e80: 4eb9 0004 81ac jsr 481ac <pthread_mutex_unlock> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
46e86: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED 46e8c: 588f addql #4,%sp <== NOT EXECUTED 46e8e: 2040 moveal %d0,%a0 <== NOT EXECUTED 46e90: 7016 moveq #22,%d0 <== NOT EXECUTED 46e92: 2080 movel %d0,%a0@ <== NOT EXECUTED
return result;
}
return AIO_ALLDONE;
}
46e94: 2002 movel %d2,%d0 <== NOT EXECUTED 46e96: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 46e9c: 4e5e unlk %fp <== NOT EXECUTED 46e9e: 4e75 rts <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
if (aiocbp == NULL)
{
if (fcntl (fildes, F_GETFL) < 0) {
46ea0: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 46ea4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46ea6: 4eb9 0004 e048 jsr 4e048 <fcntl> <== NOT EXECUTED 46eac: 508f addql #8,%sp <== NOT EXECUTED 46eae: 4a80 tstl %d0 <== NOT EXECUTED 46eb0: 6d00 00e4 bltw 46f96 <aio_cancel+0x1ea> <== NOT EXECUTED
pthread_mutex_unlock(&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EBADF);
}
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
46eb4: 42a7 clrl %sp@- <== NOT EXECUTED 46eb6: 45f9 0004 7216 lea 47216 <rtems_aio_search_fd>,%a2 <== NOT EXECUTED 46ebc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46ebe: 4879 0006 2e70 pea 62e70 <aio_request_queue+0x48> <== NOT EXECUTED 46ec4: 4e92 jsr %a2@ <== NOT EXECUTED
fildes,
0);
if (r_chain == NULL)
46ec6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if (fcntl (fildes, F_GETFL) < 0) {
pthread_mutex_unlock(&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EBADF);
}
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
46eca: 2600 movel %d0,%d3 <== NOT EXECUTED
fildes,
0);
if (r_chain == NULL)
46ecc: 673e beqs 46f0c <aio_cancel+0x160> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_ALLDONE;
}
pthread_mutex_lock (&r_chain->mutex);
46ece: 2840 moveal %d0,%a4 <== NOT EXECUTED 46ed0: 49ec 001c lea %a4@(28),%a4 <== NOT EXECUTED
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
pthread_mutex_unlock (&r_chain->mutex);
46ed4: 45f9 0004 81ac lea 481ac <pthread_mutex_unlock>,%a2 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_CANCELED;
46eda: 4282 clrl %d2 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_ALLDONE;
}
pthread_mutex_lock (&r_chain->mutex);
46edc: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46ede: 4e93 jsr %a3@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
46ee0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46ee2: 4eb9 0004 9d60 jsr 49d60 <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
46ee8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46eea: 4eb9 0004 75d2 jsr 475d2 <rtems_aio_remove_fd> <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
46ef0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46ef2: 4e92 jsr %a2@ <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46ef4: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 46efa: 4e92 jsr %a2@ <== NOT EXECUTED
return AIO_CANCELED;
46efc: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
return result;
}
return AIO_ALLDONE;
}
46f00: 2002 movel %d2,%d0 <== NOT EXECUTED 46f02: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 46f08: 4e5e unlk %fp <== NOT EXECUTED 46f0a: 4e75 rts <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
fildes,
0);
if (r_chain == NULL)
{
if (!rtems_chain_is_empty (&aio_request_queue.idle_req))
46f0c: 203c 0006 2e80 movel #405120,%d0 <== NOT EXECUTED 46f12: b0b9 0006 2e7c cmpl 62e7c <aio_request_queue+0x54>,%d0 <== NOT EXECUTED 46f18: 6760 beqs 46f7a <aio_cancel+0x1ce> <== NOT EXECUTED
{
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req,
46f1a: 42a7 clrl %sp@- <== NOT EXECUTED 46f1c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f1e: 4879 0006 2e7c pea 62e7c <aio_request_queue+0x54> <== NOT EXECUTED 46f24: 4e92 jsr %a2@ <== NOT EXECUTED
fildes,
0);
if (r_chain == NULL) {
46f26: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
0);
if (r_chain == NULL)
{
if (!rtems_chain_is_empty (&aio_request_queue.idle_req))
{
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req,
46f2a: 2600 movel %d0,%d3 <== NOT EXECUTED
fildes,
0);
if (r_chain == NULL) {
46f2c: 674c beqs 46f7a <aio_cancel+0x1ce> <== NOT EXECUTED 46f2e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
return AIO_ALLDONE;
}
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
pthread_mutex_destroy (&r_chain->mutex);
46f30: 2440 moveal %d0,%a2 <== NOT EXECUTED 46f32: 45ea 001c lea %a2@(28),%a2 <== NOT EXECUTED
pthread_cond_destroy (&r_chain->mutex);
free (r_chain);
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_CANCELED;
46f36: 4282 clrl %d2 <== NOT EXECUTED 46f38: 4eb9 0004 9d60 jsr 49d60 <_Chain_Extract> <== NOT EXECUTED
pthread_mutex_unlock(&aio_request_queue.mutex);
return AIO_ALLDONE;
}
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
46f3e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46f40: 4eb9 0004 75d2 jsr 475d2 <rtems_aio_remove_fd> <== NOT EXECUTED
pthread_mutex_destroy (&r_chain->mutex);
46f46: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46f48: 4eb9 0004 7e5c jsr 47e5c <pthread_mutex_destroy> <== NOT EXECUTED
pthread_cond_destroy (&r_chain->mutex);
46f4e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46f50: 4eb9 0004 7ae8 jsr 47ae8 <pthread_cond_destroy> <== NOT EXECUTED
free (r_chain);
46f56: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46f58: 4eb9 0004 3978 jsr 43978 <free> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46f5e: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 46f64: 4eb9 0004 81ac jsr 481ac <pthread_mutex_unlock> <== NOT EXECUTED
return AIO_CANCELED;
46f6a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
return result;
}
return AIO_ALLDONE;
}
46f6e: 2002 movel %d2,%d0 <== NOT EXECUTED 46f70: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 46f76: 4e5e unlk %fp <== NOT EXECUTED 46f78: 4e75 rts <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_CANCELED;
}
pthread_mutex_unlock (&aio_request_queue.mutex);
46f7a: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED
return AIO_ALLDONE;
46f80: 7402 moveq #2,%d2 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_CANCELED;
}
pthread_mutex_unlock (&aio_request_queue.mutex);
46f82: 4eb9 0004 81ac jsr 481ac <pthread_mutex_unlock> <== NOT EXECUTED
return AIO_ALLDONE;
46f88: 588f addql #4,%sp <== NOT EXECUTED
return result;
}
return AIO_ALLDONE;
}
46f8a: 2002 movel %d2,%d0 <== NOT EXECUTED 46f8c: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 46f92: 4e5e unlk %fp <== NOT EXECUTED 46f94: 4e75 rts <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
if (aiocbp == NULL)
{
if (fcntl (fildes, F_GETFL) < 0) {
pthread_mutex_unlock(&aio_request_queue.mutex);
46f96: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EBADF);
46f9c: 74ff moveq #-1,%d2 <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
if (aiocbp == NULL)
{
if (fcntl (fildes, F_GETFL) < 0) {
pthread_mutex_unlock(&aio_request_queue.mutex);
46f9e: 4eb9 0004 81ac jsr 481ac <pthread_mutex_unlock> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EBADF);
46fa4: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED 46faa: 588f addql #4,%sp <== NOT EXECUTED 46fac: 7209 moveq #9,%d1 <== NOT EXECUTED 46fae: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
return AIO_ALLDONE;
}
46fb0: 2002 movel %d2,%d0 <== NOT EXECUTED 46fb2: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
if (aiocbp == NULL)
{
if (fcntl (fildes, F_GETFL) < 0) {
pthread_mutex_unlock(&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EBADF);
46fb8: 2081 movel %d1,%a0@ <== NOT EXECUTED
return result;
}
return AIO_ALLDONE;
}
46fba: 4e5e unlk %fp <== NOT EXECUTED
...
00046fc0 <aio_error>:
*/
int
aio_error (const struct aiocb *aiocbp)
{
46fc0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fc4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return aiocbp->error_code; }
46fc8: 4e5e unlk %fp <== NOT EXECUTED 46fca: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED
00046fd0 <aio_fsync>:
)
{
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
46fd0: 203c 0000 2000 movel #8192,%d0 <== NOT EXECUTED
int aio_fsync(
int op,
struct aiocb *aiocbp
)
{
46fd6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fda: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46fdc: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
46fe0: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 46fe4: 6648 bnes 4702e <aio_fsync+0x5e> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
46fe6: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED 46fea: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 46fec: 4eb9 0004 e048 jsr 4e048 <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
46ff2: 508f addql #8,%sp <== NOT EXECUTED 46ff4: 7203 moveq #3,%d1 <== NOT EXECUTED 46ff6: c081 andl %d1,%d0 <== NOT EXECUTED 46ff8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 46ffc: 5380 subql #1,%d0 <== NOT EXECUTED 46ffe: b280 cmpl %d0,%d1 <== NOT EXECUTED 47000: 654e bcss 47050 <aio_fsync+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
req = malloc (sizeof (rtems_aio_request));
47002: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED 47006: 4eb9 0004 3f84 jsr 43f84 <malloc> <== NOT EXECUTED
if (req == NULL)
4700c: 588f addql #4,%sp <== NOT EXECUTED 4700e: 4a80 tstl %d0 <== NOT EXECUTED 47010: 6760 beqs 47072 <aio_fsync+0xa2> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
47012: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_SYNC;
47014: 7203 moveq #3,%d1 <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
47016: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_SYNC;
4701a: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
4701e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
47022: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
47026: 4e5e unlk %fp <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
47028: 4ef9 0004 76a4 jmp 476a4 <rtems_aio_enqueue> <== NOT EXECUTED
{
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
4702e: 7216 moveq #22,%d1 <== NOT EXECUTED 47030: 70ff moveq #-1,%d0 <== NOT EXECUTED 47032: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED 47036: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED 4703a: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47040: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
47044: 2040 moveal %d0,%a0 <== NOT EXECUTED 47046: 7016 moveq #22,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47048: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
4704a: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
4704c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4704e: 4e75 rts <== NOT EXECUTED
if (op != O_SYNC)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
47050: 72ff moveq #-1,%d1 <== NOT EXECUTED 47052: 7009 moveq #9,%d0 <== NOT EXECUTED 47054: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47058: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4705c: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47062: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if (op != O_SYNC)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
47066: 2040 moveal %d0,%a0 <== NOT EXECUTED 47068: 7209 moveq #9,%d1 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
4706a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4706c: 4e5e unlk %fp <== NOT EXECUTED
if (op != O_SYNC)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
4706e: 2081 movel %d1,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47070: 4e75 rts <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
47072: 103c 000b moveb #11,%d0 <== NOT EXECUTED 47076: 72ff moveq #-1,%d1 <== NOT EXECUTED 47078: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4707c: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47080: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47086: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
4708a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4708c: 700b moveq #11,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
4708e: 4e5e unlk %fp <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
47090: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47092: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
000478c8 <aio_read>:
* 0 - otherwise
*/
int
aio_read (struct aiocb *aiocbp)
{
478c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 478cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
478ce: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
* 0 - otherwise
*/
int
aio_read (struct aiocb *aiocbp)
{
478d2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
478d6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 478d8: 4eb9 0004 e048 jsr 4e048 <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
478de: 508f addql #8,%sp <== NOT EXECUTED 478e0: 7203 moveq #3,%d1 <== NOT EXECUTED 478e2: c081 andl %d1,%d0 <== NOT EXECUTED 478e4: 6708 beqs 478ee <aio_read+0x26> <== NOT EXECUTED 478e6: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 478ea: b280 cmpl %d0,%d1 <== NOT EXECUTED 478ec: 6638 bnes 47926 <aio_read+0x5e> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
478ee: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 478f2: 6654 bnes 47948 <aio_read+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
478f4: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 478f8: 6b4e bmis 47948 <aio_read+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
478fa: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED 478fe: 4eb9 0004 3f84 jsr 43f84 <malloc> <== NOT EXECUTED
if (req == NULL)
47904: 588f addql #4,%sp <== NOT EXECUTED 47906: 4a80 tstl %d0 <== NOT EXECUTED 47908: 6760 beqs 4796a <aio_read+0xa2> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
4790a: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_READ;
4790c: 7201 moveq #1,%d1 <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
4790e: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_READ;
47912: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
47916: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
4791a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
4791e: 4e5e unlk %fp <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
47920: 4ef9 0004 76a4 jmp 476a4 <rtems_aio_enqueue> <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
47926: 7009 moveq #9,%d0 <== NOT EXECUTED 47928: 72ff moveq #-1,%d1 <== NOT EXECUTED 4792a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4792e: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47932: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47938: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
4793c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4793e: 7009 moveq #9,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47940: 4e5e unlk %fp <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
47942: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47944: 70ff moveq #-1,%d0 <== NOT EXECUTED 47946: 4e75 rts <== NOT EXECUTED
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
47948: 72ff moveq #-1,%d1 <== NOT EXECUTED 4794a: 7016 moveq #22,%d0 <== NOT EXECUTED 4794c: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47950: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 47954: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
4795a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
4795e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47960: 7216 moveq #22,%d1 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47962: 70ff moveq #-1,%d0 <== NOT EXECUTED 47964: 4e5e unlk %fp <== NOT EXECUTED
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
47966: 2081 movel %d1,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47968: 4e75 rts <== NOT EXECUTED
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
4796a: 103c 000b moveb #11,%d0 <== NOT EXECUTED 4796e: 72ff moveq #-1,%d1 <== NOT EXECUTED 47970: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 47974: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47978: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
4797e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
47982: 2040 moveal %d0,%a0 <== NOT EXECUTED 47984: 700b moveq #11,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47986: 4e5e unlk %fp <== NOT EXECUTED
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
47988: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
4798a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00047990 <aio_return>:
* aiocbp->return_value
*/
ssize_t
aio_return (const struct aiocb *aiocbp)
{
47990: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47994: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return aiocbp->return_value; }
47998: 4e5e unlk %fp <== NOT EXECUTED 4799a: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
00046194 <aio_suspend>:
int aio_suspend(
const struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
const struct timespec *timeout __attribute__((unused))
)
{
46194: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46198: 4eb9 0004 f314 jsr 4f314 <__errno> <== NOT EXECUTED 4619e: 7258 moveq #88,%d1 <== NOT EXECUTED 461a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
461a2: 70ff moveq #-1,%d0 <== NOT EXECUTED 461a4: 4e5e unlk %fp <== NOT EXECUTED
const struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
const struct timespec *timeout __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
461a6: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000479a0 <aio_write>:
* 0 - otherwise
*/
int
aio_write (struct aiocb *aiocbp)
{
479a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 479a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
479a6: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
* 0 - otherwise
*/
int
aio_write (struct aiocb *aiocbp)
{
479aa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
479ae: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 479b0: 4eb9 0004 e048 jsr 4e048 <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
479b6: 508f addql #8,%sp <== NOT EXECUTED 479b8: 7203 moveq #3,%d1 <== NOT EXECUTED 479ba: c081 andl %d1,%d0 <== NOT EXECUTED 479bc: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 479c0: 5380 subql #1,%d0 <== NOT EXECUTED 479c2: b280 cmpl %d0,%d1 <== NOT EXECUTED 479c4: 6538 bcss 479fe <aio_write+0x5e> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
479c6: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 479ca: 6654 bnes 47a20 <aio_write+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
479cc: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 479d0: 6b4e bmis 47a20 <aio_write+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
479d2: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED 479d6: 4eb9 0004 3f84 jsr 43f84 <malloc> <== NOT EXECUTED
if (req == NULL)
479dc: 588f addql #4,%sp <== NOT EXECUTED 479de: 4a80 tstl %d0 <== NOT EXECUTED 479e0: 6760 beqs 47a42 <aio_write+0xa2> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
479e2: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_WRITE;
479e4: 7202 moveq #2,%d1 <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
479e6: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_WRITE;
479ea: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
479ee: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
479f2: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
479f6: 4e5e unlk %fp <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
479f8: 4ef9 0004 76a4 jmp 476a4 <rtems_aio_enqueue> <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
479fe: 7009 moveq #9,%d0 <== NOT EXECUTED 47a00: 72ff moveq #-1,%d1 <== NOT EXECUTED 47a02: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 47a06: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47a0a: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a10: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
47a14: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a16: 7009 moveq #9,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a18: 4e5e unlk %fp <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
47a1a: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a1c: 70ff moveq #-1,%d0 <== NOT EXECUTED 47a1e: 4e75 rts <== NOT EXECUTED
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
47a20: 72ff moveq #-1,%d1 <== NOT EXECUTED 47a22: 7016 moveq #22,%d0 <== NOT EXECUTED 47a24: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47a28: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 47a2c: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a32: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
47a36: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a38: 7216 moveq #22,%d1 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a3a: 70ff moveq #-1,%d0 <== NOT EXECUTED 47a3c: 4e5e unlk %fp <== NOT EXECUTED
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
47a3e: 2081 movel %d1,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a40: 4e75 rts <== NOT EXECUTED
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
47a42: 103c 000b moveb #11,%d0 <== NOT EXECUTED 47a46: 72ff moveq #-1,%d1 <== NOT EXECUTED 47a48: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 47a4c: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 47a50: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a56: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
47a5a: 2040 moveal %d0,%a0 <== NOT EXECUTED 47a5c: 700b moveq #11,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a5e: 4e5e unlk %fp <== NOT EXECUTED
if (aiocbp->aio_offset < 0)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
47a60: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a62: 70ff moveq #-1,%d0 <== 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 4c6c tstl 64c6c <_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 4c50 pea 64c50 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 48446: 4eb9 0004 d5e4 jsr 4d5e4 <_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 4c50 pea 64c50 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 4846e: 4879 0006 4fb4 pea 64fb4 <_Watchdog_Seconds_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
48474: 23c2 0006 4c5c movel %d2,64c5c <_POSIX_signals_Alarm_timer+0xc><== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
4847a: 4eb9 0004 d49c jsr 4d49c <_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 4c58 clrl 64c58 <_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 4c70 clrl 64c70 <_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 4c6c movel %d0,64c6c <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED
the_watchdog->id = id; the_watchdog->user_data = user_data;
484a8: 42b9 0006 4c74 clrl 64c74 <_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 4c68 movel 64c68 <_POSIX_signals_Alarm_timer+0x18>,%d4<== NOT EXECUTED 484ba: 98b9 0006 4c64 subl 64c64 <_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 4c5c movel 64c5c <_POSIX_signals_Alarm_timer+0xc>,%d3<== NOT EXECUTED
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
484c6: 4eb9 0004 af74 jsr 4af74 <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 fbd0 addql #1,5fbd0 <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 f288 jsr 4f288 <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 fbc0 subql #1,5fbc0 <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 04d0 jsr 504d0 <__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 04d0 jsr 504d0 <__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;
}
...
0004bad8 <chdir>:
#include <rtems/seterr.h>
int chdir(
const char *pathname
)
{
4bad8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4badc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bade: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bae0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
4bae4: 6700 0086 beqw 4bb6c <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(
4bae8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4baea: 45ee ffec lea %fp@(-20),%a2 <== NOT EXECUTED 4baee: 4eb9 0005 0680 jsr 50680 <strlen> <== NOT EXECUTED 4baf4: 7201 moveq #1,%d1 <== NOT EXECUTED 4baf6: 2e81 movel %d1,%sp@ <== NOT EXECUTED 4baf8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bafa: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4bafe: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4bb00: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4bb02: 4eb9 0004 3150 jsr 43150 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
pathname, strlen( pathname ), RTEMS_LIBIO_PERMS_SEARCH, &loc, true );
if ( result != 0 )
4bb08: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4bb0c: 4a80 tstl %d0 <== NOT EXECUTED 4bb0e: 670e beqs 4bb1e <chdir+0x46> <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb10: 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;
4bb14: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb16: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4bb1a: 4e5e unlk %fp <== NOT EXECUTED 4bb1c: 4e75 rts <== NOT EXECUTED
return -1;
/*
* Verify you can change directory into this node.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
4bb1e: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED 4bb22: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bb24: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4bb28: 4e90 jsr %a0@ <== NOT EXECUTED 4bb2a: 588f addql #4,%sp <== NOT EXECUTED 4bb2c: 7201 moveq #1,%d1 <== NOT EXECUTED 4bb2e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4bb30: 6654 bnes 4bb86 <chdir+0xae> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
4bb32: 2039 0005 ef88 movel 5ef88 <rtems_current_user_env>,%d0 <== NOT EXECUTED 4bb38: 5880 addql #4,%d0 <== NOT EXECUTED 4bb3a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4bb3c: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_filesystem_current = loc;
4bb42: 2079 0005 ef88 moveal 5ef88 <rtems_current_user_env>,%a0 <== NOT EXECUTED 4bb48: 5888 addql #4,%a0 <== NOT EXECUTED
return 0;
4bb4a: 588f addql #4,%sp <== NOT EXECUTED 4bb4c: 4280 clrl %d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
4bb4e: 20d2 movel %a2@,%a0@+ <== NOT EXECUTED 4bb50: 20ee fff0 movel %fp@(-16),%a0@+ <== NOT EXECUTED 4bb54: 20ee fff4 movel %fp@(-12),%a0@+ <== NOT EXECUTED 4bb58: 20ee fff8 movel %fp@(-8),%a0@+ <== NOT EXECUTED
return 0;
}
4bb5c: 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;
4bb60: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
return 0;
}
4bb64: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4bb68: 4e5e unlk %fp <== NOT EXECUTED 4bb6a: 4e75 rts <== NOT EXECUTED
{
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
rtems_set_errno_and_return_minus_one( EFAULT );
4bb6c: 4eb9 0004 f2dc jsr 4f2dc <__errno> <== NOT EXECUTED 4bb72: 740e moveq #14,%d2 <== NOT EXECUTED 4bb74: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bb76: 70ff moveq #-1,%d0 <== NOT EXECUTED 4bb78: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb7a: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED 4bb7e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4bb82: 4e5e unlk %fp <== NOT EXECUTED 4bb84: 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 );
4bb86: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bb88: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
4bb8e: 4eb9 0004 f2dc jsr 4f2dc <__errno> <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb94: 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 );
4bb98: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bb9a: 7214 moveq #20,%d1 <== NOT EXECUTED 4bb9c: 588f addql #4,%sp <== NOT EXECUTED 4bb9e: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bba0: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4bba4: 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 );
4bba6: 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 2d28 jsr 52d28 <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 05c4 movel #394692,%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 ef88 cmpl 5ef88 <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 bad8 jsr 4bad8 <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 e14e pea 5e14e <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 ef88 moveal 5ef88 <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 ef88 moveal 5ef88 <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 05c4 lea 605c4 <rtems_global_user_env>,%a0 <== NOT EXECUTED 42dba: b1f9 0005 ef88 cmpal 5ef88 <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 f2dc jsr 4f2dc <__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 f2dc lea 4f2dc <__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 f314 jsr 4f314 <__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 f314 jsr 4f314 <__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 f818 jsr 4f818 <__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 0560 movel 60560 <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 fbe8 jsr 4fbe8 <__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 fbe8 jsr 4fbe8 <__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 852c jsr 4852c <_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 8490 jsr 48490 <_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 f314 jsr 4f314 <__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 fbe8 jsr 4fbe8 <__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 fbe8 jsr 4fbe8 <__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 1d48 movel 61d48 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46462: 5280 addql #1,%d0 <== NOT EXECUTED 46464: 23c0 0006 1d48 movel %d0,61d48 <_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 8584 jsr 48584 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
46472: 4eb9 0004 9afe jsr 49afe <_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
0004aeec <close>:
#include <rtems/libio_.h>
int close(
int fd
)
{
4aeec: 4e56 fffc linkw %fp,#-4 4aef0: 202e 0008 movel %fp@(8),%d0 4aef4: 2f0a movel %a2,%sp@-
rtems_libio_t *iop;
rtems_status_code rc;
rtems_libio_check_fd(fd);
4aef6: b0b9 0005 e394 cmpl 5e394 <rtems_libio_number_iops>,%d0
4aefc: 644e bccs 4af4c <close+0x60> <== NEVER TAKEN
iop = rtems_libio_iop(fd);
4aefe: 2200 movel %d0,%d1 4af00: ed88 lsll #6,%d0 4af02: e789 lsll #3,%d1 4af04: 2479 0005 fba4 moveal 5fba4 <rtems_libio_iops>,%a2 4af0a: 9081 subl %d1,%d0 4af0c: d5c0 addal %d0,%a2
rtems_libio_check_is_open(iop);
4af0e: 202a 0014 movel %a2@(20),%d0 4af12: 0280 0000 0100 andil #256,%d0
4af18: 6732 beqs 4af4c <close+0x60> <== NEVER TAKEN
rc = RTEMS_SUCCESSFUL;
rc = (*iop->pathinfo.handlers->close_h)( iop );
4af1a: 206a 0020 moveal %a2@(32),%a0 4af1e: 2f0a movel %a2,%sp@- 4af20: 2068 0004 moveal %a0@(4),%a0 4af24: 4e90 jsr %a0@
rtems_filesystem_freenode( &iop->pathinfo );
4af26: 486a 0018 pea %a2@(24) 4af2a: 2d40 fffc movel %d0,%fp@(-4) 4af2e: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode>
rtems_libio_free( iop );
4af34: 2f0a movel %a2,%sp@- 4af36: 4eb9 0004 b1ba jsr 4b1ba <rtems_libio_free>
return rc;
4af3c: 202e fffc movel %fp@(-4),%d0 4af40: 4fef 000c lea %sp@(12),%sp
}
4af44: 246e fff8 moveal %fp@(-8),%a2 4af48: 4e5e unlk %fp 4af4a: 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);
4af4c: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
4af52: 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);
4af56: 2040 moveal %d0,%a0 <== NOT EXECUTED 4af58: 7209 moveq #9,%d1 <== NOT EXECUTED 4af5a: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
4af5c: 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);
4af5e: 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 aa9c movel #371356,%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 b980 moveal 5b980 <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 b6e8 tstl 5b6e8 <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 a3f6 pea 5a3f6 <IntUartPollCallbacks.6368+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 b6e8 cmpl 5b6e8 <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 c778 jsr 4c778 <__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
...
00049a30 <devFS_close>:
#include "devfs.h"
int devFS_close(
rtems_libio_t *iop
)
{
49a30: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 49a34: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
49a38: 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;
49a3c: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
49a40: 2f29 000c movel %a1@(12),%sp@- <== NOT EXECUTED 49a44: 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;
49a48: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
args.flags = 0;
49a4c: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
args.mode = 0;
49a50: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
status = rtems_io_close(
49a54: 4eb9 0004 b398 jsr 4b398 <rtems_io_close> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
return rtems_deviceio_errno(status);
49a5a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49a5c: 4eb9 0004 9b58 jsr 49b58 <rtems_deviceio_errno> <== NOT EXECUTED
}
49a62: 4e5e unlk %fp <== NOT EXECUTED
...
00049a68 <devFS_evaluate_path>:
{
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
49a68: 70f8 moveq #-8,%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
49a6a: 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 ) )
49a6e: c0ae 0010 andl %fp@(16),%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
49a72: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ 49a76: 2c2e 0008 movel %fp@(8),%d6 49a7a: 262e 000c movel %fp@(12),%d3 49a7e: 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 ) )
49a82: 4a80 tstl %d0 49a84: 6600 0090 bnew 49b16 <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;
49a88: 2814 movel %a4@,%d4
if (!device_name_table)
49a8a: 6700 00a2 beqw 49b2e <devFS_evaluate_path+0xc6>
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++) {
49a8e: 2a39 0005 b6e8 movel 5b6e8 <rtems_device_table_size>,%d5
49a94: 673c beqs 49ad2 <devFS_evaluate_path+0x6a> <== NEVER TAKEN
49a96: 4280 clrl %d0 49a98: 4282 clrl %d2
if (!device_name_table[i].device_name)
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
49a9a: 4bf9 0004 dab8 lea 4dab8 <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)
49aa0: 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++) {
49aa2: 5282 addql #1,%d2
if (!device_name_table[i].device_name)
49aa4: e989 lsll #4,%d1 49aa6: 2041 moveal %d1,%a0 49aa8: 47f0 0c00 lea %a0@(00000000,%d0:l:4),%a3 49aac: 47f3 4800 lea %a3@(00000000,%d4:l),%a3 49ab0: 2453 moveal %a3@,%a2 49ab2: 4a8a tstl %a2
49ab4: 6716 beqs 49acc <devFS_evaluate_path+0x64>
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
49ab6: 2f03 movel %d3,%sp@- 49ab8: 2f0a movel %a2,%sp@- 49aba: 2f06 movel %d6,%sp@- 49abc: 4e95 jsr %a5@ 49abe: 4fef 000c lea %sp@(12),%sp 49ac2: 4a80 tstl %d0
49ac4: 6606 bnes 49acc <devFS_evaluate_path+0x64>
continue;
if (device_name_table[i].device_name[pathnamelen] != '\0')
49ac6: 4a32 3800 tstb %a2@(00000000,%d3:l)
49aca: 671e beqs 49aea <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++) {
49acc: 2002 movel %d2,%d0 49ace: b485 cmpl %d5,%d2
49ad0: 65ce bcss 49aa0 <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 );
49ad2: 4eb9 0004 c778 jsr 4c778 <__errno> 49ad8: 7202 moveq #2,%d1 49ada: 2040 moveal %d0,%a0 49adc: 70ff moveq #-1,%d0
}
49ade: 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 );
49ae4: 2081 movel %d1,%a0@
}
49ae6: 4e5e unlk %fp 49ae8: 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;
49aea: 2079 0005 b980 moveal 5b980 <rtems_current_user_env>,%a0 49af0: 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;
49af6: 223c 0005 b82c movel #374828,%d1
pathloc->ops = &devFS_ops;
49afc: 41f9 0005 b7e4 lea 5b7e4 <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;
49b02: 2941 0008 movel %d1,%a4@(8)
pathloc->ops = &devFS_ops;
49b06: 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];
49b0a: 288b movel %a3,%a4@
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49b0c: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 49b12: 4e5e unlk %fp 49b14: 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 );
49b16: 4eb9 0004 c778 jsr 4c778 <__errno> <== NOT EXECUTED 49b1c: 7601 moveq #1,%d3 <== NOT EXECUTED 49b1e: 2040 moveal %d0,%a0 <== NOT EXECUTED 49b20: 70ff moveq #-1,%d0 <== NOT EXECUTED 49b22: 2083 movel %d3,%a0@ <== NOT EXECUTED
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 <== NOT EXECUTED 49b2a: 4e5e unlk %fp <== NOT EXECUTED 49b2c: 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 );
49b2e: 4eb9 0004 c778 jsr 4c778 <__errno> <== NOT EXECUTED 49b34: 740e moveq #14,%d2 <== NOT EXECUTED 49b36: 2040 moveal %d0,%a0 <== NOT EXECUTED 49b38: 70ff moveq #-1,%d0 <== NOT EXECUTED 49b3a: 2082 movel %d2,%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
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 b6e8 movel 5b6e8 <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 966e jsr 4966e <_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 b6e8 movel 5b6e8 <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 d094 jsr 4d094 <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 b82c movel #374828,%d0
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
42230: 41f9 0005 b7e4 lea 5b7e4 <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 c778 jsr 4c778 <__errno>
/* 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 6788 jsr 46788 <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 9b58 jsr 49b58 <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 b6e8 movel 5b6e8 <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 d5c4 lea 4d5c4 <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 daa0 jsr 4daa0 <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 c778 jsr 4c778 <__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 c778 jsr 4c778 <__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 c778 jsr 4c778 <__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 c778 jsr 4c778 <__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 68ec jsr 468ec <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 9b58 jsr 49b58 <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 6934 jsr 46934 <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 9b58 jsr 49b58 <rtems_deviceio_errno> <== NOT EXECUTED 425e0: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
425e2: 4e5e unlk %fp <== NOT EXECUTED
...
0004dc02 <device_ftruncate>:
rtems_libio_t *iop,
rtems_off64_t length
)
{
return 0;
}
4dc02: 4280 clrl %d0 <== NOT EXECUTED
int device_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4dc04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; }
4dc08: 4e5e unlk %fp <== NOT EXECUTED
0004dba6 <device_ioctl>:
int device_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4dba6: 4e56 fff0 linkw %fp,#-16 4dbaa: 206e 0008 moveal %fp@(8),%a0
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4dbae: 486e fff0 pea %fp@(-16)
args.iop = iop;
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
4dbb2: 2268 0018 moveal %a0@(24),%a1
status = rtems_io_control(
4dbb6: 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;
4dbba: 2d6e 000c fff4 movel %fp@(12),%fp@(-12)
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4dbc0: 2f29 004c movel %a1@(76),%sp@-
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
args.command = command;
args.buffer = buffer;
4dbc4: 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;
4dbca: 2d48 fff0 movel %a0,%fp@(-16)
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4dbce: 4eb9 0004 e5d8 jsr 4e5d8 <rtems_io_control>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4dbd4: 4fef 000c lea %sp@(12),%sp 4dbd8: 4a80 tstl %d0
4dbda: 6608 bnes 4dbe4 <device_ioctl+0x3e> <== NEVER TAKEN
return rtems_deviceio_errno(status);
return args.ioctl_return;
4dbdc: 202e fffc movel %fp@(-4),%d0
}
4dbe0: 4e5e unlk %fp 4dbe2: 4e75 rts
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4dbe4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4dbe6: 4eb9 0004 e888 jsr 4e888 <rtems_deviceio_errno> <== NOT EXECUTED 4dbec: 588f addql #4,%sp <== NOT EXECUTED
return args.ioctl_return;
}
4dbee: 4e5e unlk %fp <== NOT EXECUTED
0004dbf2 <device_lseek>:
rtems_off64_t device_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4dbf2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return offset; }
4dbf6: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4dbfa: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 4dbfe: 4e5e unlk %fp <== NOT EXECUTED
0004dada <device_read>:
ssize_t device_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4dada: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4dade: 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(
4dae2: 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;
4dae6: 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(
4daea: 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;
4daee: 2d68 0014 fff8 movel %a0@(20),%fp@(-8) <== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_read(
4daf4: 2f29 004c movel %a1@(76),%sp@- <== NOT EXECUTED
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
4daf8: 2d6e 000c fff0 movel %fp@(12),%fp@(-16) <== NOT EXECUTED
args.count = count;
4dafe: 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;
4db04: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED 4db08: 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;
4db0c: 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;
4db10: 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;
4db14: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED 4db18: 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(
4db1c: 4eb9 0004 e668 jsr 4e668 <rtems_io_read> <== NOT EXECUTED
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4db22: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4db26: 4a80 tstl %d0 <== NOT EXECUTED 4db28: 6608 bnes 4db32 <device_read+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
4db2a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4db2e: 4e5e unlk %fp <== NOT EXECUTED 4db30: 4e75 rts <== NOT EXECUTED
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4db32: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db34: 4eb9 0004 e888 jsr 4e888 <rtems_deviceio_errno> <== NOT EXECUTED 4db3a: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
4db3c: 4e5e unlk %fp <== NOT EXECUTED
0004db40 <device_write>:
ssize_t device_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4db40: 4e56 ffe4 linkw %fp,#-28 4db44: 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(
4db48: 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;
4db4c: 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(
4db50: 2f29 0050 movel %a1@(80),%sp@-
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
4db54: 2d68 0014 fff8 movel %a0@(20),%fp@(-8)
args.bytes_moved = 0;
status = rtems_io_write(
4db5a: 2f29 004c movel %a1@(76),%sp@-
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
4db5e: 2d6e 000c fff0 movel %fp@(12),%fp@(-16)
args.count = count;
4db64: 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;
4db6a: 2028 000c movel %a0@(12),%d0 4db6e: 2228 0010 movel %a0@(16),%d1
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
4db72: 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;
4db76: 42ae fffc clrl %fp@(-4)
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4db7a: 2d40 ffe8 movel %d0,%fp@(-24) 4db7e: 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(
4db82: 4eb9 0004 e6b0 jsr 4e6b0 <rtems_io_write>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4db88: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4db8c: 4a80 tstl %d0 <== NOT EXECUTED 4db8e: 6608 bnes 4db98 <device_write+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
4db90: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4db94: 4e5e unlk %fp <== NOT EXECUTED 4db96: 4e75 rts <== NOT EXECUTED
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4db98: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db9a: 4eb9 0004 e888 jsr 4e888 <rtems_deviceio_errno> <== NOT EXECUTED 4dba0: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
4dba2: 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 6bcc jsr 46bcc <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 e670 moveal 5e670 <__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 0e70 movel 60e70 <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 f9aa jsr 4f9aa <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 0f4a movel 60f4a <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 f9aa jsr 4f9aa <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 e670 moveal 5e670 <__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 d4cd pea 5d4cd <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 e670 moveal 5e670 <__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 d4cd pea 5d4cd <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 e670 moveal 5e670 <__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 d4cf pea 5d4cf <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 d4cf pea 5d4cf <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 f914 cmpl 5f914 <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 1124 moveal 61124 <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 fb30 moveal 5fb30 <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 ecde pea 5ecde <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 fb30 moveal 5fb30 <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 f998 jsr 4f998 <__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 fb30 moveal 5fb30 <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 f998 jsr 4f998 <__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 f998 jsr 4f998 <__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 f914 cmpl 5f914 <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 1124 moveal 61124 <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 f998 jsr 4f998 <__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 f998 jsr 4f998 <__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 f914 cmpl 5f914 <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 1124 moveal 61124 <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 f998 jsr 4f998 <__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 f998 jsr 4f998 <__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 00d4 movel 600d4 <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 18e4 moveal 618e4 <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 fc50 jsr 4fc50 <__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 .short 0x0074 <== NOT EXECUTED 4383c: 0026 .short 0x0026 <== NOT EXECUTED 4383e: 0014 .short 0x0014 <== NOT EXECUTED 43840: 0014 .short 0x0014 <== NOT EXECUTED 43842: 0014 .short 0x0014 <== NOT EXECUTED 43844: 0014 .short 0x0014 <== NOT EXECUTED 43846: 0014 .short 0x0014 <== NOT EXECUTED
errno = ENOTSUP;
ret = -1;
break;
case F_GETOWN: /* for sockets. */
errno = ENOTSUP;
43848: 4eb9 0004 fc50 jsr 4fc50 <__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 fc50 jsr 4fc50 <__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 fc50 jsr 4fc50 <__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 18e4 moveal 618e4 <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 00d4 cmpl 600d4 <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 18e4 moveal 618e4 <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 fc50 jsr 4fc50 <__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 fc50 jsr 4fc50 <__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
...
0004cfb0 <fifo_open>:
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cfb0: 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) {
4cfb4: 2039 0006 1e78 movel 61e78 <pipe_semaphore>,%d0 <== NOT EXECUTED
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cfba: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 4cfbe: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 4cfc2: 47f9 0004 8804 lea 48804 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED 4cfc8: 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) {
4cfcc: 4a80 tstl %d0 <== NOT EXECUTED 4cfce: 677e beqs 4d04e <fifo_open+0x9e> <== NOT EXECUTED
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4cfd0: 42a7 clrl %sp@- <== NOT EXECUTED 4cfd2: 42a7 clrl %sp@- <== NOT EXECUTED 4cfd4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cfd6: 4e93 jsr %a3@ <== NOT EXECUTED
}
if (sc == RTEMS_SUCCESSFUL) {
4cfd8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cfdc: 4a80 tstl %d0 <== NOT EXECUTED 4cfde: 6600 0378 bnew 4d358 <fifo_open+0x3a8> <== NOT EXECUTED
err = pipe_lock();
if (err)
return err;
pipe = *pipep;
4cfe2: 2a54 moveal %a4@,%a5 <== NOT EXECUTED
if (pipe == NULL) {
4cfe4: 4a8d tstl %a5 <== NOT EXECUTED 4cfe6: 6700 0118 beqw 4d100 <fifo_open+0x150> <== NOT EXECUTED
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4cfea: 42a7 clrl %sp@- <== NOT EXECUTED 4cfec: 42a7 clrl %sp@- <== NOT EXECUTED 4cfee: 2f2d 0028 movel %a5@(40),%sp@- <== NOT EXECUTED 4cff2: 4e93 jsr %a3@ <== NOT EXECUTED 4cff4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cff8: 4a80 tstl %d0 <== NOT EXECUTED 4cffa: 6600 0084 bnew 4d080 <fifo_open+0xd0> <== NOT EXECUTED 4cffe: 95ca subal %a2,%a2 <== NOT EXECUTED
err = -EINTR;
if (*pipep == NULL) {
4d000: 4a94 tstl %a4@ <== NOT EXECUTED 4d002: 6700 0310 beqw 4d314 <fifo_open+0x364> <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d006: 4eba fec4 jsr %pc@(4cecc <pipe_unlock>) <== NOT EXECUTED
pipe_control_t *pipe;
unsigned int prevCounter;
int err;
err = pipe_new(pipep);
if (err)
4d00a: 4a8a tstl %a2 <== NOT EXECUTED 4d00c: 6634 bnes 4d042 <fifo_open+0x92> <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
4d00e: 7006 moveq #6,%d0 <== NOT EXECUTED 4d010: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d012: 7204 moveq #4,%d1 <== NOT EXECUTED 4d014: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
int err;
err = pipe_new(pipep);
if (err)
return err;
pipe = *pipep;
4d018: 2454 moveal %a4@,%a2 <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
4d01a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d01c: 6700 027a beqw 4d298 <fifo_open+0x2e8> <== NOT EXECUTED 4d020: 123c 0006 moveb #6,%d1 <== NOT EXECUTED 4d024: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d026: 6700 0220 beqw 4d248 <fifo_open+0x298> <== NOT EXECUTED 4d02a: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4d02e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d030: 6756 beqs 4d088 <fifo_open+0xd8> <== NOT EXECUTED 4d032: 4bf9 0004 8944 lea 48944 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d038: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d03c: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d03e: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d040: 588f addql #4,%sp <== NOT EXECUTED
out_error:
pipe_release(pipep, iop);
return err;
}
4d042: 200a movel %a2,%d0 <== NOT EXECUTED 4d044: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4d04a: 4e5e unlk %fp <== NOT EXECUTED 4d04c: 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 );
4d04e: 42a7 clrl %sp@- <== NOT EXECUTED 4d050: 42a7 clrl %sp@- <== NOT EXECUTED 4d052: 2f39 0006 2570 movel 62570 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4d058: 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) {
4d05a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d05e: 4ab9 0006 1e78 tstl 61e78 <pipe_semaphore> <== NOT EXECUTED 4d064: 6700 02be beqw 4d324 <fifo_open+0x374> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4d068: 2f39 0006 2570 movel 62570 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4d06e: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED 4d074: 2039 0006 1e78 movel 61e78 <pipe_semaphore>,%d0 <== NOT EXECUTED 4d07a: 588f addql #4,%sp <== NOT EXECUTED 4d07c: 6000 ff52 braw 4cfd0 <fifo_open+0x20> <== NOT EXECUTED
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
err = -EINTR;
4d080: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED 4d084: 6000 ff7a braw 4d000 <fifo_open+0x50> <== NOT EXECUTED
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4d088: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4d08c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d08e: 5288 addql #1,%a0 <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
4d090: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4d094: 2548 0010 movel %a0,%a2@(16) <== NOT EXECUTED 4d098: 4a80 tstl %d0 <== NOT EXECUTED 4d09a: 6700 02f4 beqw 4d390 <fifo_open+0x3e0> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
if (pipe->Writers == 0) {
4d09e: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4d0a2: 668e bnes 4d032 <fifo_open+0x82> <== NOT EXECUTED
/* Not an error */
if (LIBIO_NODELAY(iop))
4d0a4: 7001 moveq #1,%d0 <== NOT EXECUTED 4d0a6: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d0a8: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED 4d0ac: 6684 bnes 4d032 <fifo_open+0x82> <== NOT EXECUTED
break;
prevCounter = pipe->writerCounter;
4d0ae: 282a 0024 movel %a2@(36),%d4 <== NOT EXECUTED 4d0b2: 4bf9 0004 8944 lea 48944 <rtems_semaphore_release>,%a5 <== NOT EXECUTED 4d0b8: 263c 0004 effc movel #323580,%d3 <== NOT EXECUTED
err = -EINTR;
/* Wait until a writer opens the pipe */
do {
PIPE_UNLOCK(pipe);
4d0be: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d0c2: 4e95 jsr %a5@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4d0c4: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d0c6: 42a7 clrl %sp@- <== NOT EXECUTED 4d0c8: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d0cc: 4e90 jsr %a0@ <== NOT EXECUTED 4d0ce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0d2: 4a80 tstl %d0 <== NOT EXECUTED 4d0d4: 6600 02ce bnew 4d3a4 <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4d0d8: 42a7 clrl %sp@- <== NOT EXECUTED 4d0da: 42a7 clrl %sp@- <== NOT EXECUTED 4d0dc: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d0e0: 4e93 jsr %a3@ <== NOT EXECUTED 4d0e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0e6: 4a80 tstl %d0 <== NOT EXECUTED 4d0e8: 6600 02ba bnew 4d3a4 <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->writerCounter);
4d0ec: b8aa 0024 cmpl %a2@(36),%d4 <== NOT EXECUTED 4d0f0: 67cc beqs 4d0be <fifo_open+0x10e> <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d0f2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d0f6: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d0f8: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d0fa: 588f addql #4,%sp <== NOT EXECUTED 4d0fc: 6000 ff44 braw 4d042 <fifo_open+0x92> <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4d100: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED 4d104: 45f9 0004 52a8 lea 452a8 <malloc>,%a2 <== NOT EXECUTED 4d10a: 4e92 jsr %a2@ <== NOT EXECUTED
if (pipe == NULL)
4d10c: 588f addql #4,%sp <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4d10e: 2a40 moveal %d0,%a5 <== NOT EXECUTED 4d110: 2600 movel %d0,%d3 <== NOT EXECUTED
if (pipe == NULL)
4d112: 6700 0330 beqw 4d444 <fifo_open+0x494> <== NOT EXECUTED
return err;
memset(pipe, 0, sizeof(pipe_control_t));
4d116: 2040 moveal %d0,%a0 <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4d118: 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));
4d11e: 4298 clrl %a0@+ <== NOT EXECUTED 4d120: 5888 addql #4,%a0 <== NOT EXECUTED 4d122: 4298 clrl %a0@+ <== NOT EXECUTED 4d124: 4298 clrl %a0@+ <== NOT EXECUTED 4d126: 4298 clrl %a0@+ <== NOT EXECUTED 4d128: 4298 clrl %a0@+ <== NOT EXECUTED 4d12a: 4298 clrl %a0@+ <== NOT EXECUTED 4d12c: 4298 clrl %a0@+ <== NOT EXECUTED 4d12e: 4298 clrl %a0@+ <== NOT EXECUTED 4d130: 4298 clrl %a0@+ <== NOT EXECUTED 4d132: 4298 clrl %a0@+ <== NOT EXECUTED 4d134: 4298 clrl %a0@+ <== NOT EXECUTED 4d136: 4290 clrl %a0@ <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4d138: 2b40 0004 movel %d0,%a5@(4) <== NOT EXECUTED
pipe->Buffer = malloc(pipe->Size);
4d13c: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb> <== NOT EXECUTED 4d140: 4e92 jsr %a2@ <== NOT EXECUTED
if (! pipe->Buffer)
4d142: 588f addql #4,%sp <== NOT EXECUTED 4d144: 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);
4d14a: 2a80 movel %d0,%a5@ <== NOT EXECUTED
if (! pipe->Buffer)
4d14c: 6700 02f0 beqw 4d43e <fifo_open+0x48e> <== NOT EXECUTED
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d150: 486d 002c pea %a5@(44) <== NOT EXECUTED 4d154: 45f9 0004 edec lea 4edec <rtems_barrier_create>,%a2 <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4d15a: 1039 0006 0f64 moveb 60f64 <c.6470>,%d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d160: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4d162: 49c0 extbl %d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d164: 42a7 clrl %sp@- <== NOT EXECUTED 4d166: 0080 5049 7200 oril #1346990592,%d0 <== NOT EXECUTED 4d16c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d16e: 4e92 jsr %a2@ <== NOT EXECUTED 4d170: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d174: 4a80 tstl %d0 <== NOT EXECUTED 4d176: 6600 02b8 bnew 4d430 <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(
4d17a: 486d 0030 pea %a5@(48) <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4d17e: 1039 0006 0f64 moveb 60f64 <c.6470>,%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(
4d184: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4d186: 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(
4d188: 42a7 clrl %sp@- <== NOT EXECUTED 4d18a: 0080 5049 7700 oril #1346991872,%d0 <== NOT EXECUTED 4d190: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d192: 4e92 jsr %a2@ <== NOT EXECUTED 4d194: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d198: 45f9 0004 eee4 lea 4eee4 <rtems_barrier_delete>,%a2 <== NOT EXECUTED 4d19e: 4a80 tstl %d0 <== NOT EXECUTED 4d1a0: 6600 0284 bnew 4d426 <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(
4d1a4: 486d 0028 pea %a5@(40) <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4d1a8: 1039 0006 0f64 moveb 60f64 <c.6470>,%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(
4d1ae: 42a7 clrl %sp@- <== NOT EXECUTED 4d1b0: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4d1b4: 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(
4d1b6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4d1ba: 0080 5049 7300 oril #1346990848,%d0 <== NOT EXECUTED 4d1c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d1c2: 4eb9 0004 8568 jsr 48568 <rtems_semaphore_create> <== NOT EXECUTED 4d1c8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4d1cc: 4a80 tstl %d0 <== NOT EXECUTED 4d1ce: 6600 0248 bnew 4d418 <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
4d1d2: 280e movel %fp,%d4 <== NOT EXECUTED 4d1d4: 5184 subql #8,%d4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4d1d6: 263c 0004 a120 movel #303392,%d3 <== NOT EXECUTED 4d1dc: 2043 moveal %d3,%a0 <== NOT EXECUTED
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
_Thread_Enable_dispatch();
4d1de: 45f9 0004 ac82 lea 4ac82 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 4d1e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d1e6: 2f2d 002c movel %a5@(44),%sp@- <== NOT EXECUTED 4d1ea: 4879 0006 2f1c pea 62f1c <_Barrier_Information> <== NOT EXECUTED 4d1f0: 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;
4d1f2: 223c 1000 0000 movel #268435456,%d1 <== NOT EXECUTED 4d1f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d1fa: 83a8 004c orl %d1,%a0@(76) <== NOT EXECUTED
_Thread_Enable_dispatch();
4d1fe: 4e92 jsr %a2@ <== NOT EXECUTED 4d200: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d202: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d204: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED 4d208: 4879 0006 2f1c pea 62f1c <_Barrier_Information> <== NOT EXECUTED 4d20e: 4e90 jsr %a0@ <== NOT EXECUTED
_Barrier_Get(pipe->writeBarrier, &location)->Barrier.Wait_queue.state
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
4d210: 223c 1000 0000 movel #268435456,%d1 <== NOT EXECUTED 4d216: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d218: 83a8 004c orl %d1,%a0@(76) <== NOT EXECUTED
_Thread_Enable_dispatch();
4d21c: 4e92 jsr %a2@ <== NOT EXECUTED
#ifdef RTEMS_POSIX_API
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
4d21e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4d222: 1039 0006 0f64 moveb 60f64 <c.6470>,%d0 <== NOT EXECUTED 4d228: 49c0 extbl %d0 <== NOT EXECUTED 4d22a: 2200 movel %d0,%d1 <== NOT EXECUTED 4d22c: 5281 addql #1,%d1 <== NOT EXECUTED 4d22e: 13c1 0006 0f64 moveb %d1,60f64 <c.6470> <== NOT EXECUTED 4d234: 727a moveq #122,%d1 <== NOT EXECUTED 4d236: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d238: 6600 fdb0 bnew 4cfea <fifo_open+0x3a> <== NOT EXECUTED
c = 'a';
4d23c: 7061 moveq #97,%d0 <== NOT EXECUTED 4d23e: 13c0 0006 0f64 moveb %d0,60f64 <c.6470> <== NOT EXECUTED 4d244: 6000 fda4 braw 4cfea <fifo_open+0x3a> <== NOT EXECUTED
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4d248: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 4d24c: 2200 movel %d0,%d1 <== NOT EXECUTED 4d24e: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->readerCounter);
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
4d250: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4d254: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED 4d258: 4a80 tstl %d0 <== NOT EXECUTED 4d25a: 6700 0120 beqw 4d37c <fifo_open+0x3cc> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4d25e: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d262: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d264: 5288 addql #1,%a0 <== NOT EXECUTED
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
4d266: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED 4d26a: 4bf9 0004 8944 lea 48944 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4d270: 2548 0014 movel %a0,%a2@(20) <== NOT EXECUTED 4d274: 4a80 tstl %d0 <== NOT EXECUTED 4d276: 6600 fdc0 bnew 4d038 <fifo_open+0x88> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4d27a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d27e: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d282: 4eb9 0004 ef84 jsr 4ef84 <rtems_barrier_release> <== NOT EXECUTED 4d288: 508f addql #8,%sp <== NOT EXECUTED
break;
}
PIPE_UNLOCK(pipe);
4d28a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d28e: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d290: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d292: 588f addql #4,%sp <== NOT EXECUTED 4d294: 6000 fdac braw 4d042 <fifo_open+0x92> <== NOT EXECUTED
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4d298: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d29c: 2200 movel %d0,%d1 <== NOT EXECUTED 4d29e: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->writerCounter);
}
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
4d2a0: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4d2a4: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED 4d2a8: 4a80 tstl %d0 <== NOT EXECUTED 4d2aa: 6700 00bc beqw 4d368 <fifo_open+0x3b8> <== NOT EXECUTED 4d2ae: 4bf9 0004 8944 lea 48944 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
4d2b4: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d2b8: 6600 fd7e bnew 4d038 <fifo_open+0x88> <== NOT EXECUTED 4d2bc: 7001 moveq #1,%d0 <== NOT EXECUTED 4d2be: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d2c0: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED 4d2c4: 6600 0138 bnew 4d3fe <fifo_open+0x44e> <== NOT EXECUTED
err = -ENXIO;
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
4d2c8: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED 4d2cc: 263c 0004 effc movel #323580,%d3 <== NOT EXECUTED
err = -EINTR;
do {
PIPE_UNLOCK(pipe);
4d2d2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d2d6: 4e95 jsr %a5@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4d2d8: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d2da: 42a7 clrl %sp@- <== NOT EXECUTED 4d2dc: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d2e0: 4e90 jsr %a0@ <== NOT EXECUTED 4d2e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d2e6: 4a80 tstl %d0 <== NOT EXECUTED 4d2e8: 6600 00ba bnew 4d3a4 <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4d2ec: 42a7 clrl %sp@- <== NOT EXECUTED 4d2ee: 42a7 clrl %sp@- <== NOT EXECUTED 4d2f0: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d2f4: 4e93 jsr %a3@ <== NOT EXECUTED 4d2f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d2fa: 4a80 tstl %d0 <== NOT EXECUTED 4d2fc: 6600 00a6 bnew 4d3a4 <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->readerCounter);
4d300: b8aa 0020 cmpl %a2@(32),%d4 <== NOT EXECUTED 4d304: 67cc beqs 4d2d2 <fifo_open+0x322> <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d306: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d30a: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d30c: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d30e: 588f addql #4,%sp <== NOT EXECUTED 4d310: 6000 fd30 braw 4d042 <fifo_open+0x92> <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
err = -EINTR;
if (*pipep == NULL) {
if (err)
4d314: 4a8a tstl %a2 <== NOT EXECUTED 4d316: 6600 00a8 bnew 4d3c0 <fifo_open+0x410> <== NOT EXECUTED
pipe_free(pipe);
else
*pipep = pipe;
4d31a: 288d movel %a5,%a4@ <== NOT EXECUTED
}
out:
pipe_unlock();
4d31c: 4eba fbae jsr %pc@(4cecc <pipe_unlock>) <== NOT EXECUTED 4d320: 6000 fcec braw 4d00e <fifo_open+0x5e> <== NOT EXECUTED
if (pipe_semaphore == RTEMS_ID_NONE) {
rtems_libio_lock();
if (pipe_semaphore == RTEMS_ID_NONE) {
sc = rtems_semaphore_create(
4d324: 4879 0006 1e78 pea 61e78 <pipe_semaphore> <== NOT EXECUTED 4d32a: 42a7 clrl %sp@- <== NOT EXECUTED 4d32c: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f> <== NOT EXECUTED 4d330: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4d334: 2f3c 5049 5045 movel #1346981957,%sp@- <== NOT EXECUTED 4d33a: 4eb9 0004 8568 jsr 48568 <rtems_semaphore_create> <== NOT EXECUTED 4d340: 2f39 0006 2570 movel 62570 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4d346: 2600 movel %d0,%d3 <== NOT EXECUTED 4d348: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d34e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4d352: 4a83 tstl %d3 <== NOT EXECUTED 4d354: 6700 00f8 beqw 4d44e <fifo_open+0x49e> <== NOT EXECUTED
)
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
4d358: 347c fff4 moveaw #-12,%a2 <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d35c: 200a movel %a2,%d0 <== NOT EXECUTED 4d35e: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4d364: 4e5e unlk %fp <== NOT EXECUTED 4d366: 4e75 rts <== NOT EXECUTED
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
4d368: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d36c: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d370: 4eb9 0004 ef84 jsr 4ef84 <rtems_barrier_release> <== NOT EXECUTED 4d376: 508f addql #8,%sp <== NOT EXECUTED 4d378: 6000 ff34 braw 4d2ae <fifo_open+0x2fe> <== NOT EXECUTED
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4d37c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d380: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d384: 4eb9 0004 ef84 jsr 4ef84 <rtems_barrier_release> <== NOT EXECUTED 4d38a: 508f addql #8,%sp <== NOT EXECUTED 4d38c: 6000 fed0 braw 4d25e <fifo_open+0x2ae> <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4d390: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d394: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d398: 4eb9 0004 ef84 jsr 4ef84 <rtems_barrier_release> <== NOT EXECUTED 4d39e: 508f addql #8,%sp <== NOT EXECUTED 4d3a0: 6000 fcfc braw 4d09e <fifo_open+0xee> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d3a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
err = -EINTR;
4d3a6: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d3aa: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d3ac: 4eb9 0004 cee2 jsr 4cee2 <pipe_release> <== NOT EXECUTED
return err;
4d3b2: 508f addql #8,%sp <== NOT EXECUTED
}
4d3b4: 200a movel %a2,%d0 <== NOT EXECUTED 4d3b6: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4d3bc: 4e5e unlk %fp <== NOT EXECUTED 4d3be: 4e75 rts <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d3c0: 2f2d 002c movel %a5@(44),%sp@- <== NOT EXECUTED 4d3c4: 49f9 0004 eee4 lea 4eee4 <rtems_barrier_delete>,%a4 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier); rtems_semaphore_delete(pipe->Semaphore); free(pipe->Buffer);
4d3ca: 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);
4d3d0: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4d3d2: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED 4d3d6: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4d3d8: 2f2d 0028 movel %a5@(40),%sp@- <== NOT EXECUTED 4d3dc: 4eb9 0004 872c jsr 4872c <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4d3e2: 2f15 movel %a5@,%sp@- <== NOT EXECUTED 4d3e4: 4e93 jsr %a3@ <== NOT EXECUTED
free(pipe);
4d3e6: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4d3e8: 4e93 jsr %a3@ <== NOT EXECUTED 4d3ea: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d3ee: 4eba fadc jsr %pc@(4cecc <pipe_unlock>) <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d3f2: 200a movel %a2,%d0 <== NOT EXECUTED 4d3f4: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4d3fa: 4e5e unlk %fp <== NOT EXECUTED 4d3fc: 4e75 rts <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4d3fe: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
err = -ENXIO;
4d402: 347c fffa moveaw #-6,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4d406: 4e95 jsr %a5@ <== NOT EXECUTED
err = -ENXIO;
goto out_error;
4d408: 588f addql #4,%sp <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d40a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d40c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d40e: 4eb9 0004 cee2 jsr 4cee2 <pipe_release> <== NOT EXECUTED
return err;
4d414: 508f addql #8,%sp <== NOT EXECUTED 4d416: 609c bras 4d3b4 <fifo_open+0x404> <== NOT EXECUTED
if (c ++ == 'z')
c = 'a';
return 0;
err_sem:
rtems_barrier_delete(pipe->writeBarrier);
4d418: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED 4d41c: 45f9 0004 eee4 lea 4eee4 <rtems_barrier_delete>,%a2 <== NOT EXECUTED 4d422: 4e92 jsr %a2@ <== NOT EXECUTED 4d424: 588f addql #4,%sp <== NOT EXECUTED
err_wbar: rtems_barrier_delete(pipe->readBarrier);
4d426: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d428: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED 4d42c: 4e92 jsr %a2@ <== NOT EXECUTED 4d42e: 588f addql #4,%sp <== NOT EXECUTED
err_rbar: free(pipe->Buffer);
4d430: 2043 moveal %d3,%a0 <== NOT EXECUTED 4d432: 45f9 0004 4a90 lea 44a90 <free>,%a2 <== NOT EXECUTED 4d438: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d43a: 4e92 jsr %a2@ <== NOT EXECUTED 4d43c: 588f addql #4,%sp <== NOT EXECUTED
err_buf: free(pipe);
4d43e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d440: 4e92 jsr %a2@ <== NOT EXECUTED 4d442: 588f addql #4,%sp <== NOT EXECUTED
)
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
4d444: 347c fff4 moveaw #-12,%a2 <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d448: 4eba fa82 jsr %pc@(4cecc <pipe_unlock>) <== NOT EXECUTED 4d44c: 60a4 bras 4d3f2 <fifo_open+0x442> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d44e: 2039 0006 1e78 movel 61e78 <pipe_semaphore>,%d0 <== NOT EXECUTED 4d454: 6000 fb7a braw 4cfd0 <fifo_open+0x20> <== NOT EXECUTED
0004b344 <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)
{
4b344: 4e56 0000 linkw %fp,#0 4b348: 2f0b movel %a3,%sp@- 4b34a: 266e 0008 moveal %fp@(8),%a3 4b34e: 2f0a movel %a2,%sp@- 4b350: 246e 000c moveal %fp@(12),%a2
find_arg *fa = arg;
if ( strcmp( entry->type, fa->type ) != 0 ) {
4b354: 2f12 movel %a2@,%sp@- 4b356: 2f13 movel %a3@,%sp@- 4b358: 4eb9 0004 f86c jsr 4f86c <strcmp> 4b35e: 508f addql #8,%sp 4b360: 4a80 tstl %d0
4b362: 6614 bnes 4b378 <find_handler+0x34> <== NEVER TAKEN
return false;
} else {
fa->mount_h = entry->mount_h;
4b364: 256b 0004 0004 movel %a3@(4),%a2@(4)
return true;
}
}
4b36a: 246e fff8 moveal %fp@(-8),%a2 4b36e: 266e fffc moveal %fp@(-4),%a3 4b372: 4e5e unlk %fp
if ( strcmp( entry->type, fa->type ) != 0 ) {
return false;
} else {
fa->mount_h = entry->mount_h;
return true;
4b374: 7001 moveq #1,%d0
} }
4b376: 4e75 rts
4b378: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4b37c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4b380: 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;
4b382: 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 f314 jsr 4f314 <__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 00d4 cmpl 600d4 <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 18e4 moveal 618e4 <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 fc50 jsr 4fc50 <__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 .short 0x006c <== NOT EXECUTED 43acc: 0060 .short 0x0060 <== NOT EXECUTED 43ace: 0054 .short 0x0054 <== NOT EXECUTED 43ad0: 0048 .short 0x0048 <== NOT EXECUTED 43ad2: 003c .short 0x003c <== NOT EXECUTED 43ad4: 0030 .short 0x0030 <== NOT EXECUTED 43ad6: 0024 .short 0x0024 <== NOT EXECUTED 43ad8: 0018 .short 0x0018 <== 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 fc50 jsr 4fc50 <__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 fbc8 addql #1,5fbc8 <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 fe64 cmpl 5fe64 <_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 eb36 moveal 5eb36 <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 e3a0 movel 5e3a0 <RTEMS_Malloc_Heap>,%sp@- 42d34: 4eb9 0004 8110 jsr 48110 <_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 e3a0 moveal 5e3a0 <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 d3e4 pea 5d3e4 <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 05c4 cmpal #394692,%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
0005bc1c <fstat>:
int fstat(
int fd,
struct stat *sbuf
)
{
5bc1c: 4e56 0000 linkw %fp,#0 5bc20: 202e 0008 movel %fp@(8),%d0 5bc24: 2f0a movel %a2,%sp@- 5bc26: 2f02 movel %d2,%sp@- 5bc28: 242e 000c movel %fp@(12),%d2
rtems_libio_t *iop;
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
5bc2c: 6770 beqs 5bc9e <fstat+0x82> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EFAULT );
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
5bc2e: b0b9 0005 e394 cmpl 5e394 <rtems_libio_number_iops>,%d0
5bc34: 644e bccs 5bc84 <fstat+0x68> <== NEVER TAKEN
5bc36: 2200 movel %d0,%d1 5bc38: ed88 lsll #6,%d0 5bc3a: e789 lsll #3,%d1 5bc3c: 2479 0005 fba4 moveal 5fba4 <rtems_libio_iops>,%a2 5bc42: 9081 subl %d1,%d0 5bc44: d5c0 addal %d0,%a2
rtems_libio_check_fd( fd ); rtems_libio_check_is_open(iop);
5bc46: 202a 0014 movel %a2@(20),%d0 5bc4a: 0280 0000 0100 andil #256,%d0
5bc50: 6732 beqs 5bc84 <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) );
5bc52: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> 5bc56: 42a7 clrl %sp@- 5bc58: 2f02 movel %d2,%sp@- 5bc5a: 4eb9 0004 f288 jsr 4f288 <memset>
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
5bc60: 206a 0020 moveal %a2@(32),%a0 5bc64: 45ea 0018 lea %a2@(24),%a2 5bc68: 4fef 000c lea %sp@(12),%sp 5bc6c: 2d42 000c movel %d2,%fp@(12)
}
5bc70: 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 );
5bc74: 2d4a 0008 movel %a2,%fp@(8)
}
5bc78: 246e fffc moveal %fp@(-4),%a2 5bc7c: 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 );
5bc7e: 2268 0018 moveal %a0@(24),%a1 5bc82: 4ed1 jmp %a1@
/* * Now process the stat() request. */ iop = rtems_libio_iop( fd ); rtems_libio_check_fd( fd ); rtems_libio_check_is_open(iop);
5bc84: 4eb9 0004 e96c jsr 4e96c <__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 );
}
5bc8a: 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);
5bc8e: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bc90: 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 );
}
5bc92: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5bc96: 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);
5bc98: 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 );
}
5bc9a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bc9c: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
rtems_set_errno_and_return_minus_one( EFAULT );
5bc9e: 4eb9 0004 e96c jsr 4e96c <__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 );
}
5bca4: 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 );
5bca8: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bcaa: 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 );
}
5bcac: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bcae: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5bcb2: 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 );
5bcb4: 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 00d4 cmpl 600d4 <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 18e4 moveal 618e4 <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 fc50 jsr 4fc50 <__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 fc50 jsr 4fc50 <__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
...
0004af74 <ftruncate>:
int ftruncate(
int fd,
off_t length
)
{
4af74: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4af78: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4af7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc;
rtems_libio_check_fd( fd );
4af7e: b0b9 0005 e394 cmpl 5e394 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 4af84: 6478 bccs 4affe <ftruncate+0x8a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
4af86: 2200 movel %d0,%d1 <== NOT EXECUTED 4af88: ed88 lsll #6,%d0 <== NOT EXECUTED 4af8a: e789 lsll #3,%d1 <== NOT EXECUTED 4af8c: 2479 0005 fba4 moveal 5fba4 <rtems_libio_iops>,%a2 <== NOT EXECUTED 4af92: 9081 subl %d1,%d0 <== NOT EXECUTED 4af94: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4af96: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4af9a: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED 4afa0: 675c beqs 4affe <ftruncate+0x8a> <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
4afa2: 2d6a 0018 ffec movel %a2@(24),%fp@(-20) <== NOT EXECUTED 4afa8: 2d6a 001c fff0 movel %a2@(28),%fp@(-16) <== NOT EXECUTED 4afae: 2d6a 0020 fff4 movel %a2@(32),%fp@(-12) <== NOT EXECUTED 4afb4: 2d6a 0024 fff8 movel %a2@(36),%fp@(-8) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
4afba: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
4afbe: 2d6a 0028 fffc movel %a2@(40),%fp@(-4) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
4afc4: 486e ffec pea %fp@(-20) <== NOT EXECUTED 4afc8: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4afcc: 4e90 jsr %a0@ <== NOT EXECUTED 4afce: 588f addql #4,%sp <== NOT EXECUTED 4afd0: 7201 moveq #1,%d1 <== NOT EXECUTED 4afd2: b280 cmpl %d0,%d1 <== NOT EXECUTED 4afd4: 6754 beqs 4b02a <ftruncate+0xb6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
4afd6: 7004 moveq #4,%d0 <== NOT EXECUTED 4afd8: c0aa 0014 andl %a2@(20),%d0 <== NOT EXECUTED 4afdc: 6736 beqs 4b014 <ftruncate+0xa0> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
4afde: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED 4afe2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4afe6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4afea: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4afec: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED 4aff0: 4e90 jsr %a0@ <== NOT EXECUTED
}
4aff2: 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 );
4aff6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
4affa: 4e5e unlk %fp <== NOT EXECUTED 4affc: 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);
4affe: 4eb9 0004 e96c jsr 4e96c <__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 );
}
4b004: 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);
4b008: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b00a: 7209 moveq #9,%d1 <== NOT EXECUTED 4b00c: 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 );
}
4b00e: 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);
4b010: 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 );
}
4b012: 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 );
4b014: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b01a: 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 );
4b01e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b020: 7216 moveq #22,%d1 <== NOT EXECUTED 4b022: 70ff moveq #-1,%d0 <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b024: 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 );
4b026: 2081 movel %d1,%a0@ <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b028: 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 );
4b02a: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b030: 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 );
4b034: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b036: 7215 moveq #21,%d1 <== NOT EXECUTED 4b038: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4b03a: 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 );
4b03c: 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 e9a4 jsr 4e9a4 <__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 f6a8 moveal 5f6a8 <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
0005d874 <getdents>:
int getdents(
int dd_fd,
char *dd_buf,
int dd_len
)
{
5d874: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 5d878: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5d87c: 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 );
5d87e: b0b9 0006 0874 cmpl 60874 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 5d884: 6464 bccs 5d8ea <getdents+0x76> <== NOT EXECUTED 5d886: 2200 movel %d0,%d1 <== NOT EXECUTED 5d888: ed88 lsll #6,%d0 <== NOT EXECUTED 5d88a: e789 lsll #3,%d1 <== NOT EXECUTED 5d88c: 2479 0006 2194 moveal 62194 <rtems_libio_iops>,%a2 <== NOT EXECUTED 5d892: 9081 subl %d1,%d0 <== NOT EXECUTED 5d894: d5c0 addal %d0,%a2 <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
5d896: 2d6a 0018 ffec movel %a2@(24),%fp@(-20) <== NOT EXECUTED 5d89c: 2d6a 001c fff0 movel %a2@(28),%fp@(-16) <== NOT EXECUTED 5d8a2: 2d6a 0020 fff4 movel %a2@(32),%fp@(-12) <== NOT EXECUTED 5d8a8: 2d6a 0024 fff8 movel %a2@(36),%fp@(-8) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5d8ae: 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;
5d8b2: 2d6a 0028 fffc movel %a2@(40),%fp@(-4) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5d8b8: 486e ffec pea %fp@(-20) <== NOT EXECUTED 5d8bc: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 5d8c0: 4e90 jsr %a0@ <== NOT EXECUTED 5d8c2: 588f addql #4,%sp <== NOT EXECUTED 5d8c4: 7201 moveq #1,%d1 <== NOT EXECUTED 5d8c6: b280 cmpl %d0,%d1 <== NOT EXECUTED 5d8c8: 6624 bnes 5d8ee <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 );
5d8ca: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED 5d8ce: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5d8d2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5d8d6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5d8d8: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED 5d8dc: 4e90 jsr %a0@ <== NOT EXECUTED
}
5d8de: 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 );
5d8e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
5d8e6: 4e5e unlk %fp <== NOT EXECUTED 5d8e8: 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 );
5d8ea: 95ca subal %a2,%a2 <== NOT EXECUTED 5d8ec: 60a8 bras 5d896 <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 );
5d8ee: 4eb9 0004 fd18 jsr 4fd18 <__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 ); }
5d8f4: 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 );
5d8f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 5d8fa: 7214 moveq #20,%d1 <== NOT EXECUTED 5d8fc: 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 ); }
5d8fe: 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 );
5d900: 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 0006 0070 moveal 60070 <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 1228 lea 51228 <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 f707 pea 5f707 <_global_impure_ptr+0xbf> <== NOT EXECUTED 438e6: 4879 0005 ee98 pea 5ee98 <rtems_status_assoc+0x21a> <== NOT EXECUTED 438ec: 4eb9 0005 00a8 jsr 500a8 <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 f9aa jsr 4f9aa <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 f9aa jsr 4f9aa <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43956: 4eb9 0004 f85c jsr 4f85c <__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 f85c jsr 4f85c <__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 0e70 movel 60e70 <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 0e82 pea 60e82 <grbuf> <== NOT EXECUTED 43c80: 4879 0006 0e74 pea 60e74 <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 0e74 andil #396916,%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 0e82 pea 60e82 <grbuf> <== NOT EXECUTED 43c40: 4879 0006 0e74 pea 60e74 <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 0e82 pea 60e82 <grbuf> <== NOT EXECUTED 43bdc: 4879 0006 0e74 pea 60e74 <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 f1c0 jsr 4f1c0 <__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 f1c0 jsr 4f1c0 <__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 f1c0 jsr 4f1c0 <__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 0006 0070 moveal 60070 <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 0006 0070 movel 60070 <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 ef82 movel #388994,%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 1798 jsr 51798 <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
...
0005bcd4 <getpid>:
*/
pid_t getpid( void )
{
return _Objects_Local_node;
}
5bcd4: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getpid( void )
{
5bcd6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Local_node; }
5bcda: 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 0e6c movel 60e6c <_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 1228 lea 51228 <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 f707 pea 5f707 <_global_impure_ptr+0xbf> <== NOT EXECUTED 439ba: 4879 0005 ee23 pea 5ee23 <rtems_status_assoc+0x1a5> <== NOT EXECUTED 439c0: 4eb9 0005 00a8 jsr 500a8 <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 f9aa jsr 4f9aa <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 f9aa jsr 4f9aa <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43a2c: 4eb9 0004 f85c jsr 4f85c <__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 f85c jsr 4f85c <__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 0f4a movel 60f4a <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 0f6a pea 60f6a <pwbuf> <== NOT EXECUTED 43b34: 4879 0006 0f4e pea 60f4e <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 0f4e andil #397134,%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 0f6a pea 60f6a <pwbuf> <== NOT EXECUTED 43a90: 4879 0006 0f4e pea 60f4e <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 0f6a pea 60f6a <pwbuf> <== NOT EXECUTED 43af4: 4879 0006 0f4e pea 60f4e <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 ec40 jsr 4ec40 <__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 ec40 jsr 4ec40 <__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 ec40 jsr 4ec40 <__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 7368 jsr 47368 <_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 e96c jsr 4e96c <__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 0006 0070 moveal 60070 <rtems_current_user_env>,%a0 <== NOT EXECUTED
}
43d8a: 4e5e unlk %fp <== NOT EXECUTED 43d8c: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
...
0004dd34 <imfs_dir_close>:
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4dd34: 4280 clrl %d0 <== NOT EXECUTED
*/
int imfs_dir_close(
rtems_libio_t *iop
)
{
4dd36: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4dd3a: 4e5e unlk %fp <== NOT EXECUTED
0004ddce <imfs_dir_fstat>:
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4ddce: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
4ddd2: 4280 clrl %d0 <== NOT EXECUTED 4ddd4: 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;
4ddd6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4ddda: 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;
4ddde: 2050 moveal %a0@,%a0 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4dde0: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
4dde4: 2408 movel %a0,%d2 <== NOT EXECUTED 4dde6: 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;
4ddec: 2368 0034 0008 movel %a0@(52),%a1@(8) <== NOT EXECUTED
buf->st_mode = the_jnode->st_mode;
4ddf2: 2368 002e 000c movel %a0@(46),%a1@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4ddf8: 3368 0032 0010 movew %a0@(50),%a1@(16) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4ddfe: 3368 0038 0012 movew %a0@(56),%a1@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4de04: 3368 003a 0014 movew %a0@(58),%a1@(20) <== NOT EXECUTED
buf->st_rdev = 0ll; buf->st_blksize = 0;
4de0a: 42a9 003e clrl %a1@(62) <== NOT EXECUTED
buf->st_blocks = 0; buf->st_atime = the_jnode->stat_atime;
4de0e: 2368 003c 0026 movel %a0@(60),%a1@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4de14: 2368 0040 002e movel %a0@(64),%a1@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4de1a: 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;
4de20: 2280 movel %d0,%a1@ <== NOT EXECUTED 4de22: 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;
4de26: 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;
4de2a: 2340 0016 movel %d0,%a1@(22) <== NOT EXECUTED 4de2e: 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;
4de32: 2340 001e movel %d0,%a1@(30) <== NOT EXECUTED 4de36: 2341 0022 movel %d1,%a1@(34) <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de3a: 2068 004c moveal %a0@(76),%a0 <== 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 = rtems_chain_first( the_chain );
4de3e: b488 cmpl %a0,%d2 <== NOT EXECUTED 4de40: 6724 beqs 4de66 <imfs_dir_fstat+0x98> <== NOT EXECUTED 4de42: 4280 clrl %d0 <== NOT EXECUTED 4de44: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED 4de4a: 2800 movel %d0,%d4 <== NOT EXECUTED 4de4c: 2601 movel %d1,%d3 <== NOT EXECUTED
!rtems_chain_is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
4de4e: 2050 moveal %a0@,%a0 <== NOT EXECUTED 4de50: 4285 clrl %d5 <== NOT EXECUTED 4de52: 0681 0000 0110 addil #272,%d1 <== NOT EXECUTED 4de58: 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 = rtems_chain_first( the_chain );
4de5a: b488 cmpl %a0,%d2 <== NOT EXECUTED 4de5c: 66ec bnes 4de4a <imfs_dir_fstat+0x7c> <== NOT EXECUTED 4de5e: 2344 001e movel %d4,%a1@(30) <== NOT EXECUTED 4de62: 2343 0022 movel %d3,%a1@(34) <== NOT EXECUTED
buf->st_size = buf->st_size + sizeof( struct dirent );
}
return 0;
}
4de66: 4280 clrl %d0 <== NOT EXECUTED 4de68: 4cd7 003c moveml %sp@,%d2-%d5 <== NOT EXECUTED 4de6c: 4e5e unlk %fp <== NOT EXECUTED
0004dd3e <imfs_dir_lseek>:
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
switch( whence ) {
4dd3e: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_off64_t imfs_dir_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4dd40: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4dd44: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED 4dd48: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
switch( whence ) {
4dd4c: b0ae 0014 cmpl %fp@(20),%d0 <== NOT EXECUTED 4dd50: 6422 bccs 4dd74 <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 );
4dd52: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4dd58: 2440 moveal %d0,%a2 <== NOT EXECUTED 4dd5a: 7016 moveq #22,%d0 <== NOT EXECUTED 4dd5c: 307c ffff moveaw #-1,%a0 <== NOT EXECUTED 4dd60: 327c ffff moveaw #-1,%a1 <== NOT EXECUTED 4dd64: 2480 movel %d0,%a2@ <== NOT EXECUTED
break;
}
return 0;
}
4dd66: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 4dd6c: 2008 movel %a0,%d0 <== NOT EXECUTED 4dd6e: 2209 movel %a1,%d1 <== NOT EXECUTED 4dd70: 4e5e unlk %fp <== NOT EXECUTED 4dd72: 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)) *
4dd74: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED 4dd78: 741c moveq #28,%d2 <== NOT EXECUTED 4dd7a: 42a7 clrl %sp@- <== NOT EXECUTED 4dd7c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4dd80: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 4dd84: 4eb9 0005 a804 jsr 5a804 <__divdi3> <== NOT EXECUTED 4dd8a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4dd8e: 2c01 movel %d1,%d6 <== NOT EXECUTED 4dd90: e4ae lsrl %d2,%d6 <== NOT EXECUTED 4dd92: 2400 movel %d0,%d2 <== NOT EXECUTED 4dd94: 2601 movel %d1,%d3 <== NOT EXECUTED 4dd96: 721c moveq #28,%d1 <== NOT EXECUTED 4dd98: e98a lsll #4,%d2 <== NOT EXECUTED 4dd9a: e98b lsll #4,%d3 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
4dd9c: 91c8 subal %a0,%a0 <== NOT EXECUTED 4dd9e: 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)) *
4dda0: 8486 orl %d6,%d2 <== NOT EXECUTED 4dda2: 2003 movel %d3,%d0 <== NOT EXECUTED 4dda4: e2a8 lsrl %d1,%d0 <== NOT EXECUTED 4dda6: 2802 movel %d2,%d4 <== NOT EXECUTED 4dda8: 2a03 movel %d3,%d5 <== NOT EXECUTED 4ddaa: e98c lsll #4,%d4 <== NOT EXECUTED 4ddac: e98d lsll #4,%d5 <== NOT EXECUTED 4ddae: 8880 orl %d0,%d4 <== NOT EXECUTED 4ddb0: 2002 movel %d2,%d0 <== NOT EXECUTED 4ddb2: 2203 movel %d3,%d1 <== NOT EXECUTED 4ddb4: d285 addl %d5,%d1 <== NOT EXECUTED 4ddb6: d184 addxl %d4,%d0 <== NOT EXECUTED 4ddb8: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED 4ddbc: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
}
4ddc0: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED 4ddc6: 2008 movel %a0,%d0 <== NOT EXECUTED 4ddc8: 2209 movel %a1,%d1 <== NOT EXECUTED 4ddca: 4e5e unlk %fp <== NOT EXECUTED
0004dc0c <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 )
4dc0c: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4dc0e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4dc12: 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 )
4dc16: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4dc1a: 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 )
4dc1c: b0a9 0048 cmpl %a1@(72),%d0 <== NOT EXECUTED 4dc20: 6708 beqs 4dc2a <imfs_dir_open+0x1e> <== NOT EXECUTED
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
return 0;
}
4dc22: 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 */
4dc24: 70ff moveq #-1,%d0 <== NOT EXECUTED
iop->offset = 0;
return 0;
}
4dc26: 4e5e unlk %fp <== NOT EXECUTED 4dc28: 4e75 rts <== NOT EXECUTED
if ( the_jnode->type != IMFS_DIRECTORY )
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
return 0;
4dc2a: 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;
4dc2c: 4281 clrl %d1 <== NOT EXECUTED 4dc2e: 4282 clrl %d2 <== NOT EXECUTED 4dc30: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED 4dc34: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
return 0; }
4dc38: 241f movel %sp@+,%d2 <== NOT EXECUTED 4dc3a: 4e5e unlk %fp <== NOT EXECUTED
0004dc3e <imfs_dir_read>:
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4dc3e: 4e56 fec4 linkw %fp,#-316 <== NOT EXECUTED 4dc42: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4dc46: 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;
4dc4a: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4dc4e: 2a08 movel %a0,%d5 <== NOT EXECUTED 4dc50: 0685 0000 0050 addil #80,%d5 <== NOT EXECUTED
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4dc56: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4dc5a: 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 ) )
4dc5e: ba8a cmpl %a2,%d5 <== NOT EXECUTED 4dc60: 6700 00c4 beqw 4dd26 <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);
4dc64: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED 4dc6a: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED
/* Move to the first of the desired directory entries */
the_node = rtems_chain_first( the_chain );
bytes_transferred = 0;
first_entry = iop->offset;
4dc6e: 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);
4dc72: 2004 movel %d4,%d0 <== NOT EXECUTED 4dc74: e18c lsll #8,%d4 <== NOT EXECUTED 4dc76: e988 lsll #4,%d0 <== NOT EXECUTED 4dc78: d880 addl %d0,%d4 <== NOT EXECUTED 4dc7a: d883 addl %d3,%d4 <== NOT EXECUTED
/* The directory was not empty so try to move to the desired entry in chain*/
for (
4dc7c: 4a84 tstl %d4 <== NOT EXECUTED 4dc7e: 6f00 00a6 blew 4dd26 <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 );
4dc82: 49ee fef0 lea %fp@(-272),%a4 <== NOT EXECUTED 4dc86: 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 (
4dc8a: 4282 clrl %d2 <== NOT EXECUTED 4dc8c: 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(
4dc8e: 4bf9 0004 f218 lea 4f218 <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 );
4dc94: 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 ) {
4dc98: b483 cmpl %d3,%d2 <== NOT EXECUTED 4dc9a: 6c1c bges 4dcb8 <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;
4dc9c: 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(
4dc9e: 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 (
4dca4: b484 cmpl %d4,%d2 <== NOT EXECUTED 4dca6: 6c04 bges 4dcac <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 ) ){
4dca8: ba8a cmpl %a2,%d5 <== NOT EXECUTED 4dcaa: 66ec bnes 4dc98 <imfs_dir_read+0x5a> <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4dcac: 2006 movel %d6,%d0 <== NOT EXECUTED 4dcae: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4dcb4: 4e5e unlk %fp <== NOT EXECUTED 4dcb6: 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 );
4dcb8: 2e0a movel %a2,%d7 <== NOT EXECUTED 4dcba: 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;
4dcc0: 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 );
4dcc6: 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 );
4dcca: 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 );
4dccc: 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;
4dcd0: 2d42 fef8 movel %d2,%fp@(-264) <== NOT EXECUTED 4dcd4: 5bc0 smi %d0 <== NOT EXECUTED 4dcd6: 49c0 extbl %d0 <== NOT EXECUTED 4dcd8: 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 );
4dcdc: 4eb9 0004 fdc4 jsr 4fdc4 <strlen> <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4dce2: 2e87 movel %d7,%sp@ <== NOT EXECUTED 4dce4: 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 );
4dce8: 3d40 fefe movew %d0,%fp@(-258) <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4dcec: 4eb9 0004 f918 jsr 4f918 <strcpy> <== NOT EXECUTED
memcpy(
4dcf2: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED 4dcf6: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4dcfa: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4dcfc: 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 );
4dd00: 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(
4dd06: 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 );
4dd08: 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);
4dd0c: 4280 clrl %d0 <== NOT EXECUTED 4dd0e: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED 4dd14: d3ab 0010 addl %d1,%a3@(16) <== NOT EXECUTED 4dd18: 2e2b 000c movel %a3@(12),%d7 <== NOT EXECUTED 4dd1c: df80 addxl %d0,%d7 <== NOT EXECUTED 4dd1e: 2747 000c movel %d7,%a3@(12) <== NOT EXECUTED 4dd22: 6000 ff78 braw 4dc9c <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;
4dd26: 4286 clrl %d6 <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4dd28: 2006 movel %d6,%d0 <== NOT EXECUTED 4dd2a: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4dd30: 4e5e unlk %fp <== NOT EXECUTED
0004de70 <imfs_dir_rmnod>:
int imfs_dir_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4de70: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4de74: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4de78: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
4de7a: 2450 moveal %a0@,%a2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4de7c: 200a movel %a2,%d0 <== NOT EXECUTED 4de7e: 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 ) )
4de84: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4de88: 6642 bnes 4decc <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 )
4de8a: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED 4de8e: b5e8 001c cmpal %a0@(28),%a2 <== NOT EXECUTED 4de92: 6722 beqs 4deb6 <imfs_dir_rmnod+0x46> <== NOT EXECUTED
/*
* You cannot remove a mountpoint.
*/
if ( the_jnode->info.directory.mt_fs != NULL )
4de94: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED 4de98: 661c bnes 4deb6 <imfs_dir_rmnod+0x46> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
IMFS_create_orphan( the_jnode );
4de9a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4de9c: 4eb9 0004 ab5c jsr 4ab5c <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4dea2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dea4: 4eb9 0004 aba0 jsr 4aba0 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4deaa: 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;
4deae: 508f addql #8,%sp <== NOT EXECUTED 4deb0: 4280 clrl %d0 <== NOT EXECUTED
}
4deb2: 4e5e unlk %fp <== NOT EXECUTED 4deb4: 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 );
4deb6: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4debc: 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 );
4dec0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dec2: 7210 moveq #16,%d1 <== NOT EXECUTED 4dec4: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4dec6: 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 );
4dec8: 2081 movel %d1,%a0@ <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4deca: 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 );
4decc: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4ded2: 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 );
4ded6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ded8: 725a moveq #90,%d1 <== NOT EXECUTED 4deda: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4dedc: 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 );
4dede: 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 1032 tstb 61032 <etc_passwd_initted.6400> <== 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 00a8 lea 500a8 <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 ee1e pea 5ee1e <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 1032 moveb %d0,61032 <etc_passwd_initted.6400> <== 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 f707 pea 5f707 <_global_impure_ptr+0xbf> <== NOT EXECUTED 437ea: 4879 0005 ee23 pea 5ee23 <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 f9aa jsr 4f9aa <fclose> <== NOT EXECUTED 43802: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Initialize /etc/group
*/
if ((fp = fopen("/etc/group", "r")) != NULL) {
43804: 4879 0005 f707 pea 5f707 <_global_impure_ptr+0xbf> <== NOT EXECUTED 4380a: 4879 0005 ee98 pea 5ee98 <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 f9aa jsr 4f9aa <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 ee2f pea 5ee2f <rtems_status_assoc+0x1b1> <== NOT EXECUTED 43834: 4879 0005 ee98 pea 5ee98 <rtems_status_assoc+0x21a> <== NOT EXECUTED 4383a: 4eb9 0005 00a8 jsr 500a8 <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 eea3 pea 5eea3 <rtems_status_assoc+0x225> <== NOT EXECUTED 4385a: 4eb9 0005 085c jsr 5085c <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 f9aa jsr 4f9aa <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 ee2f pea 5ee2f <rtems_status_assoc+0x1b1> <== NOT EXECUTED 4387e: 4879 0005 ee23 pea 5ee23 <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 ee31 pea 5ee31 <rtems_status_assoc+0x1b3> <== NOT EXECUTED 4389e: 4eb9 0005 085c jsr 5085c <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 f9aa jsr 4f9aa <fclose> <== NOT EXECUTED 438ac: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 438b0: 6000 ff52 braw 43804 <init_etc_passwd_group+0x5a> <== NOT EXECUTED
000464ec <ioctl>:
int ioctl(
int fd,
ioctl_command_t command,
...
)
{
464ec: 4e56 0000 linkw %fp,#0 464f0: 202e 0008 movel %fp@(8),%d0
va_list ap;
rtems_status_code rc;
rtems_libio_t *iop;
void *buffer;
rtems_libio_check_fd( fd );
464f4: b0b9 0006 2704 cmpl 62704 <rtems_libio_number_iops>,%d0
464fa: 6438 bccs 46534 <ioctl+0x48> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
464fc: 2200 movel %d0,%d1 464fe: ed88 lsll #6,%d0 46500: e789 lsll #3,%d1 46502: 2079 0006 3fd0 moveal 63fd0 <rtems_libio_iops>,%a0 46508: 9081 subl %d1,%d0 4650a: d1c0 addal %d0,%a0
rtems_libio_check_is_open(iop);
4650c: 2028 0014 movel %a0@(20),%d0 46510: 0280 0000 0100 andil #256,%d0
46516: 671c beqs 46534 <ioctl+0x48> <== NEVER TAKEN
buffer = va_arg(ap, void *);
/*
* Now process the ioctl().
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
46518: 2268 0020 moveal %a0@(32),%a1 4651c: 2f2e 0010 movel %fp@(16),%sp@- 46520: 2f2e 000c movel %fp@(12),%sp@- 46524: 2f08 movel %a0,%sp@- 46526: 2069 0010 moveal %a1@(16),%a0 4652a: 4e90 jsr %a0@
va_end( ap );
return rc;
4652c: 4fef 000c lea %sp@(12),%sp
}
46530: 4e5e unlk %fp 46532: 4e75 rts
rtems_libio_t *iop;
void *buffer;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
46534: 4eb9 0005 2ea8 jsr 52ea8 <__errno> <== NOT EXECUTED 4653a: 7209 moveq #9,%d1 <== NOT EXECUTED 4653c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4653e: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
va_end( ap );
return rc;
}
46540: 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);
46542: 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 e670 moveal 5e670 <__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 e5a0 movel 5e5a0 <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 cf7c jsr 4cf7c <killinfo> <== NOT EXECUTED
}
46818: 4e5e unlk %fp <== NOT EXECUTED
0005c1a0 <killinfo>:
int killinfo(
pid_t pid,
int sig,
const union sigval *value
)
{
5c1a0: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 5c1a4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 5c1a8: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 5c1ac: 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() )
5c1b0: 4eb9 0005 bcd4 jsr 5bcd4 <getpid> <== NOT EXECUTED 5c1b6: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 5c1ba: 6600 0234 bnew 5c3f0 <killinfo+0x250> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
/*
* Validate the signal passed.
*/
if ( !sig )
5c1be: 4a83 tstl %d3 <== NOT EXECUTED 5c1c0: 6700 0246 beqw 5c408 <killinfo+0x268> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
5c1c4: 2003 movel %d3,%d0 <== NOT EXECUTED 5c1c6: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
5c1c8: 721f moveq #31,%d1 <== NOT EXECUTED 5c1ca: b280 cmpl %d0,%d1 <== NOT EXECUTED 5c1cc: 6500 023a bcsw 5c408 <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 )
5c1d0: 2c03 movel %d3,%d6 <== NOT EXECUTED 5c1d2: 2a03 movel %d3,%d5 <== NOT EXECUTED 5c1d4: 7201 moveq #1,%d1 <== NOT EXECUTED 5c1d6: e98e lsll #4,%d6 <== NOT EXECUTED 5c1d8: e58d lsll #2,%d5 <== NOT EXECUTED 5c1da: 2806 movel %d6,%d4 <== NOT EXECUTED 5c1dc: 9885 subl %d5,%d4 <== NOT EXECUTED 5c1de: 2044 moveal %d4,%a0 <== NOT EXECUTED 5c1e0: d1fc 0006 01c0 addal #393664,%a0 <== NOT EXECUTED 5c1e6: b290 cmpl %a0@,%d1 <== NOT EXECUTED 5c1e8: 6700 01f2 beqw 5c3dc <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 ) )
5c1ec: 123c 0008 moveb #8,%d1 <== NOT EXECUTED 5c1f0: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c1f2: 6700 00d2 beqw 5c2c6 <killinfo+0x126> <== NOT EXECUTED 5c1f6: 123c 0004 moveb #4,%d1 <== NOT EXECUTED 5c1fa: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c1fc: 6700 00c8 beqw 5c2c6 <killinfo+0x126> <== NOT EXECUTED 5c200: 123c 000b moveb #11,%d1 <== NOT EXECUTED 5c204: b283 cmpl %d3,%d1 <== NOT EXECUTED 5c206: 6700 00be beqw 5c2c6 <killinfo+0x126> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
5c20a: 7401 moveq #1,%d2 <== NOT EXECUTED 5c20c: e1aa lsll %d0,%d2 <== NOT EXECUTED
/* * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; siginfo->si_code = SI_USER;
5c20e: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Build up a siginfo structure
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
5c210: 2d43 fff4 movel %d3,%fp@(-12) <== NOT EXECUTED
siginfo->si_code = SI_USER;
5c214: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
if ( !value ) {
5c218: 4a8a tstl %a2 <== NOT EXECUTED 5c21a: 6700 01cc beqw 5c3e8 <killinfo+0x248> <== NOT EXECUTED
siginfo->si_value.sival_int = 0;
} else {
siginfo->si_value = *value;
5c21e: 2d52 fffc movel %a2@,%fp@(-4) <== NOT EXECUTED 5c222: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5c228: 5280 addql #1,%d0 <== NOT EXECUTED 5c22a: 23c0 0005 fcf8 movel %d0,5fcf8 <_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;
5c230: 2679 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( _POSIX_signals_Is_interested( api, mask ) ) {
5c236: 206b 0102 moveal %a3@(258),%a0 <== NOT EXECUTED 5c23a: 2028 00d0 movel %a0@(208),%d0 <== NOT EXECUTED 5c23e: 4680 notl %d0 <== NOT EXECUTED 5c240: c082 andl %d2,%d0 <== NOT EXECUTED 5c242: 6642 bnes 5c286 <killinfo+0xe6> <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c244: 2079 0006 0344 moveal 60344 <_POSIX_signals_Wait_queue>,%a0<== NOT EXECUTED
/* XXX violation of visibility -- need to define thread queue support */
the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;
for ( the_node = _Chain_First( the_chain );
5c24a: b1fc 0006 0348 cmpal #394056,%a0 <== NOT EXECUTED 5c250: 6700 00d6 beqw 5c328 <killinfo+0x188> <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c254: 2002 movel %d2,%d0 <== NOT EXECUTED
for ( the_node = _Chain_First( the_chain );
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
the_thread = (Thread_Control *)the_node;
5c256: 2648 moveal %a0,%a3 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c258: c0a8 0030 andl %a0@(48),%d0 <== NOT EXECUTED
for ( the_node = _Chain_First( the_chain );
!_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 ];
5c25c: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c260: 6624 bnes 5c286 <killinfo+0xe6> <== NOT EXECUTED
/*
* Is this thread is blocked waiting for another signal but has
* not blocked this one?
*/
if (~api->signals_blocked & mask)
5c262: 2029 00d0 movel %a1@(208),%d0 <== NOT EXECUTED 5c266: 4680 notl %d0 <== NOT EXECUTED 5c268: c082 andl %d2,%d0 <== NOT EXECUTED 5c26a: 661a bnes 5c286 <killinfo+0xe6> <== NOT EXECUTED
the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;
for ( the_node = _Chain_First( the_chain );
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
5c26c: 2050 moveal %a0@,%a0 <== NOT EXECUTED
the_thread = (Thread_Control *)the_node;
5c26e: 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 = _Chain_First( the_chain );
5c270: b1fc 0006 0348 cmpal #394056,%a0 <== NOT EXECUTED 5c276: 6700 00b0 beqw 5c328 <killinfo+0x188> <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c27a: 2002 movel %d2,%d0 <== NOT EXECUTED 5c27c: c0a8 0030 andl %a0@(48),%d0 <== NOT EXECUTED
for ( the_node = _Chain_First( the_chain );
!_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 ];
5c280: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c284: 67dc beqs 5c262 <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 ) ) {
5c286: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5c28a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c28c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 5c28e: 4eb9 0005 c460 jsr 5c460 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 5c294: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c298: 4a00 tstb %d0 <== NOT EXECUTED 5c29a: 6618 bnes 5c2b4 <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 );
5c29c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c29e: 4eb9 0005 c440 jsr 5c440 <_POSIX_signals_Set_process_signals><== NOT EXECUTED
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
5c2a4: 588f addql #4,%sp <== NOT EXECUTED 5c2a6: 41f9 0006 01b8 lea 601b8 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 5c2ac: 7002 moveq #2,%d0 <== NOT EXECUTED 5c2ae: b0b0 4800 cmpl %a0@(00000000,%d4:l),%d0 <== NOT EXECUTED 5c2b2: 672e beqs 5c2e2 <killinfo+0x142> <== NOT EXECUTED
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
5c2b4: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c2ba: 4280 clrl %d0 <== NOT EXECUTED
}
5c2bc: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c2c2: 4e5e unlk %fp <== NOT EXECUTED 5c2c4: 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 );
5c2c6: 4eb9 0005 c674 jsr 5c674 <pthread_self> <== NOT EXECUTED 5c2cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c2ce: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c2d0: 4eb9 0005 c59c jsr 5c59c <pthread_kill> <== NOT EXECUTED 5c2d6: 508f addql #8,%sp <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c2d8: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c2de: 4e5e unlk %fp <== NOT EXECUTED 5c2e0: 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 );
5c2e2: 4879 0006 0338 pea 60338 <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED 5c2e8: 4eb9 0004 6f50 jsr 46f50 <_Chain_Get> <== NOT EXECUTED
if ( !psiginfo ) {
5c2ee: 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 );
5c2f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !psiginfo ) {
5c2f2: 4a80 tstl %d0 <== NOT EXECUTED 5c2f4: 6700 012a beqw 5c420 <killinfo+0x280> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
}
psiginfo->Info = *siginfo;
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
5c2f8: 9c85 subl %d5,%d6 <== NOT EXECUTED 5c2fa: 0686 0006 03b0 addil #394160,%d6 <== NOT EXECUTED
if ( !psiginfo ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
}
psiginfo->Info = *siginfo;
5c300: 216e fff4 0008 movel %fp@(-12),%a0@(8) <== NOT EXECUTED 5c306: 216e fff8 000c movel %fp@(-8),%a0@(12) <== NOT EXECUTED 5c30c: 216e fffc 0010 movel %fp@(-4),%a0@(16) <== NOT EXECUTED
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
5c312: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5c314: 2f06 movel %d6,%sp@- <== NOT EXECUTED 5c316: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append> <== NOT EXECUTED 5c31c: 508f addql #8,%sp <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
5c31e: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c324: 4280 clrl %d0 <== NOT EXECUTED 5c326: 6094 bras 5c2bc <killinfo+0x11c> <== NOT EXECUTED
* NOTES: * * + rtems internal threads do not receive signals. */ interested = NULL; interested_priority = PRIORITY_MAXIMUM + 1;
5c328: 4287 clrl %d7 <== NOT EXECUTED 5c32a: 1e39 0005 e442 moveb 5e442 <rtems_maximum_priority>,%d7 <== NOT EXECUTED 5c330: 49f9 0005 fcbc lea 5fcbc <_Objects_Information_table+0x8>,%a4<== NOT EXECUTED 5c336: 5287 addql #1,%d7 <== NOT EXECUTED
* * NOTES: * * + rtems internal threads do not receive signals. */ interested = NULL;
5c338: 97cb subal %a3,%a3 <== NOT EXECUTED
interested_priority = PRIORITY_MAXIMUM + 1;
5c33a: 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 ] )
5c33c: 205c moveal %a4@+,%a0 <== NOT EXECUTED 5c33e: 4a88 tstl %a0 <== NOT EXECUTED 5c340: 6770 beqs 5c3b2 <killinfo+0x212> <== NOT EXECUTED
continue;
the_info = _Objects_Information_table[ the_api ][ 1 ];
5c342: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
*/
if ( !the_info )
continue;
#endif
maximum = the_info->maximum;
5c346: 4287 clrl %d7 <== NOT EXECUTED 5c348: 3e28 000e movew %a0@(14),%d7 <== NOT EXECUTED
object_table = the_info->local_table;
5c34c: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
for ( index = 1 ; index <= maximum ; index++ ) {
5c350: 4a87 tstl %d7 <== NOT EXECUTED 5c352: 675e beqs 5c3b2 <killinfo+0x212> <== NOT EXECUTED
*/
#define _POSIX_signals_Is_interested( _api, _mask ) \
( ~(_api)->signals_blocked & (_mask) )
int killinfo(
5c354: 5889 addql #4,%a1 <== NOT EXECUTED
#endif
maximum = the_info->maximum;
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5c356: 7001 moveq #1,%d0 <== NOT EXECUTED 5c358: 2d43 ffec movel %d3,%fp@(-20) <== NOT EXECUTED
the_thread = (Thread_Control *) object_table[ index ];
5c35c: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
if ( !the_thread )
5c35e: 4a88 tstl %a0 <== NOT EXECUTED 5c360: 6746 beqs 5c3a8 <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 )
5c362: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED 5c366: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 5c368: 653e bcss 5c3a8 <killinfo+0x208> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( !api )
continue;
#endif
if ( !_POSIX_signals_Is_interested( api, mask ) )
5c36a: 2a68 0102 moveal %a0@(258),%a5 <== NOT EXECUTED 5c36e: 262d 00d0 movel %a5@(208),%d3 <== NOT EXECUTED 5c372: 4683 notl %d3 <== NOT EXECUTED 5c374: c682 andl %d2,%d3 <== NOT EXECUTED 5c376: 6730 beqs 5c3a8 <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 ) {
5c378: b5c1 cmpal %d1,%a2 <== NOT EXECUTED 5c37a: 6228 bhis 5c3a4 <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 ) ) {
5c37c: 4a8b tstl %a3 <== NOT EXECUTED 5c37e: 6728 beqs 5c3a8 <killinfo+0x208> <== NOT EXECUTED 5c380: 2a6b 0010 moveal %a3@(16),%a5 <== NOT EXECUTED 5c384: 4a8d tstl %a5 <== NOT EXECUTED 5c386: 6720 beqs 5c3a8 <killinfo+0x208> <== NOT EXECUTED
/* preferred ready over blocked */
DEBUG_STEP("5");
if ( _States_Is_ready( the_thread->current_state ) ) {
5c388: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 5c38c: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED 5c390: 6712 beqs 5c3a4 <killinfo+0x204> <== NOT EXECUTED
continue;
}
DEBUG_STEP("6");
/* prefer blocked/interruptible over blocked/not interruptible */
if ( !_States_Is_interruptible_by_signal(interested->current_state) ) {
5c392: 260d movel %a5,%d3 <== NOT EXECUTED 5c394: 0803 001c btst #28,%d3 <== NOT EXECUTED 5c398: 660e bnes 5c3a8 <killinfo+0x208> <== NOT EXECUTED
DEBUG_STEP("7");
if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) {
5c39a: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED 5c39e: 0803 001c btst #28,%d3 <== NOT EXECUTED 5c3a2: 6704 beqs 5c3a8 <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 ) ) {
5c3a4: 2441 moveal %d1,%a2 <== NOT EXECUTED 5c3a6: 2648 moveal %a0,%a3 <== NOT EXECUTED
#endif
maximum = the_info->maximum;
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5c3a8: 5280 addql #1,%d0 <== NOT EXECUTED 5c3aa: b087 cmpl %d7,%d0 <== NOT EXECUTED 5c3ac: 63ae blss 5c35c <killinfo+0x1bc> <== NOT EXECUTED 5c3ae: 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++) {
5c3b2: b9fc 0005 fcc4 cmpal #392388,%a4 <== NOT EXECUTED 5c3b8: 6682 bnes 5c33c <killinfo+0x19c> <== NOT EXECUTED
}
}
}
}
if ( interested ) {
5c3ba: 4a8b tstl %a3 <== NOT EXECUTED 5c3bc: 6700 fede beqw 5c29c <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 ) ) {
5c3c0: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5c3c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c3c6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 5c3c8: 4eb9 0005 c460 jsr 5c460 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 5c3ce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c3d2: 4a00 tstb %d0 <== NOT EXECUTED 5c3d4: 6700 fec6 beqw 5c29c <killinfo+0xfc> <== NOT EXECUTED 5c3d8: 6000 feda braw 5c2b4 <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;
5c3dc: 4280 clrl %d0 <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c3de: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c3e4: 4e5e unlk %fp <== NOT EXECUTED 5c3e6: 4e75 rts <== NOT EXECUTED
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
siginfo->si_code = SI_USER;
if ( !value ) {
siginfo->si_value.sival_int = 0;
5c3e8: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 5c3ec: 6000 fe34 braw 5c222 <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 );
5c3f0: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5c3f6: 7603 moveq #3,%d3 <== NOT EXECUTED 5c3f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c3fa: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c3fc: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c3fe: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c404: 4e5e unlk %fp <== NOT EXECUTED 5c406: 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 );
5c408: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5c40e: 7416 moveq #22,%d2 <== NOT EXECUTED 5c410: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c412: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c414: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c416: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED 5c41c: 4e5e unlk %fp <== NOT EXECUTED 5c41e: 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();
5c420: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
5c426: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5c42c: 720b moveq #11,%d1 <== NOT EXECUTED 5c42e: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c430: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c432: 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 );
5c438: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c43a: 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 fe64 cmpl 5fe64 <_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
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 db96 moveal 5db96 <_global_impure_ptr>,%a2 435b6: b5f9 0005 e674 cmpal 5e674 <_impure_ptr>,%a2
435bc: 6710 beqs 435ce <libc_wrapup+0x36>
_wrapup_reent(_global_impure_ptr);
435be: 2f0a movel %a2,%sp@- 435c0: 4eb9 0004 f516 jsr 4f516 <_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 e674 movel %a2,5e674 <_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 eaba lea 4eaba <fclose>,%a2 435d8: 4e92 jsr %a2@
fclose (stdout);
435da: 2079 0005 e674 moveal 5e674 <_impure_ptr>,%a0 435e0: 2f28 0008 movel %a0@(8),%sp@- 435e4: 4e92 jsr %a2@
fclose (stderr);
435e6: 2079 0005 e674 moveal 5e674 <_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 5954 jsr 55954 <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 2920 jsr 52920 <__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 f314 jsr 4f314 <__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
}
...
0005bcfc <lseek>:
off_t lseek(
int fd,
off_t offset,
int whence
)
{
5bcfc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 5bd00: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 5bd04: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 5bd08: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 5bd0c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 5bd10: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
rtems_libio_t *iop;
off_t old_offset;
off_t status;
rtems_libio_check_fd( fd );
5bd14: b4b9 0005 e394 cmpl 5e394 <rtems_libio_number_iops>,%d2 <== NOT EXECUTED 5bd1a: 6400 011e bccw 5be3a <lseek+0x13e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
5bd1e: 2802 movel %d2,%d4 <== NOT EXECUTED 5bd20: ed8a lsll #6,%d2 <== NOT EXECUTED 5bd22: e78c lsll #3,%d4 <== NOT EXECUTED 5bd24: 2479 0005 fba4 moveal 5fba4 <rtems_libio_iops>,%a2 <== NOT EXECUTED 5bd2a: 9484 subl %d4,%d2 <== NOT EXECUTED 5bd2c: d5c2 addal %d2,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
5bd2e: 242a 0014 movel %a2@(20),%d2 <== NOT EXECUTED 5bd32: 0282 0000 0100 andil #256,%d2 <== NOT EXECUTED 5bd38: 6700 0100 beqw 5be3a <lseek+0x13e> <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
switch ( whence ) {
5bd3c: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
5bd3e: 242a 000c movel %a2@(12),%d2 <== NOT EXECUTED 5bd42: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
switch ( whence ) {
5bd46: b888 cmpl %a0,%d4 <== NOT EXECUTED 5bd48: 6700 00b6 beqw 5be00 <lseek+0x104> <== NOT EXECUTED 5bd4c: 7a02 moveq #2,%d5 <== NOT EXECUTED 5bd4e: ba88 cmpl %a0,%d5 <== NOT EXECUTED 5bd50: 6756 beqs 5bda8 <lseek+0xac> <== NOT EXECUTED 5bd52: 4a88 tstl %a0 <== NOT EXECUTED 5bd54: 6600 008c bnew 5bde2 <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 );
5bd58: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
*/
old_offset = iop->offset;
switch ( whence ) {
case SEEK_SET:
iop->offset = offset;
5bd5c: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED 5bd60: 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 );
5bd64: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5bd66: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5bd68: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5bd6a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5bd6c: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 5bd70: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd72: 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 );
5bd76: 2800 movel %d0,%d4 <== NOT EXECUTED 5bd78: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd7a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bd7c: 72ff moveq #-1,%d1 <== NOT EXECUTED 5bd7e: 9285 subl %d5,%d1 <== NOT EXECUTED 5bd80: 9184 subxl %d4,%d0 <== NOT EXECUTED 5bd82: 670e beqs 5bd92 <lseek+0x96> <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bd84: 2004 movel %d4,%d0 <== NOT EXECUTED 5bd86: 2205 movel %d5,%d1 <== NOT EXECUTED 5bd88: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 5bd8e: 4e5e unlk %fp <== NOT EXECUTED 5bd90: 4e75 rts <== NOT EXECUTED 5bd92: 2004 movel %d4,%d0 <== NOT EXECUTED 5bd94: 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;
5bd96: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 5bd9a: 2543 0010 movel %d3,%a2@(16) <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bd9e: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 5bda4: 4e5e unlk %fp <== NOT EXECUTED 5bda6: 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 );
5bda8: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
case SEEK_CUR:
iop->offset += offset;
break;
case SEEK_END:
iop->offset = iop->size + offset;
5bdac: 282a 0004 movel %a2@(4),%d4 <== NOT EXECUTED 5bdb0: 2a2a 0008 movel %a2@(8),%d5 <== NOT EXECUTED 5bdb4: da81 addl %d1,%d5 <== NOT EXECUTED 5bdb6: d980 addxl %d0,%d4 <== NOT EXECUTED 5bdb8: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED 5bdbc: 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 );
5bdc0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5bdc2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5bdc4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5bdc6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5bdc8: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 5bdcc: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5bdce: 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 );
5bdd2: 2800 movel %d0,%d4 <== NOT EXECUTED 5bdd4: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5bdd6: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bdd8: 72ff moveq #-1,%d1 <== NOT EXECUTED 5bdda: 9285 subl %d5,%d1 <== NOT EXECUTED 5bddc: 9184 subxl %d4,%d0 <== NOT EXECUTED 5bdde: 66a4 bnes 5bd84 <lseek+0x88> <== NOT EXECUTED 5bde0: 60b0 bras 5bd92 <lseek+0x96> <== NOT EXECUTED
case SEEK_END:
iop->offset = iop->size + offset;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
5bde2: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5bde8: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bdea: 7016 moveq #22,%d0 <== NOT EXECUTED 5bdec: 78ff moveq #-1,%d4 <== NOT EXECUTED 5bdee: 7aff moveq #-1,%d5 <== NOT EXECUTED 5bdf0: 2080 movel %d0,%a0@ <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bdf2: 2004 movel %d4,%d0 <== NOT EXECUTED 5bdf4: 2205 movel %d5,%d1 <== NOT EXECUTED 5bdf6: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 5bdfc: 4e5e unlk %fp <== NOT EXECUTED 5bdfe: 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 );
5be00: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
case SEEK_SET:
iop->offset = offset;
break;
case SEEK_CUR:
iop->offset += offset;
5be04: 2800 movel %d0,%d4 <== NOT EXECUTED 5be06: 2a01 movel %d1,%d5 <== NOT EXECUTED 5be08: da83 addl %d3,%d5 <== NOT EXECUTED 5be0a: d982 addxl %d2,%d4 <== NOT EXECUTED 5be0c: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED 5be10: 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 );
5be14: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5be16: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5be18: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5be1a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5be1c: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 5be20: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5be22: 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 );
5be26: 2800 movel %d0,%d4 <== NOT EXECUTED 5be28: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5be2a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5be2c: 72ff moveq #-1,%d1 <== NOT EXECUTED 5be2e: 9285 subl %d5,%d1 <== NOT EXECUTED 5be30: 9184 subxl %d4,%d0 <== NOT EXECUTED 5be32: 6600 ff50 bnew 5bd84 <lseek+0x88> <== NOT EXECUTED 5be36: 6000 ff5a braw 5bd92 <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);
5be3a: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5be40: 7209 moveq #9,%d1 <== NOT EXECUTED 5be42: 2040 moveal %d0,%a0 <== NOT EXECUTED 5be44: 78ff moveq #-1,%d4 <== NOT EXECUTED 5be46: 7aff moveq #-1,%d5 <== NOT EXECUTED 5be48: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5be4a: 2004 movel %d4,%d0 <== NOT EXECUTED 5be4c: 2205 movel %d5,%d1 <== NOT EXECUTED 5be4e: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 5be54: 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 2d28 jsr 52d28 <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 1ff8 jsr 51ff8 <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 0f38 jsr 50f38 <__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 fbc0 addql #1,5fbc0 <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 fe64 cmpl 5fe64 <_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 e3a0 movel 5e3a0 <RTEMS_Malloc_Heap>,%sp@- 4305e: 4eb9 0004 80d0 jsr 480d0 <_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 eb3e moveal 5eb3e <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 eb36 moveal 5eb36 <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 eb3a moveal 5eb3a <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 eb3e moveal 5eb3e <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 e96c jsr 4e96c <__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 fbb0 pea 5fbb0 <RTEMS_Malloc_GC_list> <== NOT EXECUTED 42f50: 4eb9 0004 6ef0 jsr 46ef0 <_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 fbb0 pea 5fbb0 <RTEMS_Malloc_GC_list> 42f14: 45f9 0004 6f50 lea 46f50 <_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 fbb0 pea 5fbb0 <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 3ee0 movel 63ee0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 46c0e: 4eb9 0004 cfcc jsr 4cfcc <_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 e930 movel 5e930 <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 fd08 movel 5fd08 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 42fa2: 4eb9 0004 6ec0 jsr 46ec0 <_API_Mutex_Lock> <== NOT EXECUTED
*stats = rtems_malloc_statistics;
42fa8: 2042 moveal %d2,%a0 <== NOT EXECUTED 42faa: 20f9 0005 fb0c movel 5fb0c <rtems_malloc_statistics>,%a0@+ <== NOT EXECUTED 42fb0: 20f9 0005 fb10 movel 5fb10 <rtems_malloc_statistics+0x4>,%a0@+<== NOT EXECUTED 42fb6: 20f9 0005 fb14 movel 5fb14 <rtems_malloc_statistics+0x8>,%a0@+<== NOT EXECUTED 42fbc: 20f9 0005 fb18 movel 5fb18 <rtems_malloc_statistics+0xc>,%a0@+<== NOT EXECUTED 42fc2: 20f9 0005 fb1c movel 5fb1c <rtems_malloc_statistics+0x10>,%a0@+<== NOT EXECUTED 42fc8: 20f9 0005 fb20 movel 5fb20 <rtems_malloc_statistics+0x14>,%a0@+<== NOT EXECUTED 42fce: 20f9 0005 fb24 movel 5fb24 <rtems_malloc_statistics+0x18>,%a0@+<== NOT EXECUTED 42fd4: 20f9 0005 fb28 movel 5fb28 <rtems_malloc_statistics+0x1c>,%a0@+<== NOT EXECUTED 42fda: 20f9 0005 fb2c movel 5fb2c <rtems_malloc_statistics+0x20>,%a0@+<== NOT EXECUTED 42fe0: 20f9 0005 fb30 movel 5fb30 <rtems_malloc_statistics+0x24>,%a0@+<== NOT EXECUTED
_RTEMS_Unlock_allocator();
42fe6: 2f39 0005 fd08 movel 5fd08 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
)
{
if ( !stats )
return -1;
_RTEMS_Lock_allocator();
*stats = rtems_malloc_statistics;
42fec: 20b9 0005 fb34 movel 5fb34 <rtems_malloc_statistics+0x28>,%a0@<== NOT EXECUTED
_RTEMS_Unlock_allocator();
42ff2: 4eb9 0004 6f20 jsr 46f20 <_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 3ee0 movel 63ee0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 46c2e: 4eb9 0004 cffc jsr 4cffc <_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 fcf8 movel 5fcf8 <_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 0182 tstl 60182 <_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 5ff0 moveal 65ff0 <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 5ff4 movel 65ff4 <rtems_malloc_statistics+0x1c>,%d4<== NOT EXECUTED 46e1a: 2a39 0006 5ff8 movel 65ff8 <rtems_malloc_statistics+0x20>,%d5<== NOT EXECUTED 46e20: 2039 0006 5ffc movel 65ffc <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED 46e26: 2239 0006 6000 movel 66000 <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 5fd8 movel 65fd8 <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 f31c jsr 5f31c <__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 fb68 jsr 5fb68 <__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 295c pea 6295c <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 5fec movel 65fec <rtems_malloc_statistics+0x14>,%sp@<== NOT EXECUTED 46ed2: 2f39 0006 5fe8 movel 65fe8 <rtems_malloc_statistics+0x10>,%sp@-<== NOT EXECUTED 46ed8: 2f39 0006 5fe4 movel 65fe4 <rtems_malloc_statistics+0xc>,%sp@-<== NOT EXECUTED 46ede: 2f39 0006 5fe0 movel 65fe0 <rtems_malloc_statistics+0x8>,%sp@-<== NOT EXECUTED 46ee4: 2f39 0006 5fdc movel 65fdc <rtems_malloc_statistics+0x4>,%sp@-<== NOT EXECUTED 46eea: 4879 0006 29be pea 629be <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 02b0 movel 602b0 <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 e930 movel 5e930 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 433e6: 4eb9 0004 83dc jsr 483dc <_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 0284 addl %d2,60284 <rtems_malloc_statistics> <== NOT EXECUTED 433fc: 42a7 clrl %sp@- <== NOT EXECUTED 433fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 43402: 2f39 0005 e930 movel 5e930 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 43408: 4eb9 0004 839c jsr 4839c <_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 eef0 jsr 4eef0 <__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 02b0 movel %d1,602b0 <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 6f18 jsr 46f18 <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 e930 movel %a0@,5e930 <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 3ee0 movel 63ee0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 4701e: 4eb9 0004 d0b0 jsr 4d0b0 <_Protected_heap_Walk> <== NOT EXECUTED 47024: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
47028: 4e5e unlk %fp <== NOT EXECUTED
0004ce94 <memfile_alloc_block>:
* Allocate a block for an in-memory file.
*/
int memfile_blocks_allocated = 0;
void *memfile_alloc_block(void)
{
4ce94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void *memory;
memory = (void *)calloc(1, IMFS_MEMFILE_BYTES_PER_BLOCK);
4ce98: 2f39 0005 f3a4 movel 5f3a4 <imfs_memfile_bytes_per_block>,%sp@-<== NOT EXECUTED 4ce9e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4cea2: 4eb9 0004 28f0 jsr 428f0 <calloc> <== NOT EXECUTED
if ( memory )
4cea8: 508f addql #8,%sp <== NOT EXECUTED 4ceaa: 4a80 tstl %d0 <== NOT EXECUTED 4ceac: 6706 beqs 4ceb4 <memfile_alloc_block+0x20> <== NOT EXECUTED
memfile_blocks_allocated++;
4ceae: 52b9 0005 f4b4 addql #1,5f4b4 <memfile_blocks_allocated> <== NOT EXECUTED
return memory;
}
4ceb4: 4e5e unlk %fp <== NOT EXECUTED
0004ce54 <memfile_close>:
* nothing to flush or memory to free at this point.
*/
int memfile_close(
rtems_libio_t *iop
)
{
4ce54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ce58: 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)
4ce5c: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED 4ce60: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
rtems_libio_t *iop
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4ce66: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
if (iop->flags & LIBIO_FLAGS_APPEND)
4ce6a: 6710 beqs 4ce7c <memfile_close+0x28> <== NOT EXECUTED
iop->offset = the_jnode->info.file.size;
4ce6c: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 4ce70: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED 4ce74: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED 4ce78: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4ce7c: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4ce7e: 4eb9 0004 aba0 jsr 4aba0 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4ce84: 4280 clrl %d0 <== NOT EXECUTED 4ce86: 4e5e unlk %fp <== NOT EXECUTED
0004d330 <memfile_free_block>:
* Free a block from an in-memory file.
*/
void memfile_free_block(
void *memory
)
{
4d330: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free(memory);
4d334: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d338: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
memfile_blocks_allocated--;
4d33e: 588f addql #4,%sp <== NOT EXECUTED 4d340: 53b9 0005 f4b4 subql #1,5f4b4 <memfile_blocks_allocated> <== NOT EXECUTED
}
4d346: 4e5e unlk %fp <== NOT EXECUTED
0004d34a <memfile_free_blocks_in_table>:
*/
void memfile_free_blocks_in_table(
block_p **block_table,
int entries
)
{
4d34a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4d34e: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d352: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED 4d356: 47f9 0004 d330 lea 4d330 <memfile_free_block>,%a3 <== NOT EXECUTED 4d35c: 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;
4d360: 2454 moveal %a4@,%a2 <== NOT EXECUTED
for ( i=0 ; i<entries ; i++ ) {
4d362: 6f1a bles 4d37e <memfile_free_blocks_in_table+0x34><== NOT EXECUTED 4d364: 4282 clrl %d2 <== NOT EXECUTED
if ( b[i] ) {
4d366: 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++ ) {
4d368: 5282 addql #1,%d2 <== NOT EXECUTED
if ( b[i] ) {
4d36a: 4a80 tstl %d0 <== NOT EXECUTED 4d36c: 670a beqs 4d378 <memfile_free_blocks_in_table+0x2e><== NOT EXECUTED
memfile_free_block( b[i] );
4d36e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d370: 4e93 jsr %a3@ <== NOT EXECUTED
b[i] = 0;
4d372: 588f addql #4,%sp <== NOT EXECUTED 4d374: 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++ ) {
4d378: b483 cmpl %d3,%d2 <== NOT EXECUTED 4d37a: 6dea blts 4d366 <memfile_free_blocks_in_table+0x1c><== NOT EXECUTED 4d37c: 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 );
4d37e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d380: 4e93 jsr %a3@ <== NOT EXECUTED
*block_table = 0;
4d382: 588f addql #4,%sp <== NOT EXECUTED 4d384: 4294 clrl %a4@ <== NOT EXECUTED
}
4d386: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d38c: 4e5e unlk %fp <== NOT EXECUTED
0004d892 <memfile_ftruncate>:
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4d892: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4d896: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d89a: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d89e: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4d8a2: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4d8a6: 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 )
4d8aa: 242a 004c movel %a2@(76),%d2 <== NOT EXECUTED 4d8ae: 262a 0050 movel %a2@(80),%d3 <== NOT EXECUTED 4d8b2: 9681 subl %d1,%d3 <== NOT EXECUTED 4d8b4: 9580 subxl %d0,%d2 <== NOT EXECUTED 4d8b6: 6d30 blts 4d8e8 <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;
4d8b8: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED 4d8bc: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4d8c0: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED 4d8c4: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d8c8: 42a7 clrl %sp@- <== NOT EXECUTED 4d8ca: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d8ce: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED 4d8d4: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return 0;
4d8da: 508f addql #8,%sp <== NOT EXECUTED 4d8dc: 4280 clrl %d0 <== NOT EXECUTED
}
4d8de: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4d8e4: 4e5e unlk %fp <== NOT EXECUTED 4d8e6: 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 );
4d8e8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d8ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d8ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d8ee: 4eb9 0004 d4d2 jsr 4d4d2 <IMFS_memfile_extend> <== NOT EXECUTED 4d8f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
IMFS_update_atime( the_jnode );
return 0;
}
4d8f8: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4d8fe: 4e5e unlk %fp <== NOT EXECUTED
0004ce8a <memfile_ioctl>:
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4ce8a: 4280 clrl %d0 <== NOT EXECUTED
int memfile_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4ce8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4ce90: 4e5e unlk %fp <== NOT EXECUTED
0004d902 <memfile_lseek>:
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
if (the_jnode->type == IMFS_LINEAR_FILE) {
4d902: 7006 moveq #6,%d0 <== NOT EXECUTED
rtems_off64_t memfile_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4d904: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4d908: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 4d90c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d910: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
if (the_jnode->type == IMFS_LINEAR_FILE) {
4d914: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 4d918: 673e beqs 4d958 <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 ))
4d91a: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4d91e: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 4d922: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d924: 4eb9 0004 d4d2 jsr 4d4d2 <IMFS_memfile_extend> <== NOT EXECUTED 4d92a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d92e: 4a80 tstl %d0 <== NOT EXECUTED 4d930: 665a bnes 4d98c <memfile_lseek+0x8a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
iop->size = the_jnode->info.file.size;
4d932: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED 4d936: 222b 0050 movel %a3@(80),%d1 <== NOT EXECUTED 4d93a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4d93e: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED 4d942: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 4d946: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED
} return iop->offset; }
4d94a: 2001 movel %d1,%d0 <== NOT EXECUTED 4d94c: 2202 movel %d2,%d1 <== NOT EXECUTED 4d94e: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4d954: 4e5e unlk %fp <== NOT EXECUTED 4d956: 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)
4d958: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 4d95c: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED 4d960: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED 4d964: 282b 0050 movel %a3@(80),%d4 <== NOT EXECUTED 4d968: 2a01 movel %d1,%d5 <== NOT EXECUTED 4d96a: 2c02 movel %d2,%d6 <== NOT EXECUTED 4d96c: 9c84 subl %d4,%d6 <== NOT EXECUTED 4d96e: 9b83 subxl %d3,%d5 <== NOT EXECUTED 4d970: 6fd8 bles 4d94a <memfile_lseek+0x48> <== NOT EXECUTED
iop->offset = the_jnode->info.linearfile.size;
4d972: 2203 movel %d3,%d1 <== NOT EXECUTED 4d974: 2404 movel %d4,%d2 <== NOT EXECUTED 4d976: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED 4d97a: 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;
}
4d97e: 2001 movel %d1,%d0 <== NOT EXECUTED 4d980: 2202 movel %d2,%d1 <== NOT EXECUTED 4d982: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4d988: 4e5e unlk %fp <== NOT EXECUTED 4d98a: 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 );
4d98c: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4d992: 7a1c moveq #28,%d5 <== NOT EXECUTED 4d994: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d996: 72ff moveq #-1,%d1 <== NOT EXECUTED 4d998: 74ff moveq #-1,%d2 <== NOT EXECUTED 4d99a: 2085 movel %d5,%a0@ <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
}
return iop->offset;
}
4d99c: 2001 movel %d1,%d0 <== NOT EXECUTED 4d99e: 2202 movel %d2,%d1 <== NOT EXECUTED 4d9a0: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 4d9a6: 4e5e unlk %fp <== NOT EXECUTED
...
0004d7ca <memfile_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4d7ca: 4e56 fff0 linkw %fp,#-16 4d7ce: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 4d7d2: 246e 0008 moveal %fp@(8),%a2
the_jnode = iop->pathinfo.node_access;
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4d7d6: 202a 0014 movel %a2@(20),%d0 4d7da: 2200 movel %d0,%d1 4d7dc: 0281 0000 0204 andil #516,%d1
uint32_t mode
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d7e2: 266a 0018 moveal %a2@(24),%a3
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4d7e6: 6708 beqs 4d7f0 <memfile_open+0x26> <== NEVER TAKEN
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
4d7e8: 7206 moveq #6,%d1 4d7ea: b2ab 0048 cmpl %a3@(72),%d1
4d7ee: 6732 beqs 4d822 <memfile_open+0x58> <== NEVER TAKEN
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))
4d7f0: 222b 004c movel %a3@(76),%d1 4d7f4: 242b 0050 movel %a3@(80),%d2
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4d7f8: 0800 0009 btst #9,%d0
4d7fc: 6710 beqs 4d80e <memfile_open+0x44> <== ALWAYS TAKEN
iop->offset = the_jnode->info.file.size;
4d7fe: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED 4d802: 2542 0010 movel %d2,%a2@(16) <== NOT EXECUTED 4d806: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED 4d80a: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
return 0;
4d80e: 4280 clrl %d0
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
iop->offset = the_jnode->info.file.size;
iop->size = the_jnode->info.file.size;
4d810: 2541 0004 movel %d1,%a2@(4) 4d814: 2542 0008 movel %d2,%a2@(8)
return 0; }
4d818: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 4d81e: 4e5e unlk %fp 4d820: 4e75 rts
/*
* 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;
4d822: 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;
4d826: 4282 clrl %d2 <== NOT EXECUTED 4d828: 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;
4d82a: 222b 0054 movel %a3@(84),%d1 <== NOT EXECUTED
the_jnode->type = IMFS_MEMORY_FILE;
the_jnode->info.file.size = 0;
4d82e: 2742 004c movel %d2,%a3@(76) <== NOT EXECUTED 4d832: 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;
4d836: 7605 moveq #5,%d3 <== NOT EXECUTED
the_jnode->info.file.size = 0;
the_jnode->info.file.indirect = 0;
4d838: 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;
4d83c: 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;
4d840: 42ab 0058 clrl %a3@(88) <== NOT EXECUTED
the_jnode->info.file.triply_indirect = 0;
4d844: 42ab 005c clrl %a3@(92) <== NOT EXECUTED
if ((count != 0)
4d848: 4a80 tstl %d0 <== NOT EXECUTED 4d84a: 6610 bnes 4d85c <memfile_open+0x92> <== NOT EXECUTED 4d84c: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d850: 4281 clrl %d1 <== NOT EXECUTED 4d852: 4282 clrl %d2 <== NOT EXECUTED
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4d854: 0800 0009 btst #9,%d0 <== NOT EXECUTED 4d858: 67b4 beqs 4d80e <memfile_open+0x44> <== NOT EXECUTED 4d85a: 60a2 bras 4d7fe <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))
4d85c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d85e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d860: 42a7 clrl %sp@- <== NOT EXECUTED 4d862: 42a7 clrl %sp@- <== NOT EXECUTED 4d864: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d866: 4eb9 0004 d5d8 jsr 4d5d8 <IMFS_memfile_write> <== NOT EXECUTED 4d86c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4d870: 72ff moveq #-1,%d1 <== NOT EXECUTED 4d872: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d874: 6710 beqs 4d886 <memfile_open+0xbc> <== NOT EXECUTED 4d876: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 4d87a: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED 4d87e: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED 4d882: 6000 ff74 braw 4d7f8 <memfile_open+0x2e> <== NOT EXECUTED
return -1;
4d886: 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;
}
4d888: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4d88e: 4e5e unlk %fp <== NOT EXECUTED
0004d2be <memfile_read>:
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4d2be: 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 );
4d2c2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4d2c6: 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 );
4d2ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d2ce: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED 4d2d2: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 4d2d6: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED 4d2da: 4eb9 0004 d05e jsr 4d05e <IMFS_memfile_read> <== NOT EXECUTED
}
4d2e0: 4e5e unlk %fp <== NOT EXECUTED
0004d788 <memfile_write>:
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4d788: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4d78c: 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 );
4d790: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4d794: 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 );
4d798: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
)
{
IMFS_jnode_t *the_jnode;
ssize_t status;
the_jnode = iop->pathinfo.node_access;
4d79c: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
status = IMFS_memfile_write( the_jnode, iop->offset, buffer, count );
4d7a0: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED 4d7a4: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED 4d7a8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d7aa: 4eb9 0004 d5d8 jsr 4d5d8 <IMFS_memfile_write> <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4d7b0: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED 4d7b4: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED 4d7b8: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED 4d7bc: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return status;
}
4d7c0: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4d7c6: 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 e96c jsr 4e96c <__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 b430 jsr 4b430 <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 fdc4 lea 4fdc4 <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 fdc4 jsr 4fdc4 <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 f218 lea 4f218 <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 e498 movel #386200,%d0 43390: b0b9 0005 e494 cmpl 5e494 <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 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- 433b6: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> 433bc: 2f0a movel %a2,%sp@- 433be: 4879 0005 e494 pea 5e494 <mount_chain> 433c4: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append>
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
433ca: 2f39 0005 fbac movel 5fbac <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 e5b0 moveal 5e5b0 <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 e96c jsr 4e96c <__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 cf68 lea 5cf68 <IMFS_ops+0x48>,%a0 434da: 45f9 0004 fdc4 lea 4fdc4 <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 e96c jsr 4e96c <__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 e96c jsr 4e96c <__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 e96c jsr 4e96c <__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 e96c jsr 4e96c <__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 f150 jsr 4f150 <__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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bda0: 4eb9 0004 f6bc jsr 4f6bc <_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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bdca: 4eb9 0004 f28c jsr 4f28c <_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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bdd8: 4eb9 0004 f550 jsr 4f550 <_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 0005 0276 jsr 50276 <_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 6a5c jsr 56a5c <__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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4be7c: 4eb9 0004 f6bc jsr 4f6bc <_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 0005 0276 jsr 50276 <_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 6a5c jsr 56a5c <__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 6a5c jsr 56a5c <__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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4bf30: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4bf34: 4eb9 0004 f6bc jsr 4f6bc <_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 6a5c jsr 56a5c <__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 0005 0276 jsr 50276 <_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 0005 0276 jsr 50276 <_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 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
4bfbc: 7410 moveq #16,%d2 <== NOT EXECUTED 4bfbe: 4eb9 0005 6a5c jsr 56a5c <__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 9aa4 movel 69aa4 <_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 9aa4 movel %d0,69aa4 <_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 9ec0 pea 69ec0 <_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 f1fc jsr 4f1fc <_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 3338 jsr 53338 <_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 0005 0276 lea 50276 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4c04a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4c04e: 4879 0006 9d52 pea 69d52 <_POSIX_Message_queue_Information><== NOT EXECUTED 4c054: 4eb9 0004 f6bc jsr 4f6bc <_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 9ed8 moveal 69ed8 <_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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c0a0: 4eb9 0004 f550 jsr 4f550 <_Objects_Free> <== NOT EXECUTED
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
4c0a6: 4eb9 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( status, mqd_t );
4c0ac: 4eb9 0005 6a5c jsr 56a5c <__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 9ec0 pea 69ec0 <_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 f1fc jsr 4f1fc <_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 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
4c0e4: 7417 moveq #23,%d2 <== NOT EXECUTED 4c0e6: 4eb9 0005 6a5c jsr 56a5c <__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 31b8 jsr 531b8 <_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 9ed8 moveal 69ed8 <_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 0005 0276 jsr 50276 <_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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c152: 4eb9 0004 f550 jsr 4f550 <_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 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );
4c15e: 4eb9 0005 6a5c jsr 56a5c <__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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c180: 4eb9 0004 f550 jsr 4f550 <_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 0005 0276 jsr 50276 <_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 9ec0 pea 69ec0 <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4c4c6: 4eb9 0004 f6bc jsr 4f6bc <_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 0005 0276 jsr 50276 <_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 6a5c jsr 56a5c <__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 6a5c jsr 56a5c <__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 9aa4 movel 69aa4 <_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 9aa4 movel %d0,69aa4 <_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 3338 jsr 53338 <_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 9d6a moveal 69d6a <_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 9d52 pea 69d52 <_POSIX_Message_queue_Information><== NOT EXECUTED 4c61c: 4eb9 0004 f83c jsr 4f83c <_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 0005 0276 jsr 50276 <_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 0005 0276 jsr 50276 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( status );
4c648: 4eb9 0005 6a5c jsr 56a5c <__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
0005cba0 <nanosleep>:
int nanosleep(
const struct timespec *rqtp,
struct timespec *rmtp
)
{
5cba0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5cba4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5cba6: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 5cbaa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cbac: 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 ) )
5cbb0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cbb2: 4eb9 0005 cd0c jsr 5cd0c <_Timespec_Is_valid> <== NOT EXECUTED 5cbb8: 588f addql #4,%sp <== NOT EXECUTED 5cbba: 4a00 tstb %d0 <== NOT EXECUTED 5cbbc: 6700 00f8 beqw 5ccb6 <nanosleep+0x116> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
ticks = _Timespec_To_ticks( rqtp );
5cbc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cbc2: 4eb9 0004 d250 jsr 4d250 <_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 ) {
5cbc8: 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 );
5cbca: 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 ) {
5cbcc: 663e bnes 5cc0c <nanosleep+0x6c> <== NOT EXECUTED 5cbce: 2039 0006 0c60 movel 60c60 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5cbd4: 5280 addql #1,%d0 <== NOT EXECUTED 5cbd6: 23c0 0006 0c60 movel %d0,60c60 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
5cbdc: 4879 0006 0ce6 pea 60ce6 <_Scheduler> <== NOT EXECUTED 5cbe2: 2079 0006 0cee moveal 60cee <_Scheduler+0x8>,%a0 <== NOT EXECUTED 5cbe8: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_Scheduler_Yield();
_Thread_Enable_dispatch();
5cbea: 4eb9 0004 8da2 jsr 48da2 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( rmtp ) {
5cbf0: 588f addql #4,%sp <== NOT EXECUTED 5cbf2: 4a8a tstl %a2 <== NOT EXECUTED 5cbf4: 6700 0098 beqw 5cc8e <nanosleep+0xee> <== NOT EXECUTED
rmtp->tv_sec = 0;
5cbf8: 4292 clrl %a2@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cbfa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( rmtp ) {
rmtp->tv_sec = 0;
rmtp->tv_nsec = 0;
}
return 0;
5cbfe: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_Scheduler_Yield();
_Thread_Enable_dispatch();
if ( rmtp ) {
rmtp->tv_sec = 0;
rmtp->tv_nsec = 0;
5cc00: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cc04: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cc08: 4e5e unlk %fp <== NOT EXECUTED 5cc0a: 4e75 rts <== NOT EXECUTED 5cc0c: 2039 0006 0c60 movel 60c60 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5cc12: 5280 addql #1,%d0 <== NOT EXECUTED 5cc14: 23c0 0006 0c60 movel %d0,60c60 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Block for the desired amount of time
*/
_Thread_Disable_dispatch();
_Thread_Set_state(
5cc1a: 2f3c 1000 0008 movel #268435464,%sp@- <== NOT EXECUTED 5cc20: 2f39 0006 10ee movel 610ee <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 5cc26: 4eb9 0004 96a0 jsr 496a0 <_Thread_Set_state> <== NOT EXECUTED
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
5cc2c: 2079 0006 10ee moveal 610ee <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
5cc32: 203c 0004 8bfc movel #297980,%d0 <== NOT EXECUTED 5cc38: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Set_state(
_Thread_Executing,
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Watchdog_Initialize(
5cc3c: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
5cc40: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id;
5cc44: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
5cc48: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
5cc4c: 2142 0054 movel %d2,%a0@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
5cc50: 4868 0048 pea %a0@(72) <== NOT EXECUTED 5cc54: 4879 0006 0d40 pea 60d40 <_Watchdog_Ticks_chain> <== NOT EXECUTED 5cc5a: 4eb9 0004 9d74 jsr 49d74 <_Watchdog_Insert> <== NOT EXECUTED
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
_Thread_Enable_dispatch();
5cc60: 4eb9 0004 8da2 jsr 48da2 <_Thread_Enable_dispatch> <== NOT EXECUTED
/* calculate time remaining */
if ( rmtp ) {
5cc66: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5cc6a: 4a8a tstl %a2 <== NOT EXECUTED 5cc6c: 6720 beqs 5cc8e <nanosleep+0xee> <== NOT EXECUTED
ticks -=
_Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time;
5cc6e: 2079 0006 10ee moveal 610ee <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 5cc74: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED 5cc78: 90a8 0060 subl %a0@(96),%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
/* calculate time remaining */
if ( rmtp ) {
ticks -=
5cc7c: d480 addl %d0,%d2 <== NOT EXECUTED
_Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time;
_Timespec_From_ticks( ticks, rmtp );
5cc7e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5cc80: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5cc82: 4eb9 0005 ccd0 jsr 5ccd0 <_Timespec_From_ticks> <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
/*
* If there is time remaining, then we were interrupted by a signal.
*/
if ( ticks )
5cc88: 508f addql #8,%sp <== NOT EXECUTED 5cc8a: 4a82 tstl %d2 <== NOT EXECUTED 5cc8c: 660e bnes 5cc9c <nanosleep+0xfc> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cc8e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( ticks )
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
5cc92: 4280 clrl %d0 <== NOT EXECUTED
}
5cc94: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cc98: 4e5e unlk %fp <== NOT EXECUTED 5cc9a: 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 );
5cc9c: 4eb9 0004 ee30 jsr 4ee30 <__errno> <== NOT EXECUTED
#endif
}
return 0;
}
5cca2: 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 );
5cca6: 2040 moveal %d0,%a0 <== NOT EXECUTED 5cca8: 7204 moveq #4,%d1 <== NOT EXECUTED 5ccaa: 70ff moveq #-1,%d0 <== NOT EXECUTED
#endif
}
return 0;
}
5ccac: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5ccb0: 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 );
5ccb2: 2081 movel %d1,%a0@ <== NOT EXECUTED
#endif
}
return 0;
}
5ccb4: 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 );
5ccb6: 4eb9 0004 ee30 jsr 4ee30 <__errno> <== NOT EXECUTED 5ccbc: 7416 moveq #22,%d2 <== NOT EXECUTED 5ccbe: 2040 moveal %d0,%a0 <== NOT EXECUTED 5ccc0: 70ff moveq #-1,%d0 <== NOT EXECUTED 5ccc2: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5ccc4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 5ccc8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 5cccc: 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 fd9e tstl 5fd9e <_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 9b9e jsr 49b9e <_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 d44c movel #382028,%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 f288 jsr 4f288 <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 00fa movel %a2,%a0@(250)
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 db96 lea 5db96 <_global_impure_ptr>,%a0
RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent (
struct _reent **libc_reent
)
{
_Thread_libc_reent = libc_reent;
43822: 43f9 0005 e674 lea 5e674 <_impure_ptr>,%a1 43828: 23d0 0005 e674 movel %a0@,5e674 <_impure_ptr> 4382e: 23c9 0005 fd9e movel %a1,5fd9e <_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 00fa movel %a2@(250),%d2
}
if (ptr && ptr != _global_impure_ptr) {
43850: 4a82 tstl %d2
43852: 6722 beqs 43876 <newlib_delete_hook+0x3e> <== NEVER TAKEN
43854: b4b9 0005 db96 cmpl 5db96 <_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 f120 jsr 4f120 <_fwalk>
#if REENT_MALLOCED
free(ptr);
#else
_Workspace_Free(ptr);
4386a: 2f02 movel %d2,%sp@- 4386c: 4eb9 0004 9bba jsr 49bba <_Workspace_Free> 43872: 4fef 000c lea %sp@(12),%sp
#endif
}
deleted_task->libc_reent = NULL;
43876: 42aa 00fa clrl %a2@(250)
/*
* 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 e674 clrl 5e674 <_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 e674 movel 5e674 <_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 ed0c jsr 4ed0c <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 eaba jsr 4eaba <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 cc38 tstb 5cc38 <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 a56e pea 5a56e <_rodata_start+0x21e>
)
{
rtems_device_driver status;
if ( !initialized ) {
initialized = 1;
42754: 13c0 0005 cc38 moveb %d0,5cc38 <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 d430 movel %d2,5d430 <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 6c68 jsr 46c68 <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 b0f6 jsr 4b0f6 <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 fdc4 lea 4fdc4 <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 b068 jsr 4b068 <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 fba4 subl 5fba4 <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 e96c movel #321900,%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 e96c movel #321900,%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 b1ba jsr 4b1ba <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 fba4 subl 5fba4 <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 af74 jsr 4af74 <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 e96c movel #321900,%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 fba4 subl 5fba4 <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 aeec jsr 4aeec <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 fba4 subl 5fba4 <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 e96c movel #321900,%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 e96c movel #321900,%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> 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 fba4 subl 5fba4 <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 aeec jsr 4aeec <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@- 43b3c: 2005 movel %d5,%d0 43b3e: 42a7 clrl %sp@- 43b40: 08c0 000f bset #15,%d0 43b44: 2f00 movel %d0,%sp@- 43b46: 2f03 movel %d3,%sp@- 43b48: 4eb9 0004 311c jsr 4311c <mknod>
if ( rc ) {
43b4e: 4fef 0010 lea %sp@(16),%sp 43b52: 4a80 tstl %d0
43b54: 6698 bnes 43aee <open+0x1da> <== NEVER TAKEN
/*
* 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@- 43b58: 4e95 jsr %a5@ 43b5a: 7201 moveq #1,%d1 43b5c: 2e81 movel %d1,%sp@ 43b5e: 2f0b movel %a3,%sp@- 43b60: 42a7 clrl %sp@- 43b62: 2f00 movel %d0,%sp@- 43b64: 2f03 movel %d3,%sp@- 43b66: 4e94 jsr %a4@
pathname, strlen( pathname ), 0x0, &loc, true );
if ( status != 0 ) { /* The file did not exist */
43b68: 4fef 0014 lea %sp@(20),%sp 43b6c: 4a80 tstl %d0 43b6e: 6700 fe1e beqw 4398e <open+0x7a>
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 ce8a pea 5ce8a <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 ce8a pea 5ce8a <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 ce8a pea 5ce8a <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 6bcc jsr 46bcc <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 6bcc jsr 46bcc <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 e670 moveal 5e670 <__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 d4c2 pea 5d4c2 <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 e670 moveal 5e670 <__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 d4c4 pea 5d4c4 <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 c140 jmp 4c140 <pipe_create> <== NOT EXECUTED
int pipe(
int filsdes[2]
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
45296: 4eb9 0005 07ec jsr 507ec <__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);
}
0004c140 <pipe_create>:
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4c140: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4c144: 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)
4c148: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED 4c14c: 4879 0005 f278 pea 5f278 <_CPU_m68k_BFFFO_table+0x100> <== NOT EXECUTED
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4c152: 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)
4c156: 4eb9 0004 dab4 jsr 4dab4 <rtems_mkdir> <== NOT EXECUTED 4c15c: 508f addql #8,%sp <== NOT EXECUTED 4c15e: 4a80 tstl %d0 <== NOT EXECUTED 4c160: 670c beqs 4c16e <pipe_create+0x2e> <== NOT EXECUTED
return -1;
4c162: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4c164: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED 4c16a: 4e5e unlk %fp <== NOT EXECUTED 4c16c: 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);
4c16e: 45ee fff1 lea %fp@(-15),%a2 <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c172: 3039 0006 0f68 movew 60f68 <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);
4c178: 24bc 2f74 6d70 movel #796159344,%a2@ <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c17e: 2200 movel %d0,%d1 <== NOT EXECUTED 4c180: 5281 addql #1,%d1 <== NOT EXECUTED 4c182: 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);
4c184: 203c 2f2e 6669 movel #791570025,%d0 <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c18a: 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);
4c18c: 307c 666f moveaw #26223,%a0 <== NOT EXECUTED 4c190: 2d40 fff5 movel %d0,%fp@(-11) <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c194: 4879 0005 f27d pea 5f27d <_CPU_m68k_BFFFO_table+0x105> <== NOT EXECUTED 4c19a: 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);
4c19e: 3d48 fff9 movew %a0,%fp@(-7) <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c1a2: 33c1 0006 0f68 movew %d1,60f68 <rtems_pipe_no> <== NOT EXECUTED 4c1a8: 4eb9 0005 1510 jsr 51510 <sprintf> <== NOT EXECUTED
/* Try creating FIFO file until find an available file name */
while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {
4c1ae: 4878 0180 pea 180 <DBL_MANT_DIG+0x14b> <== NOT EXECUTED 4c1b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c1b4: 4eb9 0004 d7e0 jsr 4d7e0 <mkfifo> <== NOT EXECUTED 4c1ba: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4c1be: 4a80 tstl %d0 <== NOT EXECUTED 4c1c0: 6600 009a bnew 4c25c <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);
4c1c4: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED 4c1c8: 49f9 0004 4ff8 lea 44ff8 <open>,%a4 <== NOT EXECUTED 4c1ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c1d0: 4e94 jsr %a4@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4c1d2: 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);
4c1d4: 2680 movel %d0,%a3@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4c1d6: 6d4e blts 4c226 <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]);
4c1d8: b0b9 0005 fe34 cmpl 5fe34 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 4c1de: 6442 bccs 4c222 <pipe_create+0xe2> <== NOT EXECUTED 4c1e0: 2200 movel %d0,%d1 <== NOT EXECUTED 4c1e2: ed88 lsll #6,%d0 <== NOT EXECUTED 4c1e4: e789 lsll #3,%d1 <== NOT EXECUTED 4c1e6: 2079 0006 165c moveal 6165c <rtems_libio_iops>,%a0 <== NOT EXECUTED 4c1ec: 9081 subl %d1,%d0 <== NOT EXECUTED 4c1ee: d1c0 addal %d0,%a0 <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
4c1f0: 70fe moveq #-2,%d0 <== NOT EXECUTED 4c1f2: c1a8 0014 andl %d0,%a0@(20) <== NOT EXECUTED
filsdes[1] = open(fifopath, O_WRONLY);
4c1f6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4c1fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c1fc: 4e94 jsr %a4@ <== NOT EXECUTED
if (filsdes[1] < 0) {
4c1fe: 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);
4c200: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
if (filsdes[1] < 0) {
4c204: 6d36 blts 4c23c <pipe_create+0xfc> <== NOT EXECUTED
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4c206: 2f0a movel %a2,%sp@- <== NOT EXECUTED
int pipe_create(
int filsdes[2]
)
{
rtems_libio_t *iop;
int err = 0;
4c208: 99cc subal %a4,%a4 <== NOT EXECUTED
if (filsdes[1] < 0) {
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4c20a: 4eb9 0004 7118 jsr 47118 <unlink> <== NOT EXECUTED 4c210: 588f addql #4,%sp <== NOT EXECUTED
} if(err != 0)
4c212: 4a8c tstl %a4 <== NOT EXECUTED 4c214: 6658 bnes 4c26e <pipe_create+0x12e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(err);
return 0;
4c216: 4280 clrl %d0 <== NOT EXECUTED
}
4c218: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED 4c21e: 4e5e unlk %fp <== NOT EXECUTED 4c220: 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]);
4c222: 91c8 subal %a0,%a0 <== NOT EXECUTED 4c224: 60ca bras 4c1f0 <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;
4c226: 4eb9 0005 07ec jsr 507ec <__errno> <== NOT EXECUTED 4c22c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c22e: 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);
4c230: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c232: 4eb9 0004 7118 jsr 47118 <unlink> <== NOT EXECUTED 4c238: 588f addql #4,%sp <== NOT EXECUTED 4c23a: 60d6 bras 4c212 <pipe_create+0xd2> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
filsdes[1] = open(fifopath, O_WRONLY);
if (filsdes[1] < 0) {
err = errno;
4c23c: 4eb9 0005 07ec jsr 507ec <__errno> <== NOT EXECUTED 4c242: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c244: 2850 moveal %a0@,%a4 <== NOT EXECUTED
close(filsdes[0]);
4c246: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 4c248: 4eb9 0004 3c78 jsr 43c78 <close> <== NOT EXECUTED 4c24e: 588f addql #4,%sp <== NOT EXECUTED
}
unlink(fifopath);
4c250: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c252: 4eb9 0004 7118 jsr 47118 <unlink> <== NOT EXECUTED 4c258: 588f addql #4,%sp <== NOT EXECUTED 4c25a: 60b6 bras 4c212 <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){
4c25c: 4eb9 0005 07ec jsr 507ec <__errno> <== NOT EXECUTED
return -1;
4c262: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4c264: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED 4c26a: 4e5e unlk %fp <== NOT EXECUTED 4c26c: 4e75 rts <== NOT EXECUTED
close(filsdes[0]);
}
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
4c26e: 4eb9 0005 07ec jsr 507ec <__errno> <== NOT EXECUTED 4c274: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c276: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c278: 208c movel %a4,%a0@ <== NOT EXECUTED
return 0; }
4c27a: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED 4c280: 4e5e unlk %fp <== NOT EXECUTED
0004d86c <pipe_ioctl>:
pipe_control_t *pipe,
uint32_t cmd,
void *buffer,
rtems_libio_t *iop
)
{
4d86c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (cmd == FIONREAD) {
4d870: 203c 4004 667f movel #1074030207,%d0 <== NOT EXECUTED 4d876: b0ae 000c cmpl %fp@(12),%d0 <== NOT EXECUTED 4d87a: 6706 beqs 4d882 <pipe_ioctl+0x16> <== NOT EXECUTED
*(unsigned int *)buffer = pipe->Length;
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
4d87c: 70ea moveq #-22,%d0 <== NOT EXECUTED
}
4d87e: 4e5e unlk %fp <== NOT EXECUTED 4d880: 4e75 rts <== NOT EXECUTED
void *buffer,
rtems_libio_t *iop
)
{
if (cmd == FIONREAD) {
if (buffer == NULL)
4d882: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 4d886: 6606 bnes 4d88e <pipe_ioctl+0x22> <== NOT EXECUTED
return -EFAULT;
4d888: 70f2 moveq #-14,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4d88a: 4e5e unlk %fp <== NOT EXECUTED 4d88c: 4e75 rts <== NOT EXECUTED
{
if (cmd == FIONREAD) {
if (buffer == NULL)
return -EFAULT;
if (! PIPE_LOCK(pipe))
4d88e: 42a7 clrl %sp@- <== NOT EXECUTED 4d890: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d894: 42a7 clrl %sp@- <== NOT EXECUTED 4d896: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED 4d89a: 4eb9 0004 8804 jsr 48804 <rtems_semaphore_obtain> <== NOT EXECUTED 4d8a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d8a4: 4a80 tstl %d0 <== NOT EXECUTED 4d8a6: 6706 beqs 4d8ae <pipe_ioctl+0x42> <== NOT EXECUTED
return -EINTR;
4d8a8: 70fc moveq #-4,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4d8aa: 4e5e unlk %fp <== NOT EXECUTED 4d8ac: 4e75 rts <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
/* Return length of pipe */
*(unsigned int *)buffer = pipe->Length;
4d8ae: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d8b2: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 4d8b6: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d8ba: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED 4d8be: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
4d8c4: 588f addql #4,%sp <== NOT EXECUTED 4d8c6: 4280 clrl %d0 <== NOT EXECUTED
}
return -EINVAL;
}
4d8c8: 4e5e unlk %fp <== NOT EXECUTED
0004d8cc <pipe_lseek>:
rtems_libio_t *iop
)
{
/* Seek on pipe is not supported */
return -ESPIPE;
}
4d8cc: 70e3 moveq #-29,%d0 <== NOT EXECUTED
pipe_control_t *pipe,
off_t offset,
int whence,
rtems_libio_t *iop
)
{
4d8ce: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Seek on pipe is not supported */ return -ESPIPE; }
4d8d2: 4e5e unlk %fp <== NOT EXECUTED
...
0004d458 <pipe_read>:
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d458: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4d45c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d460: 42a7 clrl %sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d462: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d466: 47f9 0004 8804 lea 48804 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED 4d46c: 42a7 clrl %sp@- <== NOT EXECUTED 4d46e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d472: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 4d476: 2a6e 0014 moveal %fp@(20),%a5 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d47a: 4e93 jsr %a3@ <== NOT EXECUTED 4d47c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d480: 4a80 tstl %d0 <== NOT EXECUTED 4d482: 6600 00ac bnew 4d530 <pipe_read+0xd8> <== NOT EXECUTED
return -EINTR;
while (read < count) {
4d486: 4a84 tstl %d4 <== NOT EXECUTED 4d488: 6700 01ac beqw 4d636 <pipe_read+0x1de> <== NOT EXECUTED 4d48c: 4285 clrl %d5 <== NOT EXECUTED 4d48e: 4283 clrl %d3 <== NOT EXECUTED 4d490: 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))
4d496: 243c 0004 effc movel #323580,%d2 <== NOT EXECUTED
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
pipe->Start = 0;
if (pipe->waitingWriters > 0)
PIPE_WAKEUPWRITERS(pipe);
4d49c: 2e3c 0004 ef84 movel #323460,%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);
4d4a2: 2c3c 0005 1ebc movel #335548,%d6 <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
4d4a8: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 4d4ac: 6600 0090 bnew 4d53e <pipe_read+0xe6> <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
4d4b0: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4d4b4: 6700 010a beqw 4d5c0 <pipe_read+0x168> <== NOT EXECUTED
goto out_locked;
if (LIBIO_NODELAY(iop)) {
4d4b8: 7001 moveq #1,%d0 <== NOT EXECUTED 4d4ba: c0ad 0014 andl %a5@(20),%d0 <== NOT EXECUTED 4d4be: 6600 0110 bnew 4d5d0 <pipe_read+0x178> <== NOT EXECUTED
goto out_locked;
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
4d4c2: 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 ++;
4d4c6: 52aa 0018 addql #1,%a2@(24) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d4ca: 4e94 jsr %a4@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4d4cc: 2042 moveal %d2,%a0 <== NOT EXECUTED 4d4ce: 42a7 clrl %sp@- <== NOT EXECUTED 4d4d0: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d4d4: 4e90 jsr %a0@ <== NOT EXECUTED 4d4d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d4da: 4a80 tstl %d0 <== NOT EXECUTED 4d4dc: 663a bnes 4d518 <pipe_read+0xc0> <== NOT EXECUTED 4d4de: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4d4e2: 42a7 clrl %sp@- <== NOT EXECUTED 4d4e4: 42a7 clrl %sp@- <== NOT EXECUTED 4d4e6: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d4ea: 4e93 jsr %a3@ <== NOT EXECUTED 4d4ec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d4f0: 4a80 tstl %d0 <== NOT EXECUTED 4d4f2: 6600 00ee bnew 4d5e2 <pipe_read+0x18a> <== NOT EXECUTED
/* WARN waitingReaders not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingReaders --;
4d4f6: 53aa 0018 subql #1,%a2@(24) <== NOT EXECUTED
if (ret != 0)
4d4fa: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 4d4fe: 67a8 beqs 4d4a8 <pipe_read+0x50> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d500: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d504: 4e94 jsr %a4@ <== NOT EXECUTED 4d506: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
if (read > 0)
4d508: 4a83 tstl %d3 <== NOT EXECUTED 4d50a: 6f14 bles 4d520 <pipe_read+0xc8> <== NOT EXECUTED
return read;
return ret;
}
4d50c: 2003 movel %d3,%d0 <== NOT EXECUTED 4d50e: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d514: 4e5e unlk %fp <== NOT EXECUTED 4d516: 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;
4d518: 70fc moveq #-4,%d0 <== NOT EXECUTED 4d51a: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 4d51e: 60c2 bras 4d4e2 <pipe_read+0x8a> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
return read;
return ret;
4d520: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
}
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
)
{
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4d530: 76fc moveq #-4,%d3 <== NOT EXECUTED
out_nolock:
if (read > 0)
return read;
return ret;
}
4d532: 2003 movel %d3,%d0 <== NOT EXECUTED 4d534: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d53a: 4e5e unlk %fp <== NOT EXECUTED 4d53c: 4e75 rts <== NOT EXECUTED
if (ret != 0)
goto out_locked;
}
/* Read chunk bytes */
chunk = MIN(count - read, pipe->Length);
4d53e: 2004 movel %d4,%d0 <== NOT EXECUTED 4d540: 9085 subl %d5,%d0 <== NOT EXECUTED 4d542: b081 cmpl %d1,%d0 <== NOT EXECUTED 4d544: 6402 bccs 4d548 <pipe_read+0xf0> <== NOT EXECUTED 4d546: 2200 movel %d0,%d1 <== NOT EXECUTED
chunk1 = pipe->Size - pipe->Start;
4d548: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 4d54c: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 4d550: 91c0 subal %d0,%a0 <== NOT EXECUTED
if (chunk > chunk1) {
4d552: b1c1 cmpal %d1,%a0 <== NOT EXECUTED 4d554: 6d00 009c bltw 4d5f2 <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);
4d558: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d55a: d092 addl %a2@,%d0 <== NOT EXECUTED 4d55c: 2246 moveal %d6,%a1 <== NOT EXECUTED 4d55e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4d562: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d564: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED 4d568: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 4d56c: 4e91 jsr %a1@ <== NOT EXECUTED 4d56e: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d572: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Start += chunk;
4d576: 2041 moveal %d1,%a0 <== NOT EXECUTED 4d578: d1ea 0008 addal %a2@(8),%a0 <== NOT EXECUTED
pipe->Start %= pipe->Size;
4d57c: 2008 movel %a0,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4d57e: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED 4d582: 93c1 subal %d1,%a1 <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4d584: 4c6a 0005 0004 remul %a2@(4),%d5,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4d58a: 2549 000c movel %a1,%a2@(12) <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4d58e: 2545 0008 movel %d5,%a2@(8) <== NOT EXECUTED
pipe->Length -= chunk;
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
4d592: 4a89 tstl %a1 <== NOT EXECUTED 4d594: 6604 bnes 4d59a <pipe_read+0x142> <== NOT EXECUTED
pipe->Start = 0;
4d596: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
if (pipe->waitingWriters > 0)
4d59a: 4aaa 001c tstl %a2@(28) <== NOT EXECUTED 4d59e: 6716 beqs 4d5b6 <pipe_read+0x15e> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
4d5a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d5a4: 2047 moveal %d7,%a0 <== NOT EXECUTED 4d5a6: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d5aa: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 4d5ae: 4e90 jsr %a0@ <== NOT EXECUTED 4d5b0: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d5b4: 508f addql #8,%sp <== NOT EXECUTED
read += chunk;
4d5b6: d681 addl %d1,%d3 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4d5b8: 2a03 movel %d3,%d5 <== NOT EXECUTED 4d5ba: b883 cmpl %d3,%d4 <== NOT EXECUTED 4d5bc: 6200 feea bhiw 4d4a8 <pipe_read+0x50> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5c0: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
/* Not an error */
if (pipe->Writers == 0)
4d5c4: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5c8: 4e94 jsr %a4@ <== NOT EXECUTED 4d5ca: 588f addql #4,%sp <== NOT EXECUTED 4d5cc: 6000 ff3a braw 4d508 <pipe_read+0xb0> <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d5d0: 70f5 moveq #-11,%d0 <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5d2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d5d6: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5da: 4e94 jsr %a4@ <== NOT EXECUTED 4d5dc: 588f addql #4,%sp <== NOT EXECUTED 4d5de: 6000 ff28 braw 4d508 <pipe_read+0xb0> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingReaders not restored! */
ret = -EINTR;
4d5e2: 7afc moveq #-4,%d5 <== NOT EXECUTED 4d5e4: 2d45 fff8 movel %d5,%fp@(-8) <== NOT EXECUTED
out_locked:
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
4d5e8: 4a83 tstl %d3 <== NOT EXECUTED 4d5ea: 6e00 ff20 bgtw 4d50c <pipe_read+0xb4> <== NOT EXECUTED 4d5ee: 6000 ff30 braw 4d520 <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);
4d5f2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d5f4: d092 addl %a2@,%d0 <== NOT EXECUTED 4d5f6: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d5fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d5fc: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED 4d600: 2246 moveal %d6,%a1 <== NOT EXECUTED 4d602: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 4d606: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED 4d60a: 4e91 jsr %a1@ <== NOT EXECUTED
memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);
4d60c: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d610: 2001 movel %d1,%d0 <== NOT EXECUTED 4d612: 2246 moveal %d6,%a1 <== NOT EXECUTED 4d614: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED 4d618: 9088 subl %a0,%d0 <== NOT EXECUTED 4d61a: da88 addl %a0,%d5 <== NOT EXECUTED 4d61c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d61e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4d620: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4d624: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED 4d628: 4e91 jsr %a1@ <== NOT EXECUTED 4d62a: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d62e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4d632: 6000 ff42 braw 4d576 <pipe_read+0x11e> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d636: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d63a: 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) {
4d640: 4283 clrl %d3 <== NOT EXECUTED 4d642: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d646: 4e94 jsr %a4@ <== NOT EXECUTED 4d648: 588f addql #4,%sp <== NOT EXECUTED 4d64a: 6000 febc braw 4d508 <pipe_read+0xb0> <== NOT EXECUTED
0004cee2 <pipe_release>:
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cee2: 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);
4cee6: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4ceea: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4ceee: 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);
4cef2: 7406 moveq #6,%d2 <== NOT EXECUTED
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
pipe_control_t *pipe = *pipep;
4cef4: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4cef6: c4a8 0014 andl %a0@(20),%d2 <== NOT EXECUTED
if (mode & LIBIO_FLAGS_READ)
4cefa: 0802 0001 btst #1,%d2 <== NOT EXECUTED 4cefe: 6704 beqs 4cf04 <pipe_release+0x22> <== NOT EXECUTED
pipe->Readers --;
4cf00: 53aa 0010 subql #1,%a2@(16) <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
4cf04: 44c2 movew %d2,%ccr <== NOT EXECUTED 4cf06: 6604 bnes 4cf0c <pipe_release+0x2a> <== NOT EXECUTED
pipe->Writers --;
4cf08: 53aa 0014 subql #1,%a2@(20) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4cf0c: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4cf10: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED
if (pipe->Readers == 0 && pipe->Writers == 0) {
4cf16: 588f addql #4,%sp <== NOT EXECUTED 4cf18: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4cf1c: 672a beqs 4cf48 <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)
4cf1e: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4cf22: 6616 bnes 4cf3a <pipe_release+0x58> <== NOT EXECUTED 4cf24: 7002 moveq #2,%d0 <== NOT EXECUTED 4cf26: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cf28: 6710 beqs 4cf3a <pipe_release+0x58> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4cf2a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cf2e: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4cf32: 4eb9 0004 ef84 jsr 4ef84 <rtems_barrier_release> <== NOT EXECUTED 4cf38: 508f addql #8,%sp <== NOT EXECUTED
pipe_unlock();
4cf3a: 4eba ff90 jsr %pc@(4cecc <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cf3e: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED 4cf44: 4e5e unlk %fp <== NOT EXECUTED 4cf46: 4e75 rts <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
pipe->Writers --;
PIPE_UNLOCK(pipe);
if (pipe->Readers == 0 && pipe->Writers == 0) {
4cf48: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4cf4c: 6724 beqs 4cf72 <pipe_release+0x90> <== NOT EXECUTED
delfile = TRUE;
#endif
pipe_free(pipe);
*pipep = NULL;
}
else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)
4cf4e: 7004 moveq #4,%d0 <== NOT EXECUTED 4cf50: b082 cmpl %d2,%d0 <== NOT EXECUTED 4cf52: 67e6 beqs 4cf3a <pipe_release+0x58> <== NOT EXECUTED
/* Notify waiting Writers that all their partners left */
PIPE_WAKEUPWRITERS(pipe);
4cf54: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cf58: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4cf5c: 4eb9 0004 ef84 jsr 4ef84 <rtems_barrier_release> <== NOT EXECUTED 4cf62: 508f addql #8,%sp <== NOT EXECUTED
else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)
PIPE_WAKEUPREADERS(pipe);
pipe_unlock();
4cf64: 4eba ff66 jsr %pc@(4cecc <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cf68: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED 4cf6e: 4e5e unlk %fp <== NOT EXECUTED 4cf70: 4e75 rts <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4cf72: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4cf76: 4bf9 0004 eee4 lea 4eee4 <rtems_barrier_delete>,%a5 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier); rtems_semaphore_delete(pipe->Semaphore); free(pipe->Buffer);
4cf7c: 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);
4cf82: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4cf84: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4cf88: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4cf8a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4cf8e: 4eb9 0004 872c jsr 4872c <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4cf94: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4cf96: 4e94 jsr %a4@ <== NOT EXECUTED
free(pipe);
4cf98: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cf9a: 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;
4cf9c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4cfa0: 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();
4cfa2: 4eba ff28 jsr %pc@(4cecc <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cfa6: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED 4cfac: 4e5e unlk %fp <== NOT EXECUTED
0004cecc <pipe_unlock>:
return -ENOMEM;
}
}
static void pipe_unlock(void)
{
4cecc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_semaphore_release(pipe_semaphore);
4ced0: 2f39 0006 1e78 movel 61e78 <pipe_semaphore>,%sp@- <== NOT EXECUTED 4ced6: 4eb9 0004 8944 jsr 48944 <rtems_semaphore_release> <== NOT EXECUTED 4cedc: 588f addql #4,%sp <== NOT EXECUTED
#ifdef RTEMS_DEBUG
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
}
#endif
}
4cede: 4e5e unlk %fp <== NOT EXECUTED
0004d64e <pipe_write>:
pipe_control_t *pipe,
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d64e: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 4d652: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4d656: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4d65a: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
int chunk, chunk1, written = 0, ret = 0;
/* Write nothing */
if (count == 0)
4d65e: 660e bnes 4d66e <pipe_write+0x20> <== NOT EXECUTED
return 0;
4d660: 4282 clrl %d2 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4d662: 2002 movel %d2,%d0 <== NOT EXECUTED 4d664: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d66a: 4e5e unlk %fp <== NOT EXECUTED 4d66c: 4e75 rts <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
4d66e: 42a7 clrl %sp@- <== NOT EXECUTED 4d670: 47f9 0004 8804 lea 48804 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED 4d676: 42a7 clrl %sp@- <== NOT EXECUTED 4d678: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d67c: 4e93 jsr %a3@ <== NOT EXECUTED 4d67e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d682: 4a80 tstl %d0 <== NOT EXECUTED 4d684: 6600 00ca bnew 4d750 <pipe_write+0x102> <== NOT EXECUTED
return -EINTR;
if (pipe->Readers == 0) {
4d688: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d68c: 6700 00fe beqw 4d78c <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;
4d690: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4d694: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d696: 6500 00d8 bcsw 4d770 <pipe_write+0x122> <== NOT EXECUTED 4d69a: 2803 movel %d3,%d4 <== NOT EXECUTED 4d69c: 4285 clrl %d5 <== NOT EXECUTED 4d69e: 4282 clrl %d2 <== NOT EXECUTED 4d6a0: 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))
4d6a6: 4bf9 0004 effc lea 4effc <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);
4d6ac: 2c3c 0005 1ebc movel #335548,%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) {
4d6b2: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED 4d6b6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d6b8: 91c1 subal %d1,%a0 <== NOT EXECUTED 4d6ba: b888 cmpl %a0,%d4 <== NOT EXECUTED 4d6bc: 6300 00e8 blsw 4d7a6 <pipe_write+0x158> <== NOT EXECUTED
if (LIBIO_NODELAY(iop)) {
4d6c0: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4d6c4: 7001 moveq #1,%d0 <== NOT EXECUTED 4d6c6: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED 4d6ca: 6600 0168 bnew 4d834 <pipe_write+0x1e6> <== NOT EXECUTED
goto out_locked;
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
4d6ce: 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 ++;
4d6d2: 52aa 001c addql #1,%a2@(28) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d6d6: 4e94 jsr %a4@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4d6d8: 42a7 clrl %sp@- <== NOT EXECUTED 4d6da: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED 4d6de: 4e95 jsr %a5@ <== NOT EXECUTED 4d6e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d6e4: 4a80 tstl %d0 <== NOT EXECUTED 4d6e6: 662a bnes 4d712 <pipe_write+0xc4> <== NOT EXECUTED 4d6e8: 4287 clrl %d7 <== NOT EXECUTED
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4d6ea: 42a7 clrl %sp@- <== NOT EXECUTED 4d6ec: 42a7 clrl %sp@- <== NOT EXECUTED 4d6ee: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d6f2: 4e93 jsr %a3@ <== NOT EXECUTED 4d6f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d6f8: 4a80 tstl %d0 <== NOT EXECUTED 4d6fa: 6600 0132 bnew 4d82e <pipe_write+0x1e0> <== NOT EXECUTED
/* WARN waitingWriters not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingWriters --;
4d6fe: 53aa 001c subql #1,%a2@(28) <== NOT EXECUTED
if (ret != 0)
4d702: 4a87 tstl %d7 <== NOT EXECUTED 4d704: 6612 bnes 4d718 <pipe_write+0xca> <== NOT EXECUTED
goto out_locked;
if (pipe->Readers == 0) {
4d706: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4d70a: 6752 beqs 4d75e <pipe_write+0x110> <== NOT EXECUTED 4d70c: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4d710: 60a0 bras 4d6b2 <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;
4d712: 7efc moveq #-4,%d7 <== NOT EXECUTED 4d714: 60d4 bras 4d6ea <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) {
4d716: 4287 clrl %d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d718: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d71c: 4e94 jsr %a4@ <== NOT EXECUTED 4d71e: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d720: 70e0 moveq #-32,%d0 <== NOT EXECUTED 4d722: b087 cmpl %d7,%d0 <== NOT EXECUTED 4d724: 6714 beqs 4d73a <pipe_write+0xec> <== NOT EXECUTED
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
4d726: 4a82 tstl %d2 <== NOT EXECUTED 4d728: 6e00 ff38 bgtw 4d662 <pipe_write+0x14> <== NOT EXECUTED 4d72c: 2407 movel %d7,%d2 <== NOT EXECUTED
return written;
return ret;
}
4d72e: 2002 movel %d2,%d0 <== NOT EXECUTED 4d730: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d736: 4e5e unlk %fp <== NOT EXECUTED 4d738: 4e75 rts <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
kill(getpid(), SIGPIPE);
4d73a: 4eb9 0004 e1b4 jsr 4e1b4 <getpid> <== NOT EXECUTED 4d740: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED 4d744: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d746: 4eb9 0004 e4e4 jsr 4e4e4 <kill> <== NOT EXECUTED 4d74c: 508f addql #8,%sp <== NOT EXECUTED 4d74e: 60d6 bras 4d726 <pipe_write+0xd8> <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4d750: 74fc moveq #-4,%d2 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4d752: 2002 movel %d2,%d0 <== NOT EXECUTED 4d754: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d75a: 4e5e unlk %fp <== NOT EXECUTED 4d75c: 4e75 rts <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d75e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe->waitingWriters --;
if (ret != 0)
goto out_locked;
if (pipe->Readers == 0) {
ret = -EPIPE;
4d762: 7ee0 moveq #-32,%d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d764: 4e94 jsr %a4@ <== NOT EXECUTED 4d766: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d768: 70e0 moveq #-32,%d0 <== NOT EXECUTED 4d76a: b087 cmpl %d7,%d0 <== NOT EXECUTED 4d76c: 66b8 bnes 4d726 <pipe_write+0xd8> <== NOT EXECUTED 4d76e: 60ca bras 4d73a <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;
4d770: 7801 moveq #1,%d4 <== NOT EXECUTED 4d772: 4285 clrl %d5 <== NOT EXECUTED 4d774: 4282 clrl %d2 <== NOT EXECUTED 4d776: 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))
4d77c: 4bf9 0004 effc lea 4effc <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);
4d782: 2c3c 0005 1ebc movel #335548,%d6 <== NOT EXECUTED 4d788: 6000 ff28 braw 4d6b2 <pipe_write+0x64> <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d78c: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED 4d790: 49f9 0004 8944 lea 48944 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
if (pipe->Readers == 0) {
ret = -EPIPE;
4d796: 7ee0 moveq #-32,%d7 <== NOT EXECUTED
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
int chunk, chunk1, written = 0, ret = 0;
4d798: 4282 clrl %d2 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d79a: 4e94 jsr %a4@ <== NOT EXECUTED 4d79c: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d79e: 70e0 moveq #-32,%d0 <== NOT EXECUTED 4d7a0: b087 cmpl %d7,%d0 <== NOT EXECUTED 4d7a2: 6682 bnes 4d726 <pipe_write+0xd8> <== NOT EXECUTED 4d7a4: 6094 bras 4d73a <pipe_write+0xec> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
}
chunk = MIN(count - written, PIPE_SPACE(pipe));
4d7a6: 2243 moveal %d3,%a1 <== NOT EXECUTED 4d7a8: 93c5 subal %d5,%a1 <== NOT EXECUTED 4d7aa: 2808 movel %a0,%d4 <== NOT EXECUTED 4d7ac: b3c8 cmpal %a0,%a1 <== NOT EXECUTED 4d7ae: 6402 bccs 4d7b2 <pipe_write+0x164> <== NOT EXECUTED 4d7b0: 2809 movel %a1,%d4 <== NOT EXECUTED
chunk1 = pipe->Size - PIPE_WSTART(pipe);
4d7b2: 2241 moveal %d1,%a1 <== NOT EXECUTED 4d7b4: d3ea 0008 addal %a2@(8),%a1 <== NOT EXECUTED 4d7b8: 2209 movel %a1,%d1 <== NOT EXECUTED 4d7ba: 4c40 1007 remul %d0,%d7,%d1 <== NOT EXECUTED 4d7be: 2200 movel %d0,%d1 <== NOT EXECUTED 4d7c0: 2047 moveal %d7,%a0 <== NOT EXECUTED 4d7c2: 9287 subl %d7,%d1 <== NOT EXECUTED
if (chunk > chunk1) {
4d7c4: b284 cmpl %d4,%d1 <== NOT EXECUTED 4d7c6: 6c00 0082 bgew 4d84a <pipe_write+0x1fc> <== NOT EXECUTED
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
4d7ca: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d7ce: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d7d0: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED 4d7d4: d1d2 addal %a2@,%a0 <== NOT EXECUTED 4d7d6: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED 4d7da: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d7dc: 2046 moveal %d6,%a0 <== NOT EXECUTED 4d7de: 4e90 jsr %a0@ <== NOT EXECUTED
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
4d7e0: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 4d7e4: 2004 movel %d4,%d0 <== NOT EXECUTED 4d7e6: 9081 subl %d1,%d0 <== NOT EXECUTED 4d7e8: da81 addl %d1,%d5 <== NOT EXECUTED 4d7ea: 2246 moveal %d6,%a1 <== NOT EXECUTED 4d7ec: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4d7f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d7f2: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED 4d7f6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4d7f8: 4e91 jsr %a1@ <== NOT EXECUTED 4d7fa: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
4d7fe: d9aa 000c addl %d4,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4d802: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 4d806: 6614 bnes 4d81c <pipe_write+0x1ce> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
written += chunk;
4d808: 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) {
4d80a: 2a02 movel %d2,%d5 <== NOT EXECUTED 4d80c: b483 cmpl %d3,%d2 <== NOT EXECUTED 4d80e: 6400 ff06 bccw 4d716 <pipe_write+0xc8> <== NOT EXECUTED 4d812: 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;
4d816: 7801 moveq #1,%d4 <== NOT EXECUTED 4d818: 6000 fe98 braw 4d6b2 <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);
4d81c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d820: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED 4d824: 4eb9 0004 ef84 jsr 4ef84 <rtems_barrier_release> <== NOT EXECUTED 4d82a: 508f addql #8,%sp <== NOT EXECUTED 4d82c: 60da bras 4d808 <pipe_write+0x1ba> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingWriters not restored! */
ret = -EINTR;
4d82e: 7efc moveq #-4,%d7 <== NOT EXECUTED 4d830: 6000 fef4 braw 4d726 <pipe_write+0xd8> <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d834: 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;
4d838: 7ef5 moveq #-11,%d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d83a: 4e94 jsr %a4@ <== NOT EXECUTED 4d83c: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d83e: 70e0 moveq #-32,%d0 <== NOT EXECUTED 4d840: b087 cmpl %d7,%d0 <== NOT EXECUTED 4d842: 6600 fee2 bnew 4d726 <pipe_write+0xd8> <== NOT EXECUTED 4d846: 6000 fef2 braw 4d73a <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);
4d84a: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d84e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d850: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED 4d854: d1d2 addal %a2@,%a0 <== NOT EXECUTED 4d856: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d858: 2046 moveal %d6,%a0 <== NOT EXECUTED 4d85a: 4e90 jsr %a0@ <== NOT EXECUTED 4d85c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Length += chunk;
4d860: d9aa 000c addl %d4,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4d864: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 4d868: 679e beqs 4d808 <pipe_write+0x1ba> <== NOT EXECUTED 4d86a: 60b0 bras 4d81c <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 5fe0 addql #1,65fe0 <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 f314 jsr 4f314 <__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
0004d218 <pthread_attr_init>:
#include <rtems/posix/pthread.h>
int pthread_attr_init(
pthread_attr_t *attr
)
{
4d218: 4e56 0000 linkw %fp,#0 4d21c: 202e 0008 movel %fp@(8),%d0
if ( !attr )
4d220: 671c beqs 4d23e <pthread_attr_init+0x26> <== NEVER TAKEN
return EINVAL;
*attr = _POSIX_Threads_Default_attributes;
4d222: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> 4d226: 4879 0005 e94e pea 5e94e <_POSIX_Threads_Default_attributes> 4d22c: 2f00 movel %d0,%sp@- 4d22e: 4eb9 0005 0220 jsr 50220 <memcpy>
return 0;
4d234: 4fef 000c lea %sp@(12),%sp 4d238: 4280 clrl %d0
}
4d23a: 4e5e unlk %fp 4d23c: 4e75 rts
int pthread_attr_init(
pthread_attr_t *attr
)
{
if ( !attr )
return EINVAL;
4d23e: 7016 moveq #22,%d0
*attr = _POSIX_Threads_Default_attributes;
return 0;
}
4d240: 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 4b190: 206e 0008 moveal %fp@(8),%a0 4b194: 202e 000c movel %fp@(12),%d0
if ( !attr || !attr->is_initialized )
4b198: 4a88 tstl %a0
4b19a: 670a beqs 4b1a6 <pthread_attr_setdetachstate+0x1a><== NEVER TAKEN
4b19c: 4a90 tstl %a0@
4b19e: 6706 beqs 4b1a6 <pthread_attr_setdetachstate+0x1a><== NEVER TAKEN
return EINVAL;
switch ( detachstate ) {
4b1a0: 7201 moveq #1,%d1 4b1a2: b280 cmpl %d0,%d1
4b1a4: 6406 bccs 4b1ac <pthread_attr_setdetachstate+0x20><== ALWAYS TAKEN
case PTHREAD_CREATE_JOINABLE:
attr->detachstate = detachstate;
return 0;
default:
return EINVAL;
4b1a6: 7016 moveq #22,%d0
} }
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)
return 0;
4b1b0: 4280 clrl %d0
default:
return EINVAL;
}
}
4b1b2: 4e5e unlk %fp
...
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
...
0004d244 <pthread_attr_setinheritsched>:
int pthread_attr_setinheritsched(
pthread_attr_t *attr,
int inheritsched
)
{
4d244: 4e56 0000 linkw %fp,#0 4d248: 206e 0008 moveal %fp@(8),%a0 4d24c: 222e 000c movel %fp@(12),%d1 4d250: 2f02 movel %d2,%sp@-
if ( !attr || !attr->is_initialized )
4d252: 4a88 tstl %a0
4d254: 6726 beqs 4d27c <pthread_attr_setinheritsched+0x38><== NEVER TAKEN
4d256: 4a90 tstl %a0@
4d258: 6722 beqs 4d27c <pthread_attr_setinheritsched+0x38><== NEVER TAKEN
return EINVAL;
switch ( inheritsched ) {
4d25a: 2241 moveal %d1,%a1 4d25c: 5389 subql #1,%a1
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
return 0;
default:
return ENOTSUP;
4d25e: 203c 0000 0086 movel #134,%d0
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( inheritsched ) {
4d264: 7401 moveq #1,%d2 4d266: b489 cmpl %a1,%d2
4d268: 6406 bccs 4d270 <pthread_attr_setinheritsched+0x2c><== ALWAYS TAKEN
return 0;
default:
return ENOTSUP;
}
}
4d26a: 241f movel %sp@+,%d2 <== NOT EXECUTED 4d26c: 4e5e unlk %fp <== NOT EXECUTED 4d26e: 4e75 rts <== NOT EXECUTED
4d270: 241f movel %sp@+,%d2
switch ( inheritsched ) {
case PTHREAD_INHERIT_SCHED:
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
return 0;
4d272: 4200 clrb %d0
default:
return ENOTSUP;
}
}
4d274: 4e5e unlk %fp
return EINVAL;
switch ( inheritsched ) {
case PTHREAD_INHERIT_SCHED:
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
4d276: 2141 0010 movel %d1,%a0@(16)
return 0;
default:
return ENOTSUP;
}
}
4d27a: 4e75 rts
4d27c: 241f movel %sp@+,%d2 <== NOT EXECUTED
pthread_attr_t *attr,
int inheritsched
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4d27e: 7016 moveq #22,%d0 <== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4d280: 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 7262 movel 67262 <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
...
0004d284 <pthread_attr_setstacksize>:
int pthread_attr_setstacksize(
pthread_attr_t *attr,
size_t stacksize
)
{
4d284: 4e56 0000 linkw %fp,#0 4d288: 206e 0008 moveal %fp@(8),%a0 4d28c: 222e 000c movel %fp@(12),%d1
if ( !attr || !attr->is_initialized )
4d290: 4a88 tstl %a0
4d292: 6724 beqs 4d2b8 <pthread_attr_setstacksize+0x34> <== NEVER TAKEN
4d294: 4a90 tstl %a0@
4d296: 6720 beqs 4d2b8 <pthread_attr_setstacksize+0x34> <== NEVER TAKEN
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
4d298: 2039 0005 f8d2 movel 5f8d2 <rtems_minimum_stack_size>,%d0 4d29e: d080 addl %d0,%d0 4d2a0: b280 cmpl %d0,%d1
4d2a2: 650a bcss 4d2ae <pthread_attr_setstacksize+0x2a>
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
return 0;
4d2a4: 4280 clrl %d0
}
4d2a6: 4e5e unlk %fp
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
4d2a8: 2141 0008 movel %d1,%a0@(8)
return 0; }
4d2ac: 4e75 rts
{
if ( !attr || !attr->is_initialized )
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
4d2ae: 2140 0008 movel %d0,%a0@(8)
else
attr->stacksize = stacksize;
return 0;
4d2b2: 4280 clrl %d0
}
4d2b4: 4e5e unlk %fp 4d2b6: 4e75 rts
pthread_attr_t *attr,
size_t stacksize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4d2b8: 7016 moveq #22,%d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
return 0;
}
4d2ba: 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 18be pea 618be <_POSIX_Barrier_Information> <== NOT EXECUTED 4681c: 4eb9 0004 915c jsr 4915c <_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 9c8e jsr 49c8e <_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 18be pea 618be <_POSIX_Barrier_Information> <== NOT EXECUTED 4684e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 46852: 4eb9 0004 8d2c jsr 48d2c <_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 18be pea 618be <_POSIX_Barrier_Information> <== NOT EXECUTED 46864: 4eb9 0004 8ff0 jsr 48ff0 <_Objects_Free> <== NOT EXECUTED
_POSIX_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4686a: 4eb9 0004 9c8e jsr 49c8e <_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 159c movel 6159c <_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 159c movel %d0,6159c <_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 18be pea 618be <_POSIX_Barrier_Information> <== NOT EXECUTED 468c6: 4eb9 0004 8c9c jsr 48c9c <_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 8234 jsr 48234 <_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 18d6 moveal 618d6 <_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 9c8e jsr 49c8e <_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 9c8e jsr 49c8e <_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 18be pea 618be <_POSIX_Barrier_Information> <== NOT EXECUTED 46960: 4eb9 0004 915c jsr 4915c <_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 8270 jsr 48270 <_CORE_barrier_Wait> <== NOT EXECUTED
the_barrier->Object.id,
true,
0,
NULL
);
_Thread_Enable_dispatch();
46988: 4eb9 0004 9c8e jsr 49c8e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4698e: 2079 0006 1a2a moveal 61a2a <_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 cc38 jsr 4cc38 <_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 0976 tstl 60976 <_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 06b2 pea 606b2 <_POSIX_Threads_Information> <== NOT EXECUTED 45ee8: 4eb9 0004 81c8 jsr 481c8 <_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 0102 moveal %a1@(258),%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 b9b0 jsr 4b9b0 <_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 0100 movel 60100 <_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 058e moveal 6058e <_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 0102 moveal %a0@(258),%a0 <== NOT EXECUTED 45d5a: 23c0 0006 0100 movel %d0,60100 <_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 bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
45d6c: 2008 movel %a0,%d0 <== NOT EXECUTED 45d6e: 0680 0000 00e8 addil #232,%d0 <== NOT EXECUTED
if ( _Chain_Is_empty( handler_stack ) ) {
45d74: b0a8 00e4 cmpl %a0@(228),%d0 <== NOT EXECUTED 45d78: 6748 beqs 45dc2 <pthread_cleanup_pop+0x86> <== NOT EXECUTED
_Thread_Enable_dispatch();
_ISR_Enable( level );
return;
}
handler = (POSIX_Cancel_Handler_control *)
45d7a: 2068 00ec moveal %a0@(236),%a0 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
45d7e: 2450 moveal %a0@,%a2 <== NOT EXECUTED
previous = the_node->previous;
45d80: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
next->previous = previous;
45d84: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous->next = next;
45d88: 228a movel %a2,%a1@ <== NOT EXECUTED
_Chain_Tail( handler_stack )->previous;
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
45d8a: 46c2 movew %d2,%sr <== NOT EXECUTED 45d8c: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED 45d90: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
tmp_handler = *handler;
_Workspace_Free( handler );
45d94: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45d96: 4eb9 0004 9bfa jsr 49bfa <_Workspace_Free> <== NOT EXECUTED
_Thread_Enable_dispatch();
45d9c: 4eb9 0004 89d6 jsr 489d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( execute )
45da2: 588f addql #4,%sp <== NOT EXECUTED 45da4: 4a83 tstl %d3 <== NOT EXECUTED 45da6: 660a bnes 45db2 <pthread_cleanup_pop+0x76> <== NOT EXECUTED
(*tmp_handler.routine)( tmp_handler.arg );
}
45da8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45dae: 4e5e unlk %fp <== NOT EXECUTED 45db0: 4e75 rts <== NOT EXECUTED
_Workspace_Free( handler );
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
45db2: 2244 moveal %d4,%a1 <== NOT EXECUTED 45db4: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
45db8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45dbe: 4e5e unlk %fp <== NOT EXECUTED
_Workspace_Free( handler );
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
45dc0: 4ed1 jmp %a1@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
if ( _Chain_Is_empty( handler_stack ) ) {
_Thread_Enable_dispatch();
45dc2: 4eb9 0004 89d6 jsr 489d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
_ISR_Enable( level );
45dc8: 46c2 movew %d2,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
}
45dca: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 45dd0: 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 0f12 movel 60f12 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 462d8: 5280 addql #1,%d0 <== NOT EXECUTED 462da: 23c0 0006 0f12 movel %d0,60f12 <_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 a9ba jsr 4a9ba <_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 13a0 moveal 613a0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
handler_stack = &thread_support->Cancellation_Handlers;
462f6: 2228 0102 movel %a0@(258),%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 7ce8 jsr 47ce8 <_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 970e jmp 4970e <_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 b2b0 jsr 4b2b0 <_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 ab5a jsr 4ab5a <_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 2b06 pea 62b06 <_POSIX_Condition_variables_Information><== NOT EXECUTED 470e4: 4eb9 0004 9bf8 jsr 49bf8 <_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 2b06 pea 62b06 <_POSIX_Condition_variables_Information><== NOT EXECUTED 470f2: 4eb9 0004 9ebc jsr 49ebc <_Objects_Free> <== NOT EXECUTED
&_POSIX_Condition_variables_Information,
&the_cond->Object
);
_POSIX_Condition_variables_Free( the_cond );
_Thread_Enable_dispatch();
470f8: 4eb9 0004 ab5a jsr 4ab5a <_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 47188: 2f0b movel %a3,%sp@- 4718a: 2f0a movel %a2,%sp@- 4718c: 246e 000c moveal %fp@(12),%a2
POSIX_Condition_variables_Control *the_cond;
const pthread_condattr_t *the_attr;
if ( attr ) the_attr = attr;
47190: 4a8a tstl %a2 47192: 6700 0092 beqw 47226 <pthread_cond_init+0xa2>
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 47198: b0aa 0004 cmpl %a2@(4),%d0
4719c: 6704 beqs 471a2 <pthread_cond_init+0x1e> <== NEVER TAKEN
return EINVAL;
if ( !the_attr->is_initialized )
4719e: 4a92 tstl %a2@
471a0: 660e bnes 471b0 <pthread_cond_init+0x2c> <== ALWAYS TAKEN
*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 2758 movel 62758 <_Thread_Dispatch_disable_level>,%d0 471b6: 5280 addql #1,%d0 471b8: 23c0 0006 2758 movel %d0,62758 <_Thread_Dispatch_disable_level>
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 2b06 pea 62b06 <_POSIX_Condition_variables_Information> 471c4: 4eb9 0004 9b68 jsr 49b68 <_Objects_Allocate>
_Thread_Disable_dispatch();
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
471ca: 588f addql #4,%sp 471cc: 2640 moveal %d0,%a3 471ce: 4a80 tstl %d0
471d0: 675e beqs 47230 <pthread_cond_init+0xac> <== NEVER TAKEN
_Thread_Enable_dispatch();
return ENOMEM;
}
the_cond->process_shared = the_attr->process_shared;
471d2: 276a 0004 0010 movel %a2@(4),%a3@(16)
the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
471d8: 42ab 0014 clrl %a3@(20)
_Thread_queue_Initialize(
471dc: 4878 0074 pea 74 <DBL_MANT_DIG+0x3f> 471e0: 2f3c 1000 0800 movel #268437504,%sp@- 471e6: 42a7 clrl %sp@- 471e8: 486b 0018 pea %a3@(24) 471ec: 4eb9 0004 b354 jsr 4b354 <_Thread_queue_Initialize>
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
471f2: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
471f6: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
471f8: 2079 0006 2b1e moveal 62b1e <_POSIX_Condition_variables_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
471fe: 3200 movew %d0,%d1
#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)
&_POSIX_Condition_variables_Information,
&the_cond->Object,
0
);
*cond = the_cond->Object.id;
47204: 206e 0008 moveal %fp@(8),%a0
_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) 4720c: 2080 movel %d0,%a0@
_Thread_Enable_dispatch();
4720e: 4eb9 0004 ab5a jsr 4ab5a <_Thread_Enable_dispatch>
return 0;
}
47214: 246e fff8 moveal %fp@(-8),%a2
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
47218: 4fef 0010 lea %sp@(16),%sp 4721c: 4280 clrl %d0
}
4721e: 266e fffc moveal %fp@(-4),%a3 47222: 4e5e unlk %fp 47224: 4e75 rts
{
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 ff1e lea 5ff1e <_POSIX_Condition_variables_Default_attributes>,%a2 4722c: 6000 ff68 braw 47196 <pthread_cond_init+0x12>
_Thread_Disable_dispatch();
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
_Thread_Enable_dispatch();
47230: 4eb9 0004 ab5a jsr 4ab5a <_Thread_Enable_dispatch>
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
47236: 246e fff8 moveal %fp@(-8),%a2
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 ff1e movel 5ff1e <_POSIX_Condition_variables_Default_attributes>,%d1<== NOT EXECUTED 4703a: 2439 0005 ff22 movel 5ff22 <_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 f8d2 movel 5f8d2 <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 e94e lea 5e94e <_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 d11c jsr 4d11c <_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 f8d6 moveb 5f8d6 <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 d140 jsr 4d140 <_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 1218 movel 61218 <_RTEMS_Allocator_Mutex>,%sp@- 46854: 4eb9 0004 8288 jsr 48288 <_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 131e pea 6131e <_POSIX_Threads_Information> 46860: 4eb9 0004 8d50 jsr 48d50 <_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 f8d2 movel 5f8d2 <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 131e pea 6131e <_POSIX_Threads_Information> 468ba: 2d48 ffca movel %a0,%fp@(-54) 468be: 4eb9 0004 9e00 jsr 49e00 <_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 131e pea 6131e <_POSIX_Threads_Information>
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
return EAGAIN;
468da: 740b moveq #11,%d2 468dc: 4eb9 0004 90a4 jsr 490a4 <_Objects_Free>
name /* posix threads don't have a name */
);
if ( !status ) {
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
468e2: 2f39 0006 1218 movel 61218 <_RTEMS_Allocator_Mutex>,%sp@- 468e8: 4eb9 0004 82e8 jsr 482e8 <_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 15e6 moveal 615e6 <_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 0102 movel %a0@(258),%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 0102 moveal %a0@(258),%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 0220 jsr 50220 <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 a7fc jsr 4a7fc <_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 1218 movel 61218 <_RTEMS_Allocator_Mutex>,%sp@- 469ec: 4eb9 0004 82e8 jsr 482e8 <_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 aa04 jsr 4aa04 <_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 1238 pea 61238 <_Watchdog_Ticks_chain> <== NOT EXECUTED 46a1c: 4eb9 0004 ad60 jsr 4ad60 <_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 1218 movel 61218 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46a38: 4eb9 0004 82e8 jsr 482e8 <_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 1218 movel 61218 <_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 82e8 jsr 482e8 <_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 1e1e pea 61e1e <_POSIX_Threads_Information> <== NOT EXECUTED 46786: 4eb9 0004 8d70 jsr 48d70 <_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 0102 moveal %a1@(258),%a0 <== NOT EXECUTED 4679c: 42a8 0040 clrl %a0@(64) <== NOT EXECUTED
_Thread_Enable_dispatch();
467a0: 4eb9 0004 98a2 jsr 498a2 <_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
...
0004e3f4 <pthread_exit>:
}
void pthread_exit(
void *value_ptr
)
{
4e3f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_Thread_Exit( _Thread_Executing, value_ptr );
4e3f8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4e3fc: 2f39 0006 0186 movel 60186 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4e402: 4eb9 0004 e384 jsr 4e384 <_POSIX_Thread_Exit> <== NOT EXECUTED 4e408: 508f addql #8,%sp <== NOT EXECUTED
}
4e40a: 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 f314 jsr 4f314 <__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 521e pea 6521e <_POSIX_Threads_Information> <== NOT EXECUTED 48c0a: 4eb9 0004 b28c jsr 4b28c <_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 0102 moveal %a0@(258),%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 3776 moveb 63776 <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 bdbe jsr 4bdbe <_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 202c pea 6202c <_POSIX_Keys_Information> <== NOT EXECUTED 46566: 4eb9 0004 8e54 jsr 48e54 <_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 2146 moveal 62146 <_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 9986 jsr 49986 <_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 8cfa pea 68cfa <_POSIX_Threads_Information> <== NOT EXECUTED 4b878: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4b87c: 4eb9 0004 decc jsr 4decc <_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 0102 moveal %a1@(258),%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 8fc2 moveal 68fc2 <_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 f29c pea 4f29c <_Thread_queue_Timeout> <== NOT EXECUTED 4b8c0: 42a7 clrl %sp@- <== NOT EXECUTED 4b8c2: 4868 0044 pea %a0@(68) <== NOT EXECUTED 4b8c6: 4eb9 0004 eed8 jsr 4eed8 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
4b8cc: 4eb9 0004 e9fe jsr 4e9fe <_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 e9fe jsr 4e9fe <_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 e9fe jsr 4e9fe <_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 1cb8 movel 61cb8 <_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 1cb8 movel %d0,61cb8 <_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 202c pea 6202c <_POSIX_Keys_Information> <== NOT EXECUTED 463e8: 4eb9 0004 8994 jsr 48994 <_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 1c78 lea 61c78 <_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 acc6 lea 4acc6 <_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 00ac movel #327852,%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 1c84 cmpal #400516,%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 2044 moveal 62044 <_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 9986 jsr 49986 <_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 9986 jsr 49986 <_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 202c pea 6202c <_POSIX_Keys_Information> <== NOT EXECUTED 46496: 4eb9 0004 8ce8 jsr 48ce8 <_Objects_Free> <== NOT EXECUTED
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
4649c: 4eb9 0004 9986 jsr 49986 <_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 202c pea 6202c <_POSIX_Keys_Information> <== NOT EXECUTED 464c8: 4eb9 0004 8e54 jsr 48e54 <_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 202c pea 6202c <_POSIX_Keys_Information> <== NOT EXECUTED 464e2: 4eb9 0004 8a24 jsr 48a24 <_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 202c pea 6202c <_POSIX_Keys_Information> <== NOT EXECUTED 464f8: 4eb9 0004 8ce8 jsr 48ce8 <_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 9986 jsr 49986 <_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
0005c59c <pthread_kill>:
int pthread_kill(
pthread_t thread,
int sig
)
{
5c59c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 5c5a0: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 5c5a4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
POSIX_API_Control *api;
Thread_Control *the_thread;
Objects_Locations location;
if ( !sig )
5c5a8: 6700 0098 beqw 5c642 <pthread_kill+0xa6> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
5c5ac: 2602 movel %d2,%d3 <== NOT EXECUTED 5c5ae: 5383 subql #1,%d3 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
5c5b0: 701f moveq #31,%d0 <== NOT EXECUTED 5c5b2: b083 cmpl %d3,%d0 <== NOT EXECUTED 5c5b4: 6500 008c bcsw 5c642 <pthread_kill+0xa6> <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
5c5b8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5c5bc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5c5c0: 4879 0005 febe pea 5febe <_POSIX_Threads_Information> <== NOT EXECUTED 5c5c6: 4eb9 0004 7de4 jsr 47de4 <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
5c5cc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c5d0: 2440 moveal %d0,%a2 <== NOT EXECUTED 5c5d2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5c5d6: 6600 0082 bnew 5c65a <pthread_kill+0xbe> <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( sig ) {
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {
5c5da: 2202 movel %d2,%d1 <== NOT EXECUTED 5c5dc: 2002 movel %d2,%d0 <== NOT EXECUTED 5c5de: e589 lsll #2,%d1 <== NOT EXECUTED 5c5e0: e988 lsll #4,%d0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* If sig == 0 then just validate arguments
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5c5e2: 206a 0102 moveal %a2@(258),%a0 <== NOT EXECUTED
if ( sig ) {
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {
5c5e6: 9081 subl %d1,%d0 <== NOT EXECUTED 5c5e8: 0680 0006 01c0 addil #393664,%d0 <== NOT EXECUTED 5c5ee: 7201 moveq #1,%d1 <== NOT EXECUTED 5c5f0: 2240 moveal %d0,%a1 <== NOT EXECUTED 5c5f2: b291 cmpl %a1@,%d1 <== NOT EXECUTED 5c5f4: 6728 beqs 5c61e <pthread_kill+0x82> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
5c5f6: 7001 moveq #1,%d0 <== NOT EXECUTED 5c5f8: e7a8 lsll %d3,%d0 <== NOT EXECUTED
return 0;
}
/* XXX critical section */
api->signals_pending |= signo_to_mask( sig );
5c5fa: 81a8 00d4 orl %d0,%a0@(212) <== NOT EXECUTED
(void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
5c5fe: 42a7 clrl %sp@- <== NOT EXECUTED 5c600: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c602: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5c604: 4eb9 0005 c460 jsr 5c460 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
5c60a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c60e: 4ab9 0006 0182 tstl 60182 <_Per_CPU_Information+0x8> <== NOT EXECUTED 5c614: 6708 beqs 5c61e <pthread_kill+0x82> <== NOT EXECUTED 5c616: b5f9 0006 0186 cmpal 60186 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 5c61c: 6712 beqs 5c630 <pthread_kill+0x94> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
_Thread_Enable_dispatch();
5c61e: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c624: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
}
5c626: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 5c62c: 4e5e unlk %fp <== NOT EXECUTED 5c62e: 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;
5c630: 7001 moveq #1,%d0 <== NOT EXECUTED 5c632: 13c0 0006 0192 moveb %d0,60192 <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
5c638: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c63e: 4280 clrl %d0 <== NOT EXECUTED 5c640: 60e4 bras 5c626 <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 );
5c642: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5c648: 7416 moveq #22,%d2 <== NOT EXECUTED 5c64a: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c64c: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c64e: 2082 movel %d2,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
}
5c650: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 5c656: 4e5e unlk %fp <== NOT EXECUTED 5c658: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
5c65a: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5c660: 7203 moveq #3,%d1 <== NOT EXECUTED 5c662: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c664: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
5c666: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
5c66c: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
5c66e: 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 bdbe jsr 4bdbe <_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 5340 pea 65340 <_POSIX_Mutex_Information> <== NOT EXECUTED 482a6: 4eb9 0004 ae5c jsr 4ae5c <_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 a39c jsr 4a39c <_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 5340 pea 65340 <_POSIX_Mutex_Information> <== NOT EXECUTED 482c4: 4eb9 0004 b120 jsr 4b120 <_Objects_Free> <== NOT EXECUTED
_POSIX_Mutex_Free( the_mutex );
_Thread_Enable_dispatch();
482ca: 4eb9 0004 bdbe jsr 4bdbe <_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 3776 moveb 63776 <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 bdbe jsr 4bdbe <_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 48428: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ 4842c: 266e 0008 moveal %fp@(8),%a3 48430: 246e 000c moveal %fp@(12),%a2
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 48436: 6700 00f6 beqw 4852e <pthread_mutex_init+0x10a>
else the_attr = &_POSIX_Mutex_Default_attributes;
/* Check for NULL mutex */
if ( !mutex )
4843a: 4a8b tstl %a3 4843c: 6700 00e4 beqw 48522 <pthread_mutex_init+0xfe>
}
}
}
#endif
if ( !the_attr->is_initialized )
48440: 4a92 tstl %a2@ 48442: 6700 00de beqw 48522 <pthread_mutex_init+0xfe>
return EINVAL;
/*
* We only support process private mutexes.
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
48446: 202a 0004 movel %a2@(4),%d0 4844a: 7201 moveq #1,%d1 4844c: b280 cmpl %d0,%d1 4844e: 6700 00ee beqw 4853e <pthread_mutex_init+0x11a>
return ENOSYS;
if ( the_attr->process_shared != PTHREAD_PROCESS_PRIVATE )
48452: 4a80 tstl %d0 48454: 6600 00cc bnew 48522 <pthread_mutex_init+0xfe>
return EINVAL;
/*
* Determine the discipline of the mutex
*/
switch ( the_attr->protocol ) {
48458: 202a 000c movel %a2@(12),%d0 4845c: b280 cmpl %d0,%d1 4845e: 6700 00ea beqw 4854a <pthread_mutex_init+0x126> 48462: 123c 0002 moveb #2,%d1 48466: b280 cmpl %d0,%d1 48468: 6700 00ce beqw 48538 <pthread_mutex_init+0x114> 4846c: 4a80 tstl %d0 4846e: 6600 00b2 bnew 48522 <pthread_mutex_init+0xfe>
case PTHREAD_PRIO_NONE:
the_discipline = CORE_MUTEX_DISCIPLINES_FIFO;
48472: 4282 clrl %d2
}
/*
* 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@- 48478: 4eb9 0004 8824 jsr 48824 <_POSIX_Priority_Is_valid> 4847e: 588f addql #4,%sp 48480: 4a00 tstb %d0 48482: 6700 009e beqw 48522 <pthread_mutex_init+0xfe>
#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 48488: b0aa 0010 cmpl %a2@(16),%d0 4848c: 6500 0094 bcsw 48522 <pthread_mutex_init+0xfe> 48490: 2039 0006 5058 movel 65058 <_Thread_Dispatch_disable_level>,%d0 48496: 5280 addql #1,%d0 48498: 23c0 0006 5058 movel %d0,65058 <_Thread_Dispatch_disable_level>
* _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 5340 pea 65340 <_POSIX_Mutex_Information> 484a4: 4eb9 0004 adcc jsr 4adcc <_Objects_Allocate>
*/
_Thread_Disable_dispatch();
the_mutex = _POSIX_Mutex_Allocate();
if ( !the_mutex ) {
484aa: 588f addql #4,%sp 484ac: 2840 moveal %d0,%a4 484ae: 4a80 tstl %d0 484b0: 6700 009e beqw 48550 <pthread_mutex_init+0x12c>
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) 484b8: 57c0 seq %d0
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)
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 484c2: 4480 negl %d0
else
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR;
the_mutex_attr->only_owner_release = true;
484c4: 7201 moveq #1,%d1
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)
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
484ca: 4280 clrl %d0
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) 484d0: 1039 0006 3776 moveb 63776 <rtems_maximum_priority>,%d0 484d6: 90aa 0008 subl %a2@(8),%d0
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) 484de: 2940 005e movel %d0,%a4@(94)
/*
* Must be initialized to unlocked.
*/
_CORE_mutex_Initialize(
484e2: 4878 0001 pea 1 <ADD> 484e6: 486c 0054 pea %a4@(84) 484ea: 486c 0014 pea %a4@(20) 484ee: 4eb9 0004 a3a8 jsr 4a3a8 <_CORE_mutex_Initialize>
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
484f4: 202c 0008 movel %a4@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
484f8: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
484fa: 2079 0006 5358 moveal 65358 <_POSIX_Mutex_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
48500: 3200 movew %d0,%d1
#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)
_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)
CORE_MUTEX_UNLOCKED
);
_Objects_Open_u32( &_POSIX_Mutex_Information, &the_mutex->Object, 0 );
*mutex = the_mutex->Object.id;
4850a: 2680 movel %d0,%a3@
_Thread_Enable_dispatch();
4850c: 4eb9 0004 bdbe jsr 4bdbe <_Thread_Enable_dispatch>
return 0;
48512: 4fef 000c lea %sp@(12),%sp 48516: 4280 clrl %d0
}
48518: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4851e: 4e5e unlk %fp 48520: 4e75 rts
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 53b4 lea 653b4 <_POSIX_Mutex_Default_attributes>,%a2 48534: 6000 ff04 braw 4843a <pthread_mutex_init+0x16>
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 bdbe jsr 4bdbe <_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 3776 moveb 63776 <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 3776 moveb 63776 <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 a5d4 jsr 4a5d4 <_CORE_mutex_Surrender> <== NOT EXECUTED
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
4866a: 4eb9 0004 bdbe jsr 4bdbe <_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 a5d4 jsr 4a5d4 <_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 bdbe jsr 4bdbe <_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 53b4 movel 653b4 <_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 53b8 movel 653b8 <_POSIX_Mutex_Default_attributes+0x4>,%a0@+<== NOT EXECUTED 481a0: 20f9 0006 53bc movel 653bc <_POSIX_Mutex_Default_attributes+0x8>,%a0@+<== NOT EXECUTED 481a6: 20f9 0006 53c0 movel 653c0 <_POSIX_Mutex_Default_attributes+0xc>,%a0@+<== NOT EXECUTED 481ac: 20f9 0006 53c4 movel 653c4 <_POSIX_Mutex_Default_attributes+0x10>,%a0@+<== NOT EXECUTED 481b2: 20b9 0006 53c8 movel 653c8 <_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 7bd0 lea 47bd0 <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
...
000474b4 <pthread_rwlock_destroy>:
*/
int pthread_rwlock_destroy(
pthread_rwlock_t *rwlock
)
{
474b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 474b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 474bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock = NULL;
Objects_Locations location;
if ( !rwlock )
474be: 4a88 tstl %a0 <== NOT EXECUTED 474c0: 673e beqs 47500 <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(
474c2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 474c6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 474c8: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 474ce: 4eb9 0004 a3ec jsr 4a3ec <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
474d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 474d8: 2440 moveal %d0,%a2 <== NOT EXECUTED 474da: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 474de: 6620 bnes 47500 <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 ) {
474e0: 486a 0010 pea %a2@(16) <== NOT EXECUTED 474e4: 4eb9 0004 b79c jsr 4b79c <_Thread_queue_First> <== NOT EXECUTED 474ea: 588f addql #4,%sp <== NOT EXECUTED 474ec: 4a80 tstl %d0 <== NOT EXECUTED 474ee: 671a beqs 4750a <pthread_rwlock_destroy+0x56> <== NOT EXECUTED
_Thread_Enable_dispatch();
474f0: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
474f6: 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;
474fa: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
474fc: 4e5e unlk %fp <== NOT EXECUTED 474fe: 4e75 rts <== NOT EXECUTED 47500: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47504: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47506: 4e5e unlk %fp <== NOT EXECUTED 47508: 4e75 rts <== NOT EXECUTED
/*
* POSIX doesn't require behavior when it is locked.
*/
_Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object );
4750a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4750c: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 47512: 4eb9 0004 9fbc jsr 49fbc <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free (
POSIX_RWLock_Control *the_RWLock
)
{
_Objects_Free( &_POSIX_RWLock_Information, &the_RWLock->Object );
47518: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4751a: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 47520: 4eb9 0004 a280 jsr 4a280 <_Objects_Free> <== NOT EXECUTED
_POSIX_RWLock_Free( the_rwlock );
_Thread_Enable_dispatch();
47526: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4752c: 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;
47530: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47534: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47536: 4e5e unlk %fp <== NOT EXECUTED
...
0004753c <pthread_rwlock_init>:
int pthread_rwlock_init(
pthread_rwlock_t *rwlock,
const pthread_rwlockattr_t *attr
)
{
4753c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 47540: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 47544: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 47548: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const pthread_rwlockattr_t *the_attr;
/*
* Error check parameters
*/
if ( !rwlock )
4754c: 4a8a tstl %a2 <== NOT EXECUTED 4754e: 6772 beqs 475c2 <pthread_rwlock_init+0x86> <== NOT EXECUTED
return EINVAL;
/*
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
47550: 4a82 tstl %d2 <== NOT EXECUTED 47552: 6700 008c beqw 475e0 <pthread_rwlock_init+0xa4> <== NOT EXECUTED 47556: 2042 moveal %d2,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
47558: 4a90 tstl %a0@ <== NOT EXECUTED 4755a: 6766 beqs 475c2 <pthread_rwlock_init+0x86> <== NOT EXECUTED
return EINVAL;
switch ( the_attr->process_shared ) {
4755c: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 47560: 6660 bnes 475c2 <pthread_rwlock_init+0x86> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
47562: 2039 0006 2e5c movel 62e5c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47568: 5280 addql #1,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes(
CORE_RWLock_Attributes *the_attributes
)
{
the_attributes->XXX = 0;
4756a: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 4756e: 23c0 0006 2e5c movel %d0,62e5c <_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 );
47574: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 4757a: 4eb9 0004 9f2c jsr 49f2c <_Objects_Allocate> <== NOT EXECUTED
*/
_Thread_Disable_dispatch(); /* prevents deletion */
the_rwlock = _POSIX_RWLock_Allocate();
if ( !the_rwlock ) {
47580: 588f addql #4,%sp <== NOT EXECUTED 47582: 2640 moveal %d0,%a3 <== NOT EXECUTED 47584: 4a80 tstl %d0 <== NOT EXECUTED 47586: 6746 beqs 475ce <pthread_rwlock_init+0x92> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EAGAIN;
}
_CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes );
47588: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4758c: 486b 0010 pea %a3@(16) <== NOT EXECUTED 47590: 4eb9 0004 960c jsr 4960c <_CORE_RWLock_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
47596: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
4759a: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4759c: 2079 0006 3000 moveal 63000 <_POSIX_RWLock_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
475a2: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
475a4: 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;
475a8: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
&_POSIX_RWLock_Information,
&the_rwlock->Object,
0
);
*rwlock = the_rwlock->Object.id;
475ac: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
475ae: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
475b4: 508f addql #8,%sp <== NOT EXECUTED 475b6: 4280 clrl %d0 <== NOT EXECUTED
}
475b8: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 475be: 4e5e unlk %fp <== NOT EXECUTED 475c0: 4e75 rts <== NOT EXECUTED
switch ( the_attr->process_shared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
475c2: 7016 moveq #22,%d0 <== NOT EXECUTED
*rwlock = the_rwlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
475c4: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 475ca: 4e5e unlk %fp <== NOT EXECUTED 475cc: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_rwlock = _POSIX_RWLock_Allocate();
if ( !the_rwlock ) {
_Thread_Enable_dispatch();
475ce: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
475d4: 700b moveq #11,%d0 <== NOT EXECUTED
*rwlock = the_rwlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
475d6: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 475dc: 4e5e unlk %fp <== NOT EXECUTED 475de: 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 );
475e0: 240e movel %fp,%d2 <== NOT EXECUTED 475e2: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED 475e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 475ea: 4eb9 0004 8088 jsr 48088 <pthread_rwlockattr_init> <== NOT EXECUTED 475f0: 588f addql #4,%sp <== NOT EXECUTED
the_attr = &default_attr;
475f2: 2042 moveal %d2,%a0 <== NOT EXECUTED 475f4: 6000 ff62 braw 47558 <pthread_rwlock_init+0x1c> <== NOT EXECUTED
000475f8 <pthread_rwlock_rdlock>:
*/
int pthread_rwlock_rdlock(
pthread_rwlock_t *rwlock
)
{
475f8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 475fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475fe: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
47602: 4a8a tstl %a2 <== NOT EXECUTED 47604: 6754 beqs 4765a <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(
47606: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4760a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4760c: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 47612: 4eb9 0004 a3ec jsr 4a3ec <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47618: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4761c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47620: 6638 bnes 4765a <pthread_rwlock_rdlock+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
47622: 42a7 clrl %sp@- <== NOT EXECUTED 47624: 2040 moveal %d0,%a0 <== NOT EXECUTED 47626: 42a7 clrl %sp@- <== NOT EXECUTED 47628: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4762c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4762e: 4868 0010 pea %a0@(16) <== NOT EXECUTED 47632: 4eb9 0004 9640 jsr 49640 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
true, /* we are willing to wait forever */
0,
NULL
);
_Thread_Enable_dispatch();
47638: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
4763e: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47644: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 47648: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4764e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47652: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47656: 4e5e unlk %fp <== NOT EXECUTED 47658: 4e75 rts <== NOT EXECUTED 4765a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4765e: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47660: 4e5e unlk %fp <== NOT EXECUTED
00047664 <pthread_rwlock_timedrdlock>:
int pthread_rwlock_timedrdlock(
pthread_rwlock_t *rwlock,
const struct timespec *abstime
)
{
47664: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47668: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4766c: 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 )
47670: 4a8a tstl %a2 <== NOT EXECUTED 47672: 6700 0082 beqw 476f6 <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 );
47676: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4767a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4767e: 4eb9 0004 e0a0 jsr 4e0a0 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED 47684: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47688: 2400 movel %d0,%d2 <== NOT EXECUTED 4768a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4768c: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 47692: 4eb9 0004 a3ec jsr 4a3ec <_Objects_Get> <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47698: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4769c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 476a0: 6654 bnes 476f6 <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,
476a2: 7203 moveq #3,%d1 <== NOT EXECUTED 476a4: b282 cmpl %d2,%d1 <== NOT EXECUTED 476a6: 57c3 seq %d3 <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
476a8: 42a7 clrl %sp@- <== NOT EXECUTED 476aa: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 476ae: 4483 negl %d3 <== NOT EXECUTED 476b0: 4281 clrl %d1 <== NOT EXECUTED 476b2: 1203 moveb %d3,%d1 <== NOT EXECUTED 476b4: 2040 moveal %d0,%a0 <== NOT EXECUTED 476b6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 476b8: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 476ba: 4868 0010 pea %a0@(16) <== NOT EXECUTED 476be: 4eb9 0004 9640 jsr 49640 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
do_wait,
ticks,
NULL
);
_Thread_Enable_dispatch();
476c4: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !do_wait ) {
476ca: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 476ce: 4a03 tstb %d3 <== NOT EXECUTED 476d0: 664a bnes 4771c <pthread_rwlock_timedrdlock+0xb8><== NOT EXECUTED
if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
476d2: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 476d8: 7202 moveq #2,%d1 <== NOT EXECUTED 476da: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED 476de: b280 cmpl %d0,%d1 <== NOT EXECUTED 476e0: 6720 beqs 47702 <pthread_rwlock_timedrdlock+0x9e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
476e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 476e4: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 476ea: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
476ec: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 476f2: 4e5e unlk %fp <== NOT EXECUTED 476f4: 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;
476f6: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
476f8: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 476fe: 4e5e unlk %fp <== NOT EXECUTED 47700: 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 )
47702: 4a82 tstl %d2 <== NOT EXECUTED 47704: 67f0 beqs 476f6 <pthread_rwlock_timedrdlock+0x92><== NOT EXECUTED
return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
47706: 5382 subql #1,%d2 <== NOT EXECUTED 47708: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 4770c: b282 cmpl %d2,%d1 <== NOT EXECUTED 4770e: 65d2 bcss 476e2 <pthread_rwlock_timedrdlock+0x7e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT;
47710: 7074 moveq #116,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47712: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 47718: 4e5e unlk %fp <== NOT EXECUTED 4771a: 4e75 rts <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait ) {
4771c: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47722: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47726: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47728: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 4772e: 588f addql #4,%sp <== NOT EXECUTED 47730: 60ba bras 476ec <pthread_rwlock_timedrdlock+0x88><== NOT EXECUTED
...
00047734 <pthread_rwlock_timedwrlock>:
int pthread_rwlock_timedwrlock(
pthread_rwlock_t *rwlock,
const struct timespec *abstime
)
{
47734: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47738: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4773c: 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 )
47740: 4a8a tstl %a2 <== NOT EXECUTED 47742: 6700 0082 beqw 477c6 <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 );
47746: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4774a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4774e: 4eb9 0004 e0a0 jsr 4e0a0 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED 47754: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47758: 2400 movel %d0,%d2 <== NOT EXECUTED 4775a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4775c: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 47762: 4eb9 0004 a3ec jsr 4a3ec <_Objects_Get> <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47768: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4776c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47770: 6654 bnes 477c6 <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,
47772: 7203 moveq #3,%d1 <== NOT EXECUTED 47774: b282 cmpl %d2,%d1 <== NOT EXECUTED 47776: 57c3 seq %d3 <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
47778: 42a7 clrl %sp@- <== NOT EXECUTED 4777a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 4777e: 4483 negl %d3 <== NOT EXECUTED 47780: 4281 clrl %d1 <== NOT EXECUTED 47782: 1203 moveb %d3,%d1 <== NOT EXECUTED 47784: 2040 moveal %d0,%a0 <== NOT EXECUTED 47786: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47788: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4778a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4778e: 4eb9 0004 9700 jsr 49700 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
do_wait,
ticks,
NULL
);
_Thread_Enable_dispatch();
47794: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !do_wait &&
4779a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4779e: 4a03 tstb %d3 <== NOT EXECUTED 477a0: 664a bnes 477ec <pthread_rwlock_timedwrlock+0xb8><== NOT EXECUTED
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
477a2: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
477a8: 7202 moveq #2,%d1 <== NOT EXECUTED
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
477aa: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
477ae: b280 cmpl %d0,%d1 <== NOT EXECUTED 477b0: 6720 beqs 477d2 <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(
477b2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 477b4: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 477ba: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
477bc: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 477c2: 4e5e unlk %fp <== NOT EXECUTED 477c4: 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;
477c6: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
477c8: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 477ce: 4e5e unlk %fp <== NOT EXECUTED 477d0: 4e75 rts <== NOT EXECUTED
);
_Thread_Enable_dispatch();
if ( !do_wait &&
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
477d2: 4a82 tstl %d2 <== NOT EXECUTED 477d4: 67f0 beqs 477c6 <pthread_rwlock_timedwrlock+0x92><== NOT EXECUTED
return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
477d6: 5382 subql #1,%d2 <== NOT EXECUTED 477d8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 477dc: b282 cmpl %d2,%d1 <== NOT EXECUTED 477de: 65d2 bcss 477b2 <pthread_rwlock_timedwrlock+0x7e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT;
477e0: 7074 moveq #116,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
477e2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 477e8: 4e5e unlk %fp <== NOT EXECUTED 477ea: 4e75 rts <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
477ec: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 477f2: 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(
477f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 477f8: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 477fe: 588f addql #4,%sp <== NOT EXECUTED 47800: 60ba bras 477bc <pthread_rwlock_timedwrlock+0x88><== NOT EXECUTED
...
0004781c <pthread_rwlock_tryrdlock>:
*/
int pthread_rwlock_tryrdlock(
pthread_rwlock_t *rwlock
)
{
4781c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47820: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47822: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
47826: 4a8a tstl %a2 <== NOT EXECUTED 47828: 6752 beqs 4787c <pthread_rwlock_tryrdlock+0x60> <== NOT EXECUTED 4782a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4782e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47830: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 47836: 4eb9 0004 a3ec jsr 4a3ec <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
4783c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47840: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47844: 6636 bnes 4787c <pthread_rwlock_tryrdlock+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
47846: 42a7 clrl %sp@- <== NOT EXECUTED 47848: 2040 moveal %d0,%a0 <== NOT EXECUTED 4784a: 42a7 clrl %sp@- <== NOT EXECUTED 4784c: 42a7 clrl %sp@- <== NOT EXECUTED 4784e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47850: 4868 0010 pea %a0@(16) <== NOT EXECUTED 47854: 4eb9 0004 9640 jsr 49640 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
4785a: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
47860: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47866: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4786a: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47870: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47874: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47878: 4e5e unlk %fp <== NOT EXECUTED 4787a: 4e75 rts <== NOT EXECUTED 4787c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47880: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47882: 4e5e unlk %fp <== NOT EXECUTED
...
00047888 <pthread_rwlock_trywrlock>:
*/
int pthread_rwlock_trywrlock(
pthread_rwlock_t *rwlock
)
{
47888: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4788c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4788e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
47892: 4a8a tstl %a2 <== NOT EXECUTED 47894: 6752 beqs 478e8 <pthread_rwlock_trywrlock+0x60> <== NOT EXECUTED 47896: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4789a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4789c: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 478a2: 4eb9 0004 a3ec jsr 4a3ec <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
478a8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 478ac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 478b0: 6636 bnes 478e8 <pthread_rwlock_trywrlock+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
478b2: 42a7 clrl %sp@- <== NOT EXECUTED 478b4: 2040 moveal %d0,%a0 <== NOT EXECUTED 478b6: 42a7 clrl %sp@- <== NOT EXECUTED 478b8: 42a7 clrl %sp@- <== NOT EXECUTED 478ba: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 478bc: 4868 0010 pea %a0@(16) <== NOT EXECUTED 478c0: 4eb9 0004 9700 jsr 49700 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
false, /* we are not willing to wait */
0,
NULL
);
_Thread_Enable_dispatch();
478c6: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
478cc: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
478d2: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 478d6: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
478dc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
478e0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
478e4: 4e5e unlk %fp <== NOT EXECUTED 478e6: 4e75 rts <== NOT EXECUTED 478e8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
478ec: 7016 moveq #22,%d0 <== NOT EXECUTED
}
478ee: 4e5e unlk %fp <== NOT EXECUTED
...
000478f4 <pthread_rwlock_unlock>:
*/
int pthread_rwlock_unlock(
pthread_rwlock_t *rwlock
)
{
478f4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 478f8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 478fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
CORE_RWLock_Status status;
if ( !rwlock )
478fe: 4a88 tstl %a0 <== NOT EXECUTED 47900: 6742 beqs 47944 <pthread_rwlock_unlock+0x50> <== NOT EXECUTED 47902: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47906: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 47908: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 4790e: 4eb9 0004 a3ec jsr 4a3ec <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47914: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47918: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4791c: 6626 bnes 47944 <pthread_rwlock_unlock+0x50> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_RWLock_Release( &the_rwlock->RWLock );
4791e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47920: 4868 0010 pea %a0@(16) <== NOT EXECUTED 47924: 4eb9 0004 9790 jsr 49790 <_CORE_RWLock_Release> <== NOT EXECUTED 4792a: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
4792c: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code( status );
47932: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47934: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4793a: 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 );
4793e: 508f addql #8,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47940: 4e5e unlk %fp <== NOT EXECUTED 47942: 4e75 rts <== NOT EXECUTED 47944: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47948: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4794a: 4e5e unlk %fp <== NOT EXECUTED
...
00047950 <pthread_rwlock_wrlock>:
*/
int pthread_rwlock_wrlock(
pthread_rwlock_t *rwlock
)
{
47950: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47954: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47956: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
4795a: 4a8a tstl %a2 <== NOT EXECUTED 4795c: 6754 beqs 479b2 <pthread_rwlock_wrlock+0x62> <== NOT EXECUTED 4795e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47962: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47964: 4879 0006 2fe8 pea 62fe8 <_POSIX_RWLock_Information> <== NOT EXECUTED 4796a: 4eb9 0004 a3ec jsr 4a3ec <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47970: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47974: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47978: 6638 bnes 479b2 <pthread_rwlock_wrlock+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
4797a: 42a7 clrl %sp@- <== NOT EXECUTED 4797c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4797e: 42a7 clrl %sp@- <== NOT EXECUTED 47980: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 47984: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47986: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4798a: 4eb9 0004 9700 jsr 49700 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
true, /* do not timeout -- wait forever */
0,
NULL
);
_Thread_Enable_dispatch();
47990: 4eb9 0004 af1e jsr 4af1e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
47996: 2079 0006 32ea moveal 632ea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
4799c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 479a0: 4eb9 0004 7804 jsr 47804 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
479a6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
479aa: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
479ae: 4e5e unlk %fp <== NOT EXECUTED 479b0: 4e75 rts <== NOT EXECUTED 479b2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
479b6: 7016 moveq #22,%d0 <== NOT EXECUTED
}
479b8: 4e5e unlk %fp <== NOT EXECUTED
00048044 <pthread_rwlockattr_destroy>:
*/
int pthread_rwlockattr_destroy(
pthread_rwlockattr_t *attr
)
{
48044: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48048: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
4804c: 4a88 tstl %a0 <== NOT EXECUTED 4804e: 670c beqs 4805c <pthread_rwlockattr_destroy+0x18><== NOT EXECUTED 48050: 4a90 tstl %a0@ <== NOT EXECUTED 48052: 6708 beqs 4805c <pthread_rwlockattr_destroy+0x18><== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
48054: 4280 clrl %d0 <== NOT EXECUTED
}
48056: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
attr->is_initialized = false;
48058: 4290 clrl %a0@ <== NOT EXECUTED
return 0; }
4805a: 4e75 rts <== NOT EXECUTED
int pthread_rwlockattr_destroy(
pthread_rwlockattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
4805c: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
4805e: 4e5e unlk %fp <== NOT EXECUTED
...
00048064 <pthread_rwlockattr_getpshared>:
int pthread_rwlockattr_getpshared(
const pthread_rwlockattr_t *attr,
int *pshared
)
{
48064: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48068: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
4806c: 4a88 tstl %a0 <== NOT EXECUTED 4806e: 6712 beqs 48082 <pthread_rwlockattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
48070: 4a90 tstl %a0@ <== NOT EXECUTED 48072: 670e beqs 48082 <pthread_rwlockattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
48074: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
48078: 4280 clrl %d0 <== NOT EXECUTED
}
4807a: 4e5e unlk %fp <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
*pshared = attr->process_shared;
4807c: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0; }
48080: 4e75 rts <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
48082: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
48084: 4e5e unlk %fp <== NOT EXECUTED
00048088 <pthread_rwlockattr_init>:
*/
int pthread_rwlockattr_init(
pthread_rwlockattr_t *attr
)
{
48088: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4808c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
48090: 4a88 tstl %a0 <== NOT EXECUTED 48092: 670e beqs 480a2 <pthread_rwlockattr_init+0x1a> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = true;
48094: 7001 moveq #1,%d0 <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; }
48096: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
48098: 2080 movel %d0,%a0@ <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0;
4809a: 4280 clrl %d0 <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
4809c: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
return 0; }
480a0: 4e75 rts <== NOT EXECUTED
int pthread_rwlockattr_init(
pthread_rwlockattr_t *attr
)
{
if ( !attr )
return EINVAL;
480a2: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
480a4: 4e5e unlk %fp <== NOT EXECUTED
000480a8 <pthread_rwlockattr_setpshared>:
int pthread_rwlockattr_setpshared(
pthread_rwlockattr_t *attr,
int pshared
)
{
480a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 480ac: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 480b0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
480b4: 4a88 tstl %a0 <== NOT EXECUTED 480b6: 670a beqs 480c2 <pthread_rwlockattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
480b8: 4a90 tstl %a0@ <== NOT EXECUTED 480ba: 6706 beqs 480c2 <pthread_rwlockattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
480bc: 7201 moveq #1,%d1 <== NOT EXECUTED 480be: b280 cmpl %d0,%d1 <== NOT EXECUTED 480c0: 6406 bccs 480c8 <pthread_rwlockattr_setpshared+0x20><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
480c2: 7016 moveq #22,%d0 <== NOT EXECUTED
} }
480c4: 4e5e unlk %fp <== NOT EXECUTED 480c6: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
480c8: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
480cc: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
480ce: 4e5e unlk %fp <== NOT EXECUTED
...
0005c674 <pthread_self>:
#include <rtems/system.h>
#include <rtems/score/thread.h>
pthread_t pthread_self( void )
{
5c674: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Thread_Executing->Object.id;
5c678: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
}
5c67e: 4e5e unlk %fp <== NOT EXECUTED 5c680: 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 0976 tstl 60976 <_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 097a moveal 6097a <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45fec: 2239 0006 04ec movel 604ec <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 45ff2: 5281 addql #1,%d1 <== NOT EXECUTED 45ff4: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED 45ff8: 23c1 0006 04ec movel %d1,604ec <_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 097a movel 6097a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4600c: 4eb9 0004 b9b0 jsr 4b9b0 <_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 0976 tstl 60976 <_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 097a moveal 6097a <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4604c: 2239 0006 04ec movel 604ec <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 46052: 5281 addql #1,%d1 <== NOT EXECUTED 46054: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED 46058: 23c1 0006 04ec movel %d1,604ec <_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 097a movel 6097a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4606c: 4eb9 0004 b9b0 jsr 4b9b0 <_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 f250 jsr 4f250 <_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 521e pea 6521e <_POSIX_Threads_Information> <== NOT EXECUTED 490d4: 4eb9 0004 b28c jsr 4b28c <_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 0102 moveal %a2@(258),%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 3776 moveb 63776 <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 5010 lea 65010 <_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 b8c8 jsr 4b8c8 <_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 bdbe jsr 4bdbe <_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 cfdc jsr 4cfdc <_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 bdbe jsr 4bdbe <_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 cfdc jsr 4cfdc <_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 202c pea 6202c <_POSIX_Keys_Information> <== NOT EXECUTED 465da: 4eb9 0004 8e54 jsr 48e54 <_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 2146 moveal 62146 <_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 9986 jsr 49986 <_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
...
0004d36c <pthread_sigmask>:
int pthread_sigmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
4d36c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4d370: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4d374: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d376: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4d37a: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
POSIX_API_Control *api;
if ( !set && !oset )
4d37e: 4a89 tstl %a1 <== NOT EXECUTED 4d380: 6700 0084 beqw 4d406 <pthread_sigmask+0x9a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4d384: 2079 0006 21d6 moveal 621d6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4d38a: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
if ( oset )
4d38e: 4a8a tstl %a2 <== NOT EXECUTED 4d390: 6708 beqs 4d39a <pthread_sigmask+0x2e> <== NOT EXECUTED
*oset = api->signals_blocked;
4d392: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED
if ( !set )
4d396: 4a89 tstl %a1 <== NOT EXECUTED 4d398: 673a beqs 4d3d4 <pthread_sigmask+0x68> <== NOT EXECUTED
return 0;
switch ( how ) {
4d39a: 7201 moveq #1,%d1 <== NOT EXECUTED 4d39c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d39e: 675e beqs 4d3fe <pthread_sigmask+0x92> <== NOT EXECUTED 4d3a0: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4d3a4: b280 cmpl %d0,%d1 <== NOT EXECUTED 4d3a6: 6736 beqs 4d3de <pthread_sigmask+0x72> <== NOT EXECUTED 4d3a8: 4a80 tstl %d0 <== NOT EXECUTED 4d3aa: 663c bnes 4d3e8 <pthread_sigmask+0x7c> <== NOT EXECUTED
break;
case SIG_UNBLOCK:
api->signals_blocked &= ~*set;
break;
case SIG_SETMASK:
api->signals_blocked = *set;
4d3ac: 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) ) {
4d3b0: 2039 0006 23fc movel 623fc <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
4d3b6: 2228 00d0 movel %a0@(208),%d1 <== NOT EXECUTED 4d3ba: 4681 notl %d1 <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
4d3bc: 80a8 00d4 orl %a0@(212),%d0 <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
4d3c0: c081 andl %d1,%d0 <== NOT EXECUTED 4d3c2: 6710 beqs 4d3d4 <pthread_sigmask+0x68> <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
4d3c4: 4eb9 0004 9994 jsr 49994 <_Thread_Dispatch> <== NOT EXECUTED
}
return 0;
}
4d3ca: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( ~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
4d3ce: 4280 clrl %d0 <== NOT EXECUTED
}
4d3d0: 4e5e unlk %fp <== NOT EXECUTED 4d3d2: 4e75 rts <== NOT EXECUTED 4d3d4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( ~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
4d3d8: 4280 clrl %d0 <== NOT EXECUTED
}
4d3da: 4e5e unlk %fp <== NOT EXECUTED 4d3dc: 4e75 rts <== NOT EXECUTED
switch ( how ) {
case SIG_BLOCK:
api->signals_blocked |= *set;
break;
case SIG_UNBLOCK:
api->signals_blocked &= ~*set;
4d3de: 2011 movel %a1@,%d0 <== NOT EXECUTED 4d3e0: 4680 notl %d0 <== NOT EXECUTED 4d3e2: c1a8 00d0 andl %d0,%a0@(208) <== NOT EXECUTED
break;
4d3e6: 60c8 bras 4d3b0 <pthread_sigmask+0x44> <== NOT EXECUTED
case SIG_SETMASK:
api->signals_blocked = *set;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4d3e8: 4eb9 0004 fbe8 jsr 4fbe8 <__errno> <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d3ee: 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 );
4d3f2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d3f4: 7216 moveq #22,%d1 <== NOT EXECUTED 4d3f6: 70ff moveq #-1,%d0 <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d3f8: 4e5e unlk %fp <== NOT EXECUTED
break;
case SIG_SETMASK:
api->signals_blocked = *set;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4d3fa: 2081 movel %d1,%a0@ <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d3fc: 4e75 rts <== NOT EXECUTED
if ( !set )
return 0;
switch ( how ) {
case SIG_BLOCK:
api->signals_blocked |= *set;
4d3fe: 2011 movel %a1@,%d0 <== NOT EXECUTED 4d400: 81a8 00d0 orl %d0,%a0@(208) <== NOT EXECUTED
break;
4d404: 60aa bras 4d3b0 <pthread_sigmask+0x44> <== NOT EXECUTED
sigset_t *oset
)
{
POSIX_API_Control *api;
if ( !set && !oset )
4d406: 4a8a tstl %a2 <== NOT EXECUTED 4d408: 67de beqs 4d3e8 <pthread_sigmask+0x7c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4d40a: 2079 0006 21d6 moveal 621d6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4d410: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
if ( oset )
*oset = api->signals_blocked;
4d414: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED
if ( !set )
4d418: 4a89 tstl %a1 <== NOT EXECUTED 4d41a: 6600 ff7e bnew 4d39a <pthread_sigmask+0x2e> <== NOT EXECUTED 4d41e: 60b4 bras 4d3d4 <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 1088 pea 61088 <_POSIX_Spinlock_Information> <== NOT EXECUTED 465cc: 4eb9 0004 898c jsr 4898c <_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 94be jsr 494be <_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 1088 pea 61088 <_POSIX_Spinlock_Information> <== NOT EXECUTED 465fe: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 46602: 4eb9 0004 855c jsr 4855c <_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 1088 pea 61088 <_POSIX_Spinlock_Information> <== NOT EXECUTED 46614: 4eb9 0004 8820 jsr 48820 <_Objects_Free> <== NOT EXECUTED
_POSIX_Spinlock_Free( the_spinlock );
_Thread_Enable_dispatch();
4661a: 4eb9 0004 94be jsr 494be <_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 0e88 movel 60e88 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46648: 5280 addql #1,%d0 <== NOT EXECUTED 4664a: 23c0 0006 0e88 movel %d0,60e88 <_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 1088 pea 61088 <_POSIX_Spinlock_Information> <== NOT EXECUTED 46656: 4eb9 0004 84cc jsr 484cc <_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 7dd8 jsr 47dd8 <_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 10a0 moveal 610a0 <_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 94be jsr 494be <_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 94be jsr 494be <_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 1088 pea 61088 <_POSIX_Spinlock_Information> <== NOT EXECUTED 466de: 4eb9 0004 898c jsr 4898c <_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 7e50 jsr 47e50 <_CORE_spinlock_Wait> <== NOT EXECUTED 46700: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
46702: 4eb9 0004 94be jsr 494be <_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 1088 pea 61088 <_POSIX_Spinlock_Information> <== NOT EXECUTED 4675a: 4eb9 0004 898c jsr 4898c <_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 7e50 jsr 47e50 <_CORE_spinlock_Wait> <== NOT EXECUTED 4677a: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
4677c: 4eb9 0004 94be jsr 494be <_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 1088 pea 61088 <_POSIX_Spinlock_Information> <== NOT EXECUTED 467ba: 4eb9 0004 898c jsr 4898c <_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 7df8 jsr 47df8 <_CORE_spinlock_Release> <== NOT EXECUTED 467d6: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
467d8: 4eb9 0004 94be jsr 494be <_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 139c tstl 6139c <_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 13a0 moveal 613a0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 46bca: 2039 0006 0f12 movel 60f12 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46bd0: 5280 addql #1,%d0 <== NOT EXECUTED 46bd2: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED 46bd6: 23c0 0006 0f12 movel %d0,60f12 <_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 970e jsr 4970e <_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 13a0 movel 613a0 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 46bf8: 4eb9 0004 cc98 jsr 4cc98 <_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 970e jmp 4970e <_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;
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;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
43da0: 49c0 extbl %d0 <== NOT EXECUTED 43da2: 2079 0005 e780 moveal 5e780 <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;
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;
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;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
BSP_output_char('\n');
43dbe: 2279 0005 e780 moveal 5e780 <BSP_output_char>,%a1 <== NOT EXECUTED 43dc4: 4ed1 jmp %a1@ <== NOT EXECUTED
...
0005be98 <read>:
ssize_t read(
int fd,
void *buffer,
size_t count
)
{
5be98: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 5be9c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5bea0: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 5bea4: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 5bea8: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5beac: b0b9 0005 e394 cmpl 5e394 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED 5beb2: 646a bccs 5bf1e <read+0x86> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
5beb4: 2400 movel %d0,%d2 <== NOT EXECUTED 5beb6: ed88 lsll #6,%d0 <== NOT EXECUTED 5beb8: e78a lsll #3,%d2 <== NOT EXECUTED 5beba: 2479 0005 fba4 moveal 5fba4 <rtems_libio_iops>,%a2 <== NOT EXECUTED 5bec0: 9082 subl %d2,%d0 <== NOT EXECUTED 5bec2: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
5bec4: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED 5bec8: 0800 0008 btst #8,%d0 <== NOT EXECUTED 5becc: 6750 beqs 5bf1e <read+0x86> <== NOT EXECUTED
rtems_libio_check_buffer( buffer );
5bece: 4a81 tstl %d1 <== NOT EXECUTED 5bed0: 6764 beqs 5bf36 <read+0x9e> <== NOT EXECUTED
rtems_libio_check_count( count );
5bed2: 4a88 tstl %a0 <== NOT EXECUTED 5bed4: 673c beqs 5bf12 <read+0x7a> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
5bed6: 0800 0001 btst #1,%d0 <== NOT EXECUTED 5beda: 675a beqs 5bf36 <read+0x9e> <== NOT EXECUTED
/*
* Now process the read().
*/
rc = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
5bedc: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED 5bee0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5bee2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 5bee4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5bee6: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED 5beea: 4e90 jsr %a0@ <== NOT EXECUTED
if ( rc > 0 )
5beec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5bef0: 4a80 tstl %d0 <== NOT EXECUTED 5bef2: 6f14 bles 5bf08 <read+0x70> <== NOT EXECUTED
iop->offset += rc;
5bef4: 2400 movel %d0,%d2 <== NOT EXECUTED 5bef6: 5bc1 smi %d1 <== NOT EXECUTED 5bef8: 49c1 extbl %d1 <== NOT EXECUTED 5befa: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED 5befe: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED 5bf02: d781 addxl %d1,%d3 <== NOT EXECUTED 5bf04: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
return rc;
}
5bf08: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5bf0e: 4e5e unlk %fp <== NOT EXECUTED 5bf10: 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 );
5bf12: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5bf14: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5bf1a: 4e5e unlk %fp <== NOT EXECUTED 5bf1c: 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 );
5bf1e: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5bf24: 7409 moveq #9,%d2 <== NOT EXECUTED 5bf26: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bf28: 70ff moveq #-1,%d0 <== NOT EXECUTED 5bf2a: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5bf2c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5bf32: 4e5e unlk %fp <== NOT EXECUTED 5bf34: 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 );
5bf36: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5bf3c: 7216 moveq #22,%d1 <== NOT EXECUTED 5bf3e: 2040 moveal %d0,%a0 <== NOT EXECUTED 5bf40: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5bf42: 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 );
5bf48: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5bf4a: 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 3854 jsr 53854 <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 1d80 jsr 51d80 <__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 1d80 jsr 51d80 <__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 f164 cmpl 5f164 <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 0974 moveal 60974 <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 f9f8 jsr 4f9f8 <__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 f9f8 jsr 4f9f8 <__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
...
0005bfd0 <realloc>:
/*
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
5bfd0: 7003 moveq #3,%d0
void *realloc(
void *ptr,
size_t size
)
{
5bfd2: 4e56 fff0 linkw %fp,#-16
uintptr_t old_size;
char *new_area;
MSBUMP(realloc_calls, 1);
5bfd6: 52b9 0005 fbcc addql #1,5fbcc <rtems_malloc_statistics+0x10>
void *realloc(
void *ptr,
size_t size
)
{
5bfdc: 48d7 001c moveml %d2-%d4,%sp@ 5bfe0: 242e 0008 movel %fp@(8),%d2 5bfe4: 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())) {
5bfe8: b0b9 0005 fe64 cmpl 5fe64 <_System_state_Current>,%d0
5bfee: 677a beqs 5c06a <realloc+0x9a> <== ALWAYS TAKEN
}
/*
* Continue with realloc().
*/
if ( !ptr )
5bff0: 4a82 tstl %d2 5bff2: 6700 00de beqw 5c0d2 <realloc+0x102>
return malloc( size );
if ( !size ) {
5bff6: 4a83 tstl %d3 <== NOT EXECUTED 5bff8: 673e beqs 5c038 <realloc+0x68> <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
5bffa: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5bffe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c000: 2f39 0005 e3a0 movel 5e3a0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 5c006: 4eb9 0005 c688 jsr 5c688 <_Protected_heap_Get_block_size> <== NOT EXECUTED 5c00c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c010: 4a00 tstb %d0 <== NOT EXECUTED 5c012: 673c beqs 5c050 <realloc+0x80> <== NOT EXECUTED
}
/*
* Now resize it.
*/
if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
5c014: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c016: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c018: 2f39 0005 e3a0 movel 5e3a0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 5c01e: 4eb9 0005 c6c4 jsr 5c6c4 <_Protected_heap_Resize_block> <== NOT EXECUTED 5c024: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c028: 4a00 tstb %d0 <== NOT EXECUTED 5c02a: 6754 beqs 5c080 <realloc+0xb0> <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c02c: 2002 movel %d2,%d0 <== NOT EXECUTED 5c02e: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5c034: 4e5e unlk %fp <== NOT EXECUTED 5c036: 4e75 rts <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5c038: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (void *) 0;
5c03a: 4282 clrl %d2 <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5c03c: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
return (void *) 0;
5c042: 588f addql #4,%sp <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c044: 2002 movel %d2,%d0 <== NOT EXECUTED 5c046: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5c04c: 4e5e unlk %fp <== NOT EXECUTED 5c04e: 4e75 rts <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5c050: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED
return (void *) 0;
5c056: 4282 clrl %d2 <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5c058: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c05a: 7016 moveq #22,%d0 <== NOT EXECUTED 5c05c: 2080 movel %d0,%a0@ <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c05e: 2002 movel %d2,%d0 <== NOT EXECUTED 5c060: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5c066: 4e5e unlk %fp <== NOT EXECUTED 5c068: 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)
5c06a: 2039 0005 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0
5c070: 6752 beqs 5c0c4 <realloc+0xf4> <== ALWAYS TAKEN
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
5c072: 4282 clrl %d2 <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c074: 2002 movel %d2,%d0 <== NOT EXECUTED 5c076: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5c07c: 4e5e unlk %fp <== NOT EXECUTED 5c07e: 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 );
5c080: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c082: 4eb9 0004 302c jsr 4302c <malloc> <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5c088: 588f addql #4,%sp <== NOT EXECUTED
* and the C Standard.
*/
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
5c08a: 53b9 0005 fbc0 subql #1,5fbc0 <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 );
5c090: 2800 movel %d0,%d4 <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5c092: 67de beqs 5c072 <realloc+0xa2> <== NOT EXECUTED
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
5c094: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 5c098: b083 cmpl %d3,%d0 <== NOT EXECUTED 5c09a: 6402 bccs 5c09e <realloc+0xce> <== NOT EXECUTED 5c09c: 2600 movel %d0,%d3 <== NOT EXECUTED 5c09e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5c0a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5c0a2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5c0a4: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
free( ptr );
5c0aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return new_area;
5c0ac: 2404 movel %d4,%d2 <== NOT EXECUTED
if ( !new_area ) {
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
5c0ae: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
return new_area;
5c0b4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
5c0b8: 2002 movel %d2,%d0 <== NOT EXECUTED 5c0ba: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 5c0c0: 4e5e unlk %fp <== NOT EXECUTED 5c0c2: 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)
5c0c4: 4ab9 0006 0182 tstl 60182 <_Per_CPU_Information+0x8> 5c0ca: 6700 ff24 beqw 5bff0 <realloc+0x20>
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
5c0ce: 4282 clrl %d2 <== NOT EXECUTED 5c0d0: 60a2 bras 5c074 <realloc+0xa4> <== NOT EXECUTED
/*
* Continue with realloc().
*/
if ( !ptr )
return malloc( size );
5c0d2: 2f03 movel %d3,%sp@- 5c0d4: 4eb9 0004 302c jsr 4302c <malloc> 5c0da: 588f addql #4,%sp 5c0dc: 2400 movel %d0,%d2
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c0de: 2002 movel %d2,%d0 5c0e0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 5c0e6: 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 063c lea 5063c <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 f298 jsr 4f298 <__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 f298 jsr 4f298 <__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
000476a4 <rtems_aio_enqueue>:
* errno - otherwise
*/
int
rtems_aio_enqueue (rtems_aio_request *req)
{
476a4: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 476a8: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
struct sched_param param;
/* The queue should be initialized */
AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
result = pthread_mutex_lock (&aio_request_queue.mutex);
476ac: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 476b2: 47f9 0004 8110 lea 48110 <pthread_mutex_lock>,%a3 <== NOT EXECUTED
* errno - otherwise
*/
int
rtems_aio_enqueue (rtems_aio_request *req)
{
476b8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
struct sched_param param;
/* The queue should be initialized */
AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
result = pthread_mutex_lock (&aio_request_queue.mutex);
476bc: 4e93 jsr %a3@ <== NOT EXECUTED
if (result != 0) {
476be: 588f addql #4,%sp <== NOT EXECUTED
struct sched_param param;
/* The queue should be initialized */
AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
result = pthread_mutex_lock (&aio_request_queue.mutex);
476c0: 2400 movel %d0,%d2 <== NOT EXECUTED
if (result != 0) {
476c2: 6600 00ba bnew 4777e <rtems_aio_enqueue+0xda> <== NOT EXECUTED
return result;
}
/* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
we can use aio_reqprio to lower the priority of the request */
pthread_getschedparam (pthread_self(), &policy, ¶m);
476c6: 49f9 0004 8ad0 lea 48ad0 <pthread_self>,%a4 <== NOT EXECUTED 476cc: 4e94 jsr %a4@ <== NOT EXECUTED 476ce: 486e ffdc pea %fp@(-36) <== NOT EXECUTED 476d2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 476d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 476d8: 4eb9 0004 863c jsr 4863c <pthread_getschedparam> <== NOT EXECUTED
req->caller_thread = pthread_self ();
476de: 4e94 jsr %a4@ <== NOT EXECUTED
req->priority = param.sched_priority - req->aiocbp->aio_reqprio;
476e0: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
req->policy = policy;
req->aiocbp->error_code = EINPROGRESS;
req->aiocbp->return_value = 0;
if ((aio_request_queue.idle_threads == 0) &&
476e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
we can use aio_reqprio to lower the priority of the request */
pthread_getschedparam (pthread_self(), &policy, ¶m);
req->caller_thread = pthread_self ();
req->priority = param.sched_priority - req->aiocbp->aio_reqprio;
476e8: 222e ffdc movel %fp@(-36),%d1 <== NOT EXECUTED 476ec: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED
req->policy = policy;
476f0: 256e fff8 0008 movel %fp@(-8),%a2@(8) <== NOT EXECUTED
/* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
we can use aio_reqprio to lower the priority of the request */
pthread_getschedparam (pthread_self(), &policy, ¶m);
req->caller_thread = pthread_self ();
476f6: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
req->priority = param.sched_priority - req->aiocbp->aio_reqprio; req->policy = policy; req->aiocbp->error_code = EINPROGRESS;
476fa: 7077 moveq #119,%d0 <== NOT EXECUTED
/* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
we can use aio_reqprio to lower the priority of the request */
pthread_getschedparam (pthread_self(), &policy, ¶m);
req->caller_thread = pthread_self ();
req->priority = param.sched_priority - req->aiocbp->aio_reqprio;
476fc: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
req->policy = policy; req->aiocbp->error_code = EINPROGRESS;
47700: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
req->aiocbp->return_value = 0;
47704: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
if ((aio_request_queue.idle_threads == 0) &&
47708: 4ab9 0006 2e90 tstl 62e90 <aio_request_queue+0x68> <== NOT EXECUTED 4770e: 660a bnes 4771a <rtems_aio_enqueue+0x76> <== NOT EXECUTED 47710: 7204 moveq #4,%d1 <== NOT EXECUTED 47712: b2b9 0006 2e8c cmpl 62e8c <aio_request_queue+0x64>,%d1 <== NOT EXECUTED 47718: 6c7a bges 47794 <rtems_aio_enqueue+0xf0> <== NOT EXECUTED
else
{
/* the maximum number of threads has been already created
even though some of them might be idle.
The request belongs to one of the active fd chain */
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
4771a: 42a7 clrl %sp@- <== NOT EXECUTED 4771c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4771e: 4bf9 0004 7216 lea 47216 <rtems_aio_search_fd>,%a5 <== NOT EXECUTED 47724: 4879 0006 2e70 pea 62e70 <aio_request_queue+0x48> <== NOT EXECUTED 4772a: 4e95 jsr %a5@ <== NOT EXECUTED
req->aiocbp->aio_fildes, 0);
if (r_chain != NULL)
4772c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
else
{
/* the maximum number of threads has been already created
even though some of them might be idle.
The request belongs to one of the active fd chain */
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
47730: 2840 moveal %d0,%a4 <== NOT EXECUTED
req->aiocbp->aio_fildes, 0);
if (r_chain != NULL)
47732: 4a80 tstl %d0 <== NOT EXECUTED 47734: 6700 00e0 beqw 47816 <rtems_aio_enqueue+0x172> <== NOT EXECUTED
{
pthread_mutex_lock (&r_chain->mutex);
47738: 260c movel %a4,%d3 <== NOT EXECUTED 4773a: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED
rtems_aio_insert_prio (&r_chain->perfd, req); pthread_cond_signal (&r_chain->cond); pthread_mutex_unlock (&r_chain->mutex);
47740: 4bf9 0004 81ac lea 481ac <pthread_mutex_unlock>,%a5 <== NOT EXECUTED
The request belongs to one of the active fd chain */
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
req->aiocbp->aio_fildes, 0);
if (r_chain != NULL)
{
pthread_mutex_lock (&r_chain->mutex);
47746: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47748: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_aio_insert_prio (&r_chain->perfd, req);
4774a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4774c: 486c 0008 pea %a4@(8) <== NOT EXECUTED 47750: 4eb9 0004 7582 jsr 47582 <rtems_aio_insert_prio> <== NOT EXECUTED
pthread_cond_signal (&r_chain->cond);
47756: 486c 0020 pea %a4@(32) <== NOT EXECUTED 4775a: 4eb9 0004 7c98 jsr 47c98 <pthread_cond_signal> <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
47760: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47762: 4e95 jsr %a5@ <== NOT EXECUTED 47764: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
/* just insert the request in the existing fd chain */
rtems_aio_insert_prio (&r_chain->perfd, req);
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
47768: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 4776e: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
47770: 588f addql #4,%sp <== NOT EXECUTED
}
47772: 2002 movel %d2,%d0 <== NOT EXECUTED 47774: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4777a: 4e5e unlk %fp <== NOT EXECUTED 4777c: 4e75 rts <== NOT EXECUTED
/* The queue should be initialized */
AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
result = pthread_mutex_lock (&aio_request_queue.mutex);
if (result != 0) {
free (req);
4777e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47780: 4eb9 0004 3978 jsr 43978 <free> <== NOT EXECUTED
return result;
47786: 588f addql #4,%sp <== NOT EXECUTED
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
return 0;
}
47788: 2002 movel %d2,%d0 <== NOT EXECUTED 4778a: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED 47790: 4e5e unlk %fp <== NOT EXECUTED 47792: 4e75 rts <== NOT EXECUTED
if ((aio_request_queue.idle_threads == 0) &&
aio_request_queue.active_threads < AIO_MAX_THREADS)
/* we still have empty places on the active_threads chain */
{
chain = &aio_request_queue.work_req;
r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
47794: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 47798: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4779a: 4879 0006 2e70 pea 62e70 <aio_request_queue+0x48> <== NOT EXECUTED 477a0: 4eb9 0004 7216 jsr 47216 <rtems_aio_search_fd> <== NOT EXECUTED
if (r_chain->new_fd == 1) {
477a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ((aio_request_queue.idle_threads == 0) &&
aio_request_queue.active_threads < AIO_MAX_THREADS)
/* we still have empty places on the active_threads chain */
{
chain = &aio_request_queue.work_req;
r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
477aa: 2840 moveal %d0,%a4 <== NOT EXECUTED
if (r_chain->new_fd == 1) {
477ac: 7001 moveq #1,%d0 <== NOT EXECUTED 477ae: b0ac 0018 cmpl %a4@(24),%d0 <== NOT EXECUTED 477b2: 6684 bnes 47738 <rtems_aio_enqueue+0x94> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert(_Chain_Head(the_chain), the_node);
477b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 477b6: 486c 0008 pea %a4@(8) <== NOT EXECUTED 477ba: 4eb9 0004 9dc4 jsr 49dc4 <_Chain_Insert> <== NOT EXECUTED
rtems_chain_prepend (&r_chain->perfd, &req->next_prio); r_chain->new_fd = 0;
477c0: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
477c4: 42a7 clrl %sp@- <== NOT EXECUTED 477c6: 486c 001c pea %a4@(28) <== NOT EXECUTED 477ca: 4eb9 0004 7fd0 jsr 47fd0 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
477d0: 42a7 clrl %sp@- <== NOT EXECUTED 477d2: 486c 0020 pea %a4@(32) <== NOT EXECUTED 477d6: 4eb9 0004 7bd8 jsr 47bd8 <pthread_cond_init> <== NOT EXECUTED
AIO_printf ("New thread \n");
result = pthread_create (&thid, &aio_request_queue.attr,
477dc: 2f0c movel %a4,%sp@- <== NOT EXECUTED 477de: 487a fafe pea %pc@(472de <rtems_aio_handle>) <== NOT EXECUTED 477e2: 4879 0006 2e30 pea 62e30 <aio_request_queue+0x8> <== NOT EXECUTED 477e8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 477ec: 4eb9 0004 832c jsr 4832c <pthread_create> <== NOT EXECUTED
rtems_aio_handle, (void *) r_chain);
if (result != 0) {
477f2: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED 477f6: 4a80 tstl %d0 <== NOT EXECUTED 477f8: 6600 00b0 bnew 478aa <rtems_aio_enqueue+0x206> <== NOT EXECUTED
/* just insert the request in the existing fd chain */
rtems_aio_insert_prio (&r_chain->perfd, req);
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
477fc: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED
rtems_aio_handle, (void *) r_chain);
if (result != 0) {
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
++aio_request_queue.active_threads;
47802: 52b9 0006 2e8c addql #1,62e8c <aio_request_queue+0x64> <== NOT EXECUTED 47808: 4bf9 0004 81ac lea 481ac <pthread_mutex_unlock>,%a5 <== NOT EXECUTED
/* just insert the request in the existing fd chain */
rtems_aio_insert_prio (&r_chain->perfd, req);
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
4780e: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
47810: 588f addql #4,%sp <== NOT EXECUTED 47812: 6000 ff5e braw 47772 <rtems_aio_enqueue+0xce> <== NOT EXECUTED
} else {
/* or to the idle chain */
chain = &aio_request_queue.idle_req;
r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
47816: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4781a: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 4781e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 47820: 4879 0006 2e7c pea 62e7c <aio_request_queue+0x54> <== NOT EXECUTED 47826: 4e95 jsr %a5@ <== NOT EXECUTED
if (r_chain->new_fd == 1) {
47828: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4782c: 7201 moveq #1,%d1 <== NOT EXECUTED
} else {
/* or to the idle chain */
chain = &aio_request_queue.idle_req;
r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
4782e: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (r_chain->new_fd == 1) {
47830: b2ab 0018 cmpl %a3@(24),%d1 <== NOT EXECUTED 47834: 6722 beqs 47858 <rtems_aio_enqueue+0x1b4> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL); pthread_cond_signal (&aio_request_queue.new_req); ++aio_request_queue.idle_threads; } else /* just insert the request in the existing fd chain */ rtems_aio_insert_prio (&r_chain->perfd, req);
47836: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47838: 486b 0008 pea %a3@(8) <== NOT EXECUTED 4783c: 4bf9 0004 81ac lea 481ac <pthread_mutex_unlock>,%a5 <== NOT EXECUTED 47842: 4eb9 0004 7582 jsr 47582 <rtems_aio_insert_prio> <== NOT EXECUTED 47848: 508f addql #8,%sp <== NOT EXECUTED
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
4784a: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 47850: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
47852: 588f addql #4,%sp <== NOT EXECUTED 47854: 6000 ff1c braw 47772 <rtems_aio_enqueue+0xce> <== NOT EXECUTED 47858: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4785a: 486b 0008 pea %a3@(8) <== NOT EXECUTED 4785e: 4bf9 0004 81ac lea 481ac <pthread_mutex_unlock>,%a5 <== NOT EXECUTED 47864: 4eb9 0004 9dc4 jsr 49dc4 <_Chain_Insert> <== NOT EXECUTED
if (r_chain->new_fd == 1) {
/* If this is a new fd chain we signal the idle threads that
might be waiting for requests */
AIO_printf (" New chain on waiting queue \n ");
rtems_chain_prepend (&r_chain->perfd, &req->next_prio);
r_chain->new_fd = 0;
4786a: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
4786e: 42a7 clrl %sp@- <== NOT EXECUTED 47870: 486b 001c pea %a3@(28) <== NOT EXECUTED 47874: 4eb9 0004 7fd0 jsr 47fd0 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
4787a: 42a7 clrl %sp@- <== NOT EXECUTED 4787c: 486b 0020 pea %a3@(32) <== NOT EXECUTED 47880: 4eb9 0004 7bd8 jsr 47bd8 <pthread_cond_init> <== NOT EXECUTED
pthread_cond_signal (&aio_request_queue.new_req);
47886: 4879 0006 2e2c pea 62e2c <aio_request_queue+0x4> <== NOT EXECUTED 4788c: 4eb9 0004 7c98 jsr 47c98 <pthread_cond_signal> <== NOT EXECUTED
++aio_request_queue.idle_threads;
47892: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 47896: 52b9 0006 2e90 addql #1,62e90 <aio_request_queue+0x68> <== NOT EXECUTED
/* just insert the request in the existing fd chain */
rtems_aio_insert_prio (&r_chain->perfd, req);
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
4789c: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 478a2: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
478a4: 588f addql #4,%sp <== NOT EXECUTED 478a6: 6000 feca braw 47772 <rtems_aio_enqueue+0xce> <== NOT EXECUTED
AIO_printf ("New thread \n");
result = pthread_create (&thid, &aio_request_queue.attr,
rtems_aio_handle, (void *) r_chain);
if (result != 0) {
pthread_mutex_unlock (&aio_request_queue.mutex);
478aa: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED
return result;
478b0: 2400 movel %d0,%d2 <== NOT EXECUTED
AIO_printf ("New thread \n");
result = pthread_create (&thid, &aio_request_queue.attr,
rtems_aio_handle, (void *) r_chain);
if (result != 0) {
pthread_mutex_unlock (&aio_request_queue.mutex);
478b2: 4eb9 0004 81ac jsr 481ac <pthread_mutex_unlock> <== NOT EXECUTED
return result;
478b8: 588f addql #4,%sp <== NOT EXECUTED
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
return 0;
}
478ba: 2002 movel %d2,%d0 <== NOT EXECUTED 478bc: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED 478c2: 4e5e unlk %fp <== NOT EXECUTED
...
000472de <rtems_aio_handle>:
* NULL - if error
*/
static void *
rtems_aio_handle (void *arg)
{
472de: 4e56 ffb0 linkw %fp,#-80 <== NOT EXECUTED 472e2: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_aio_request_chain *r_chain = arg;
472e6: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
node = rtems_chain_first (chain);
req = (rtems_aio_request *) node;
/* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING
discussion in rtems_aio_enqueue () */
pthread_getschedparam (pthread_self(), &policy, ¶m);
472ea: 260e movel %fp,%d3 <== NOT EXECUTED 472ec: 240c movel %a4,%d2 <== NOT EXECUTED 472ee: 2e0e movel %fp,%d7 <== NOT EXECUTED 472f0: 4bf9 0004 8110 lea 48110 <pthread_mutex_lock>,%a5 <== NOT EXECUTED 472f6: 0682 0000 001c addil #28,%d2 <== NOT EXECUTED
wait for a signal on chain, this will unlock the queue.
The fd chain is already unlocked */
struct timespec timeout;
pthread_mutex_unlock (&r_chain->mutex);
472fc: 2a3c 0004 81ac movel #295340,%d5 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
47302: 2c3c 0004 9d60 movel #302432,%d6 <== NOT EXECUTED
node = rtems_chain_first (chain);
req = (rtems_aio_request *) node;
/* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING
discussion in rtems_aio_enqueue () */
pthread_getschedparam (pthread_self(), &policy, ¶m);
47308: 0683 ffff ffd8 addil #-40,%d3 <== NOT EXECUTED 4730e: 5987 subql #4,%d7 <== NOT EXECUTED
/* acquire the mutex of the current fd chain.
we don't need to lock the queue mutex since we can
add requests to idle fd chains or even active ones
if the working request has been extracted from the
chain */
result = pthread_mutex_lock (&r_chain->mutex);
47310: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47312: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0)
47314: 588f addql #4,%sp <== NOT EXECUTED 47316: 4a80 tstl %d0 <== NOT EXECUTED 47318: 6600 008c bnew 473a6 <rtems_aio_handle+0xc8> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4731c: 200c movel %a4,%d0 <== NOT EXECUTED 4731e: 0680 0000 000c addil #12,%d0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47324: 246c 0008 moveal %a4@(8),%a2 <== NOT EXECUTED
/* If the locked chain is not empty, take the first
request extract it, unlock the chain and process
the request, in this way the user can supply more
requests to this fd chain */
if (!rtems_chain_is_empty (chain)) {
47328: b08a cmpl %a2,%d0 <== NOT EXECUTED 4732a: 6700 00e4 beqw 47410 <rtems_aio_handle+0x132> <== NOT EXECUTED
node = rtems_chain_first (chain);
req = (rtems_aio_request *) node;
/* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING
discussion in rtems_aio_enqueue () */
pthread_getschedparam (pthread_self(), &policy, ¶m);
4732e: 47f9 0004 8ad0 lea 48ad0 <pthread_self>,%a3 <== NOT EXECUTED 47334: 4e93 jsr %a3@ <== NOT EXECUTED 47336: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47338: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4733a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4733c: 4eb9 0004 863c jsr 4863c <pthread_getschedparam> <== NOT EXECUTED
param.sched_priority = req->priority;
47342: 2d6a 000c ffd8 movel %a2@(12),%fp@(-40) <== NOT EXECUTED
pthread_setschedparam (pthread_self(), req->policy, ¶m);
47348: 282a 0008 movel %a2@(8),%d4 <== NOT EXECUTED 4734c: 4e93 jsr %a3@ <== NOT EXECUTED 4734e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47350: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47352: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47354: 4eb9 0004 8ae4 jsr 48ae4 <pthread_setschedparam> <== NOT EXECUTED 4735a: 2046 moveal %d6,%a0 <== NOT EXECUTED 4735c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4735e: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_chain_extract (node);
pthread_mutex_unlock (&r_chain->mutex);
47360: 2045 moveal %d5,%a0 <== NOT EXECUTED 47362: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47364: 4e90 jsr %a0@ <== NOT EXECUTED
switch (req->aiocbp->aio_lio_opcode) {
47366: 266a 0014 moveal %a2@(20),%a3 <== NOT EXECUTED 4736a: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 4736e: 7202 moveq #2,%d1 <== NOT EXECUTED 47370: 202b 002c movel %a3@(44),%d0 <== NOT EXECUTED 47374: b280 cmpl %d0,%d1 <== NOT EXECUTED 47376: 677a beqs 473f2 <rtems_aio_handle+0x114> <== NOT EXECUTED 47378: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 4737c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4737e: 6766 beqs 473e6 <rtems_aio_handle+0x108> <== NOT EXECUTED 47380: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 47384: b280 cmpl %d0,%d1 <== NOT EXECUTED 47386: 672a beqs 473b2 <rtems_aio_handle+0xd4> <== NOT EXECUTED
default:
result = -1;
}
if (result == -1) {
req->aiocbp->return_value = -1;
47388: 70ff moveq #-1,%d0 <== NOT EXECUTED 4738a: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED
req->aiocbp->error_code = errno;
4738e: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED 47394: 2040 moveal %d0,%a0 <== NOT EXECUTED 47396: 2750 0030 movel %a0@,%a3@(48) <== NOT EXECUTED
/* acquire the mutex of the current fd chain.
we don't need to lock the queue mutex since we can
add requests to idle fd chains or even active ones
if the working request has been extracted from the
chain */
result = pthread_mutex_lock (&r_chain->mutex);
4739a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4739c: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0)
4739e: 588f addql #4,%sp <== NOT EXECUTED 473a0: 4a80 tstl %d0 <== NOT EXECUTED 473a2: 6700 ff78 beqw 4731c <rtems_aio_handle+0x3e> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
473a6: 4280 clrl %d0 <== NOT EXECUTED 473a8: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 473ae: 4e5e unlk %fp <== NOT EXECUTED 473b0: 4e75 rts <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
switch (req->aiocbp->aio_lio_opcode) {
case LIO_READ:
result = pread (req->aiocbp->aio_fildes,
473b2: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED 473b6: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED 473ba: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED 473be: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED 473c2: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 473c4: 4eb9 0005 2208 jsr 52208 <pread> <== NOT EXECUTED
(void *) req->aiocbp->aio_buf,
req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
break;
473ca: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
break;
default:
result = -1;
}
if (result == -1) {
473ce: 72ff moveq #-1,%d1 <== NOT EXECUTED 473d0: b280 cmpl %d0,%d1 <== NOT EXECUTED 473d2: 6700 017a beqw 4754e <rtems_aio_handle+0x270> <== NOT EXECUTED
req->aiocbp->return_value = -1;
req->aiocbp->error_code = errno;
} else {
req->aiocbp->return_value = result;
473d6: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 473da: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
req->aiocbp->error_code = 0;
473de: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED 473e2: 6000 ff2c braw 47310 <rtems_aio_handle+0x32> <== NOT EXECUTED
(void *) req->aiocbp->aio_buf,
req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
break;
case LIO_SYNC:
result = fsync (req->aiocbp->aio_fildes);
473e6: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 473e8: 4eb9 0004 e278 jsr 4e278 <fsync> <== NOT EXECUTED
break;
473ee: 588f addql #4,%sp <== NOT EXECUTED 473f0: 60dc bras 473ce <rtems_aio_handle+0xf0> <== NOT EXECUTED
(void *) req->aiocbp->aio_buf,
req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
break;
case LIO_WRITE:
result = pwrite (req->aiocbp->aio_fildes,
473f2: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED 473f6: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED 473fa: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED 473fe: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED 47402: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 47404: 4eb9 0005 22cc jsr 522cc <pwrite> <== NOT EXECUTED
(void *) req->aiocbp->aio_buf,
req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
break;
4740a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4740e: 60be bras 473ce <rtems_aio_handle+0xf0> <== NOT EXECUTED
wait for a signal on chain, this will unlock the queue.
The fd chain is already unlocked */
struct timespec timeout;
pthread_mutex_unlock (&r_chain->mutex);
47410: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47412: 2045 moveal %d5,%a0 <== NOT EXECUTED 47414: 4e90 jsr %a0@ <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
47416: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 4741c: 4eb9 0004 8110 jsr 48110 <pthread_mutex_lock> <== NOT EXECUTED
if (rtems_chain_is_empty (chain))
47422: 508f addql #8,%sp <== NOT EXECUTED 47424: b5ec 0008 cmpal %a4@(8),%a2 <== NOT EXECUTED 47428: 6600 fee6 bnew 47310 <rtems_aio_handle+0x32> <== NOT EXECUTED
{
clock_gettime (CLOCK_REALTIME, &timeout);
4742c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond,
47430: 280c movel %a4,%d4 <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
pthread_mutex_lock (&aio_request_queue.mutex);
if (rtems_chain_is_empty (chain))
{
clock_gettime (CLOCK_REALTIME, &timeout);
47432: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond,
47436: 0684 0000 0020 addil #32,%d4 <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
pthread_mutex_lock (&aio_request_queue.mutex);
if (rtems_chain_is_empty (chain))
{
clock_gettime (CLOCK_REALTIME, &timeout);
4743c: 4eb9 0004 7a68 jsr 47a68 <clock_gettime> <== NOT EXECUTED
timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond,
47442: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
pthread_mutex_lock (&aio_request_queue.mutex);
if (rtems_chain_is_empty (chain))
{
clock_gettime (CLOCK_REALTIME, &timeout);
timeout.tv_sec += 3;
47446: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED
timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond,
4744a: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
if (rtems_chain_is_empty (chain))
{
clock_gettime (CLOCK_REALTIME, &timeout);
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
47450: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
result = pthread_cond_timedwait (&r_chain->cond,
47454: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47456: 4eb9 0004 7d14 jsr 47d14 <pthread_cond_timedwait> <== NOT EXECUTED
&aio_request_queue.mutex, &timeout);
/* If no requests were added to the chain we delete the fd chain from
the queue and start working with idle fd chains */
if (result == ETIMEDOUT) {
4745c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 47460: 7274 moveq #116,%d1 <== NOT EXECUTED 47462: b280 cmpl %d0,%d1 <== NOT EXECUTED 47464: 6600 feaa bnew 47310 <rtems_aio_handle+0x32> <== NOT EXECUTED 47468: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4746a: 2046 moveal %d6,%a0 <== NOT EXECUTED 4746c: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_chain_extract (&r_chain->next_fd); pthread_mutex_destroy (&r_chain->mutex);
4746e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47470: 4eb9 0004 7e5c jsr 47e5c <pthread_mutex_destroy> <== NOT EXECUTED
pthread_cond_destroy (&r_chain->cond);
47476: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47478: 4eb9 0004 7ae8 jsr 47ae8 <pthread_cond_destroy> <== NOT EXECUTED
free (r_chain);
4747e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47480: 4eb9 0004 3978 jsr 43978 <free> <== NOT EXECUTED
/* If the idle chain is empty sleep for 3 seconds and wait for a
signal. The thread now becomes idle. */
if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {
47486: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4748a: 203c 0006 2e80 movel #405120,%d0 <== NOT EXECUTED 47490: b0b9 0006 2e7c cmpl 62e7c <aio_request_queue+0x54>,%d0 <== NOT EXECUTED 47496: 6710 beqs 474a8 <rtems_aio_handle+0x1ca> <== NOT EXECUTED
r_chain->perfd = ((rtems_aio_request_chain *)node)->perfd; } else /* If there was a request added in the initial fd chain then release the mutex and process it */ pthread_mutex_unlock (&aio_request_queue.mutex);
47498: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 4749e: 2045 moveal %d5,%a0 <== NOT EXECUTED 474a0: 4e90 jsr %a0@ <== NOT EXECUTED 474a2: 588f addql #4,%sp <== NOT EXECUTED 474a4: 6000 fe6a braw 47310 <rtems_aio_handle+0x32> <== NOT EXECUTED
/* If the idle chain is empty sleep for 3 seconds and wait for a
signal. The thread now becomes idle. */
if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {
++aio_request_queue.idle_threads;
clock_gettime (CLOCK_REALTIME, &timeout);
474a8: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
free (r_chain);
/* If the idle chain is empty sleep for 3 seconds and wait for a
signal. The thread now becomes idle. */
if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {
++aio_request_queue.idle_threads;
474ac: 52b9 0006 2e90 addql #1,62e90 <aio_request_queue+0x68> <== NOT EXECUTED
clock_gettime (CLOCK_REALTIME, &timeout);
474b2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 474b6: 4eb9 0004 7a68 jsr 47a68 <clock_gettime> <== NOT EXECUTED
timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&aio_request_queue.new_req,
474bc: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
/* If the idle chain is empty sleep for 3 seconds and wait for a
signal. The thread now becomes idle. */
if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {
++aio_request_queue.idle_threads;
clock_gettime (CLOCK_REALTIME, &timeout);
timeout.tv_sec += 3;
474c0: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED
timeout.tv_nsec = 0; result = pthread_cond_timedwait (&aio_request_queue.new_req,
474c4: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 474ca: 4879 0006 2e2c pea 62e2c <aio_request_queue+0x4> <== NOT EXECUTED
signal. The thread now becomes idle. */
if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {
++aio_request_queue.idle_threads;
clock_gettime (CLOCK_REALTIME, &timeout);
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
474d0: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
result = pthread_cond_timedwait (&aio_request_queue.new_req,
474d4: 4eb9 0004 7d14 jsr 47d14 <pthread_cond_timedwait> <== NOT EXECUTED
&aio_request_queue.mutex,
&timeout);
/* If no new fd chain was added in the idle requests
then this thread is finished */
if (result == ETIMEDOUT) {
474da: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 474de: 7274 moveq #116,%d1 <== NOT EXECUTED 474e0: b280 cmpl %d0,%d1 <== NOT EXECUTED 474e2: 6700 0084 beqw 47568 <rtems_aio_handle+0x28a> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
474e6: 2479 0006 2e7c moveal 62e7c <aio_request_queue+0x54>,%a2 <== NOT EXECUTED
return NULL; } /* Otherwise move this chain to the working chain and start the loop all over again */ --aio_request_queue.idle_threads;
474ec: 53b9 0006 2e90 subql #1,62e90 <aio_request_queue+0x68> <== NOT EXECUTED 474f2: 2046 moveal %d6,%a0 <== NOT EXECUTED 474f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 474f6: 4e90 jsr %a0@ <== NOT EXECUTED
node = rtems_chain_first (&aio_request_queue.idle_req); rtems_chain_extract (node); r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
474f8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 474fc: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED 47500: 4879 0006 2e70 pea 62e70 <aio_request_queue+0x48> <== NOT EXECUTED 47506: 4eb9 0004 7216 jsr 47216 <rtems_aio_search_fd> <== NOT EXECUTED 4750c: 2840 moveal %d0,%a4 <== NOT EXECUTED
((rtems_aio_request_chain *)node)->fildes, 1); r_chain->new_fd = 0; pthread_mutex_init (&r_chain->mutex, NULL);
4750e: 2400 movel %d0,%d2 <== NOT EXECUTED 47510: 0682 0000 001c addil #28,%d2 <== NOT EXECUTED
node = rtems_chain_first (&aio_request_queue.idle_req); rtems_chain_extract (node); r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, ((rtems_aio_request_chain *)node)->fildes, 1); r_chain->new_fd = 0;
47516: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
4751a: 42a7 clrl %sp@- <== NOT EXECUTED 4751c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4751e: 4eb9 0004 7fd0 jsr 47fd0 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
47524: 42a7 clrl %sp@- <== NOT EXECUTED 47526: 486c 0020 pea %a4@(32) <== NOT EXECUTED 4752a: 4eb9 0004 7bd8 jsr 47bd8 <pthread_cond_init> <== NOT EXECUTED
r_chain->perfd = ((rtems_aio_request_chain *)node)->perfd;
47530: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 47534: 4878 000c pea c <OPER1> <== NOT EXECUTED 47538: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4753c: 486c 0008 pea %a4@(8) <== NOT EXECUTED 47540: 4eb9 0005 2090 jsr 52090 <memcpy> <== NOT EXECUTED 47546: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4754a: 6000 fdc4 braw 47310 <rtems_aio_handle+0x32> <== NOT EXECUTED
break;
default:
result = -1;
}
if (result == -1) {
4754e: 266a 0014 moveal %a2@(20),%a3 <== NOT EXECUTED
req->aiocbp->return_value = -1;
47552: 70ff moveq #-1,%d0 <== NOT EXECUTED 47554: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED
req->aiocbp->error_code = errno;
47558: 4eb9 0005 1764 jsr 51764 <__errno> <== NOT EXECUTED 4755e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47560: 2750 0030 movel %a0@,%a3@(48) <== NOT EXECUTED 47564: 6000 fe34 braw 4739a <rtems_aio_handle+0xbc> <== NOT EXECUTED
&timeout);
/* If no new fd chain was added in the idle requests
then this thread is finished */
if (result == ETIMEDOUT) {
pthread_mutex_unlock (&aio_request_queue.mutex);
47568: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 4756e: 4eb9 0004 81ac jsr 481ac <pthread_mutex_unlock> <== NOT EXECUTED
return NULL;
47574: 588f addql #4,%sp <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47576: 4280 clrl %d0 <== NOT EXECUTED 47578: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4757e: 4e5e unlk %fp <== NOT EXECUTED
00047098 <rtems_aio_init>:
* 0 - if initialization succeeded
*/
int
rtems_aio_init (void)
{
47098: 4e56 0000 linkw %fp,#0 4709c: 2f02 movel %d2,%sp@-
int result = 0;
result = pthread_attr_init (&aio_request_queue.attr);
4709e: 4879 0006 2e30 pea 62e30 <aio_request_queue+0x8> 470a4: 4eb9 0004 82d4 jsr 482d4 <pthread_attr_init>
if (result != 0)
470aa: 588f addql #4,%sp
int
rtems_aio_init (void)
{
int result = 0;
result = pthread_attr_init (&aio_request_queue.attr);
470ac: 2400 movel %d0,%d2
if (result != 0)
470ae: 670a beqs 470ba <rtems_aio_init+0x22> <== ALWAYS TAKEN
aio_request_queue.active_threads = 0;
aio_request_queue.idle_threads = 0;
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
return result;
}
470b0: 2002 movel %d2,%d0 <== NOT EXECUTED 470b2: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 470b6: 4e5e unlk %fp <== NOT EXECUTED 470b8: 4e75 rts <== NOT EXECUTED
result = pthread_attr_init (&aio_request_queue.attr);
if (result != 0)
return result;
result =
470ba: 42a7 clrl %sp@- 470bc: 4879 0006 2e30 pea 62e30 <aio_request_queue+0x8> 470c2: 4eb9 0004 8300 jsr 48300 <pthread_attr_setdetachstate>
pthread_attr_setdetachstate (&aio_request_queue.attr,
PTHREAD_CREATE_DETACHED);
if (result != 0)
470c8: 508f addql #8,%sp 470ca: 4a80 tstl %d0 470cc: 6600 0122 bnew 471f0 <rtems_aio_init+0x158>
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
470d0: 42a7 clrl %sp@- 470d2: 4879 0006 2e28 pea 62e28 <aio_request_queue> 470d8: 4eb9 0004 7fd0 jsr 47fd0 <pthread_mutex_init>
if (result != 0)
470de: 508f addql #8,%sp 470e0: 4a80 tstl %d0 470e2: 6600 00e4 bnew 471c8 <rtems_aio_init+0x130>
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
470e6: 42a7 clrl %sp@- 470e8: 4879 0006 2e2c pea 62e2c <aio_request_queue+0x4> 470ee: 4eb9 0004 7bd8 jsr 47bd8 <pthread_cond_init>
if (result != 0) {
470f4: 508f addql #8,%sp
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
if (result != 0)
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
470f6: 2400 movel %d0,%d2
if (result != 0) {
470f8: 665e bnes 47158 <rtems_aio_init+0xc0> <== NEVER TAKEN
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
470fa: 42b9 0006 2e74 clrl 62e74 <aio_request_queue+0x4c>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
47100: 203c 0006 2e74 movel #405108,%d0 47106: 23c0 0006 2e70 movel %d0,62e70 <aio_request_queue+0x48>
head->previous = NULL; tail->previous = head;
4710c: 203c 0006 2e70 movel #405104,%d0 47112: 23c0 0006 2e78 movel %d0,62e78 <aio_request_queue+0x50>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
47118: 203c 0006 2e80 movel #405120,%d0 4711e: 23c0 0006 2e7c movel %d0,62e7c <aio_request_queue+0x54>
head->previous = NULL; tail->previous = head;
47124: 203c 0006 2e7c movel #405116,%d0 4712a: 23c0 0006 2e84 movel %d0,62e84 <aio_request_queue+0x5c>
rtems_chain_initialize_empty (&aio_request_queue.work_req);
rtems_chain_initialize_empty (&aio_request_queue.idle_req);
aio_request_queue.active_threads = 0;
aio_request_queue.idle_threads = 0;
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
47130: 203c 0000 b00b movel #45067,%d0
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
47136: 42b9 0006 2e80 clrl 62e80 <aio_request_queue+0x58>
}
rtems_chain_initialize_empty (&aio_request_queue.work_req);
rtems_chain_initialize_empty (&aio_request_queue.idle_req);
aio_request_queue.active_threads = 0;
4713c: 42b9 0006 2e8c clrl 62e8c <aio_request_queue+0x64>
aio_request_queue.idle_threads = 0;
47142: 42b9 0006 2e90 clrl 62e90 <aio_request_queue+0x68>
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
47148: 23c0 0006 2e88 movel %d0,62e88 <aio_request_queue+0x60>
return result;
}
4714e: 2002 movel %d2,%d0 47150: 242e fffc movel %fp@(-4),%d2 47154: 4e5e unlk %fp 47156: 4e75 rts
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
if (result != 0) {
pthread_mutex_destroy (&aio_request_queue.mutex);
47158: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 4715e: 4eb9 0004 7e5c jsr 47e5c <pthread_mutex_destroy> <== NOT EXECUTED
pthread_attr_destroy (&aio_request_queue.attr);
47164: 4879 0006 2e30 pea 62e30 <aio_request_queue+0x8> <== NOT EXECUTED 4716a: 4eb9 0004 82b4 jsr 482b4 <pthread_attr_destroy> <== NOT EXECUTED 47170: 508f addql #8,%sp <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
47172: 203c 0006 2e74 movel #405108,%d0 <== NOT EXECUTED 47178: 23c0 0006 2e70 movel %d0,62e70 <aio_request_queue+0x48> <== NOT EXECUTED
head->previous = NULL; tail->previous = head;
4717e: 203c 0006 2e70 movel #405104,%d0 <== NOT EXECUTED 47184: 23c0 0006 2e78 movel %d0,62e78 <aio_request_queue+0x50> <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4718a: 203c 0006 2e80 movel #405120,%d0 <== NOT EXECUTED 47190: 23c0 0006 2e7c movel %d0,62e7c <aio_request_queue+0x54> <== NOT EXECUTED
head->previous = NULL; tail->previous = head;
47196: 203c 0006 2e7c movel #405116,%d0 <== NOT EXECUTED 4719c: 23c0 0006 2e84 movel %d0,62e84 <aio_request_queue+0x5c> <== NOT EXECUTED
rtems_chain_initialize_empty (&aio_request_queue.work_req);
rtems_chain_initialize_empty (&aio_request_queue.idle_req);
aio_request_queue.active_threads = 0;
aio_request_queue.idle_threads = 0;
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
471a2: 203c 0000 b00b movel #45067,%d0 <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
471a8: 42b9 0006 2e74 clrl 62e74 <aio_request_queue+0x4c> <== NOT EXECUTED 471ae: 42b9 0006 2e80 clrl 62e80 <aio_request_queue+0x58> <== NOT EXECUTED
}
rtems_chain_initialize_empty (&aio_request_queue.work_req);
rtems_chain_initialize_empty (&aio_request_queue.idle_req);
aio_request_queue.active_threads = 0;
471b4: 42b9 0006 2e8c clrl 62e8c <aio_request_queue+0x64> <== NOT EXECUTED
aio_request_queue.idle_threads = 0;
471ba: 42b9 0006 2e90 clrl 62e90 <aio_request_queue+0x68> <== NOT EXECUTED
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
471c0: 23c0 0006 2e88 movel %d0,62e88 <aio_request_queue+0x60> <== NOT EXECUTED 471c6: 6086 bras 4714e <rtems_aio_init+0xb6> <== NOT EXECUTED
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
if (result != 0)
pthread_attr_destroy (&aio_request_queue.attr);
471c8: 4879 0006 2e30 pea 62e30 <aio_request_queue+0x8> <== NOT EXECUTED 471ce: 4eb9 0004 82b4 jsr 482b4 <pthread_attr_destroy> <== NOT EXECUTED 471d4: 588f addql #4,%sp <== NOT EXECUTED
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
471d6: 42a7 clrl %sp@- <== NOT EXECUTED 471d8: 4879 0006 2e2c pea 62e2c <aio_request_queue+0x4> <== NOT EXECUTED 471de: 4eb9 0004 7bd8 jsr 47bd8 <pthread_cond_init> <== NOT EXECUTED
if (result != 0) {
471e4: 508f addql #8,%sp <== NOT EXECUTED
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
if (result != 0)
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
471e6: 2400 movel %d0,%d2 <== NOT EXECUTED
if (result != 0) {
471e8: 6700 ff10 beqw 470fa <rtems_aio_init+0x62> <== NOT EXECUTED 471ec: 6000 ff6a braw 47158 <rtems_aio_init+0xc0> <== NOT EXECUTED
result =
pthread_attr_setdetachstate (&aio_request_queue.attr,
PTHREAD_CREATE_DETACHED);
if (result != 0)
pthread_attr_destroy (&aio_request_queue.attr);
471f0: 4879 0006 2e30 pea 62e30 <aio_request_queue+0x8> <== NOT EXECUTED 471f6: 4eb9 0004 82b4 jsr 482b4 <pthread_attr_destroy> <== NOT EXECUTED 471fc: 588f addql #4,%sp <== NOT EXECUTED
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
471fe: 42a7 clrl %sp@- <== NOT EXECUTED 47200: 4879 0006 2e28 pea 62e28 <aio_request_queue> <== NOT EXECUTED 47206: 4eb9 0004 7fd0 jsr 47fd0 <pthread_mutex_init> <== NOT EXECUTED
if (result != 0)
4720c: 508f addql #8,%sp <== NOT EXECUTED 4720e: 4a80 tstl %d0 <== NOT EXECUTED 47210: 6700 fed4 beqw 470e6 <rtems_aio_init+0x4e> <== NOT EXECUTED 47214: 60b2 bras 471c8 <rtems_aio_init+0x130> <== NOT EXECUTED
00047582 <rtems_aio_insert_prio>:
* NONE
*/
void
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{
47582: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 47586: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4758a: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4758e: 2440 moveal %d0,%a2 <== NOT EXECUTED
* NONE
*/
void
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{
47590: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47594: 205a moveal %a2@+,%a0 <== NOT EXECUTED
rtems_chain_node *node;
AIO_printf ("FD exists \n");
node = rtems_chain_first (chain);
if (rtems_chain_is_empty (chain)) {
47596: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 47598: 672c beqs 475c6 <rtems_aio_insert_prio+0x44> <== NOT EXECUTED
rtems_chain_prepend (chain, &req->next_prio);
} else {
AIO_printf ("Add by priority \n");
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
while (req->aiocbp->aio_reqprio > prio &&
4759a: 286b 0014 moveal %a3@(20),%a4 <== NOT EXECUTED
if (rtems_chain_is_empty (chain)) {
AIO_printf ("First in chain \n");
rtems_chain_prepend (chain, &req->next_prio);
} else {
AIO_printf ("Add by priority \n");
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
4759e: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
while (req->aiocbp->aio_reqprio > prio &&
475a2: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED 475a6: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED 475aa: 6f10 bles 475bc <rtems_aio_insert_prio+0x3a> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
475ac: 2050 moveal %a0@,%a0 <== NOT EXECUTED
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
while (req->aiocbp->aio_reqprio > prio &&
!rtems_chain_is_tail (chain, node)) {
node = rtems_chain_next (node);
prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
475ae: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
rtems_chain_prepend (chain, &req->next_prio);
} else {
AIO_printf ("Add by priority \n");
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
while (req->aiocbp->aio_reqprio > prio &&
475b2: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED 475b6: 6f04 bles 475bc <rtems_aio_insert_prio+0x3a> <== NOT EXECUTED 475b8: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 475ba: 66f0 bnes 475ac <rtems_aio_insert_prio+0x2a> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_insert(
rtems_chain_node *after_node,
rtems_chain_node *the_node
)
{
_Chain_Insert( after_node, the_node );
475bc: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 475c0: 2d68 0004 0008 movel %a0@(4),%fp@(8) <== NOT EXECUTED
}
rtems_chain_insert (node->previous, &req->next_prio);
}
}
475c6: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED 475ca: 4e5e unlk %fp <== NOT EXECUTED 475cc: 4ef9 0004 9dc4 jmp 49dc4 <_Chain_Insert> <== NOT EXECUTED
000475d2 <rtems_aio_remove_fd>:
* Output parameters:
* NONE
*/
void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain)
{
475d2: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 475d6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
475da: 2008 movel %a0,%d0 <== NOT EXECUTED 475dc: 0680 0000 000c addil #12,%d0 <== NOT EXECUTED 475e2: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
475e6: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
rtems_chain_node *node;
chain = &r_chain->perfd;
node = rtems_chain_first (chain);
while (!rtems_chain_is_tail (chain, node))
475ea: b08a cmpl %a2,%d0 <== NOT EXECUTED 475ec: 6752 beqs 47640 <rtems_aio_remove_fd+0x6e> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
475ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 475f0: 49f9 0004 9d60 lea 49d60 <_Chain_Extract>,%a4 <== NOT EXECUTED 475f6: 4e94 jsr %a4@ <== NOT EXECUTED
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
req->aiocbp->error_code = ECANCELED;
475f8: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
req->aiocbp->return_value = -1;
free (req);
475fc: 47f9 0004 3978 lea 43978 <free>,%a3 <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node))
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
req->aiocbp->error_code = ECANCELED;
47602: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED 47608: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
req->aiocbp->return_value = -1;
4760c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4760e: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
free (req);
47612: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47614: 4e93 jsr %a3@ <== NOT EXECUTED 47616: 588f addql #4,%sp <== NOT EXECUTED 47618: 2e8a movel %a2,%sp@ <== NOT EXECUTED 4761a: 4e94 jsr %a4@ <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node))
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
req->aiocbp->error_code = ECANCELED;
4761c: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 47620: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED 47626: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
req->aiocbp->return_value = -1;
4762a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4762c: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
free (req);
47630: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47632: 4e93 jsr %a3@ <== NOT EXECUTED 47634: 588f addql #4,%sp <== NOT EXECUTED 47636: 2e8a movel %a2,%sp@ <== NOT EXECUTED 47638: 4e94 jsr %a4@ <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node))
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
req->aiocbp->error_code = ECANCELED;
4763a: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 4763e: 60c2 bras 47602 <rtems_aio_remove_fd+0x30> <== NOT EXECUTED
req->aiocbp->return_value = -1;
free (req);
}
}
47640: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED 47646: 4e5e unlk %fp <== NOT EXECUTED
0004764a <rtems_aio_remove_req>:
* AIO_NOTCANCELED - if request was not canceled
* AIO_CANCELED - if request was canceled
*/
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{
4764a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4764e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
* AIO_NOTCANCELED - if request was not canceled
* AIO_CANCELED - if request was canceled
*/
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{
47652: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47654: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47658: 2458 moveal %a0@+,%a2 <== NOT EXECUTED
rtems_chain_node *node = rtems_chain_first (chain);
rtems_aio_request *current;
current = (rtems_aio_request *) node;
while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
4765a: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4765c: 670c beqs 4766a <rtems_aio_remove_req+0x20> <== NOT EXECUTED 4765e: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 47662: 6710 beqs 47674 <rtems_aio_remove_req+0x2a> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47664: 2452 moveal %a2@,%a2 <== NOT EXECUTED
rtems_chain_node *node = rtems_chain_first (chain);
rtems_aio_request *current;
current = (rtems_aio_request *) node;
while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
47666: b1ca cmpal %a2,%a0 <== NOT EXECUTED 47668: 66f4 bnes 4765e <rtems_aio_remove_req+0x14> <== NOT EXECUTED
current->aiocbp->return_value = -1;
free (current);
}
return AIO_CANCELED;
}
4766a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
node = rtems_chain_next (node);
current = (rtems_aio_request *) node;
}
if (rtems_chain_is_tail (chain, node))
return AIO_NOTCANCELED;
4766e: 7001 moveq #1,%d0 <== NOT EXECUTED
current->aiocbp->return_value = -1;
free (current);
}
return AIO_CANCELED;
}
47670: 4e5e unlk %fp <== NOT EXECUTED 47672: 4e75 rts <== NOT EXECUTED 47674: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47676: 4eb9 0004 9d60 jsr 49d60 <_Chain_Extract> <== NOT EXECUTED
if (rtems_chain_is_tail (chain, node))
return AIO_NOTCANCELED;
else
{
rtems_chain_extract (node);
current->aiocbp->error_code = ECANCELED;
4767c: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 47680: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED 47686: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
current->aiocbp->return_value = -1;
4768a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4768c: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
free (current);
47690: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47692: 4eb9 0004 3978 jsr 43978 <free> <== NOT EXECUTED
}
return AIO_CANCELED;
}
47698: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
current->aiocbp->error_code = ECANCELED;
current->aiocbp->return_value = -1;
free (current);
}
return AIO_CANCELED;
4769c: 508f addql #8,%sp <== NOT EXECUTED 4769e: 4280 clrl %d0 <== NOT EXECUTED
}
476a0: 4e5e unlk %fp <== NOT EXECUTED
00047216 <rtems_aio_search_fd>:
*
*/
rtems_aio_request_chain *
rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create)
{
47216: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4721a: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 4721e: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47222: 2453 moveal %a3@,%a2 <== NOT EXECUTED
{
rtems_aio_request_chain *r_chain;
rtems_chain_node *node;
node = rtems_chain_first (chain);
r_chain = (rtems_aio_request_chain *) node;
47224: 200a movel %a2,%d0 <== NOT EXECUTED
*
*/
rtems_aio_request_chain *
rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create)
{
47226: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
rtems_chain_node *node;
node = rtems_chain_first (chain);
r_chain = (rtems_aio_request_chain *) node;
while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) {
4722a: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED 4722e: b282 cmpl %d2,%d1 <== NOT EXECUTED 47230: 6c14 bges 47246 <rtems_aio_search_fd+0x30> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
47232: 41eb 0004 lea %a3@(4),%a0 <== NOT EXECUTED 47236: b1ca cmpal %a2,%a0 <== NOT EXECUTED 47238: 671e beqs 47258 <rtems_aio_search_fd+0x42> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4723a: 2452 moveal %a2@,%a2 <== NOT EXECUTED
node = rtems_chain_first (chain);
r_chain = (rtems_aio_request_chain *) node;
while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) {
node = rtems_chain_next (node);
r_chain = (rtems_aio_request_chain *) node;
4723c: 200a movel %a2,%d0 <== NOT EXECUTED
rtems_chain_node *node;
node = rtems_chain_first (chain);
r_chain = (rtems_aio_request_chain *) node;
while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) {
4723e: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED 47242: b481 cmpl %d1,%d2 <== NOT EXECUTED 47244: 6ef0 bgts 47236 <rtems_aio_search_fd+0x20> <== NOT EXECUTED
node = rtems_chain_next (node);
r_chain = (rtems_aio_request_chain *) node;
}
if (r_chain->fildes == fildes)
47246: b282 cmpl %d2,%d1 <== NOT EXECUTED 47248: 660e bnes 47258 <rtems_aio_search_fd+0x42> <== NOT EXECUTED
r_chain->new_fd = 0;
4724a: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
r_chain->new_fd = 1;
r_chain->fildes = fildes;
}
}
return r_chain;
}
4724e: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 47254: 4e5e unlk %fp <== NOT EXECUTED 47256: 4e75 rts <== NOT EXECUTED
}
if (r_chain->fildes == fildes)
r_chain->new_fd = 0;
else {
if (create == 0)
47258: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 4725c: 660c bnes 4726a <rtems_aio_search_fd+0x54> <== NOT EXECUTED
r_chain = NULL;
4725e: 4280 clrl %d0 <== NOT EXECUTED
r_chain->new_fd = 1;
r_chain->fildes = fildes;
}
}
return r_chain;
}
47260: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 47266: 4e5e unlk %fp <== NOT EXECUTED 47268: 4e75 rts <== NOT EXECUTED
r_chain->new_fd = 0;
else {
if (create == 0)
r_chain = NULL;
else {
r_chain = malloc (sizeof (rtems_aio_request_chain));
4726a: 4878 0024 pea 24 <OPER2+0x10> <== NOT EXECUTED 4726e: 4eb9 0004 3f84 jsr 43f84 <malloc> <== NOT EXECUTED
rtems_chain_initialize_empty (&r_chain->perfd);
if (rtems_chain_is_empty (chain))
47274: 588f addql #4,%sp <== NOT EXECUTED
r_chain->new_fd = 0;
else {
if (create == 0)
r_chain = NULL;
else {
r_chain = malloc (sizeof (rtems_aio_request_chain));
47276: 2840 moveal %d0,%a4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47278: 220c movel %a4,%d1 <== NOT EXECUTED 4727a: 5081 addql #8,%d1 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
4727c: 41ec 000c lea %a4@(12),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47280: 2941 0010 movel %d1,%a4@(16) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
47284: 220b movel %a3,%d1 <== NOT EXECUTED 47286: 5881 addql #4,%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
47288: 2948 0008 movel %a0,%a4@(8) <== NOT EXECUTED
head->next = tail;
head->previous = NULL;
4728c: 42ac 000c clrl %a4@(12) <== NOT EXECUTED
rtems_chain_initialize_empty (&r_chain->perfd);
if (rtems_chain_is_empty (chain))
47290: b293 cmpl %a3@,%d1 <== NOT EXECUTED 47292: 672a beqs 472be <rtems_aio_search_fd+0xa8> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_insert(
rtems_chain_node *after_node,
rtems_chain_node *the_node
)
{
_Chain_Insert( after_node, the_node );
47294: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47296: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 4729a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 4729e: 4eb9 0004 9dc4 jsr 49dc4 <_Chain_Insert> <== NOT EXECUTED 472a4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
rtems_chain_prepend (chain, &r_chain->next_fd);
else
rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd);
r_chain->new_fd = 1;
472a8: 7201 moveq #1,%d1 <== NOT EXECUTED 472aa: 508f addql #8,%sp <== NOT EXECUTED 472ac: 2941 0018 movel %d1,%a4@(24) <== NOT EXECUTED
r_chain->fildes = fildes;
472b0: 2942 0014 movel %d2,%a4@(20) <== NOT EXECUTED
}
}
return r_chain;
}
472b4: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED 472ba: 4e5e unlk %fp <== NOT EXECUTED 472bc: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert(_Chain_Head(the_chain), the_node);
472be: 2f0c movel %a4,%sp@- <== NOT EXECUTED 472c0: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 472c4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 472c6: 4eb9 0004 9dc4 jsr 49dc4 <_Chain_Insert> <== NOT EXECUTED 472cc: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
if (rtems_chain_is_empty (chain))
rtems_chain_prepend (chain, &r_chain->next_fd);
else
rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd);
r_chain->new_fd = 1;
472d0: 7201 moveq #1,%d1 <== NOT EXECUTED 472d2: 508f addql #8,%sp <== NOT EXECUTED 472d4: 2941 0018 movel %d1,%a4@(24) <== NOT EXECUTED
r_chain->fildes = fildes;
472d8: 2942 0014 movel %d2,%a4@(20) <== NOT EXECUTED 472dc: 60d6 bras 472b4 <rtems_aio_search_fd+0x9e> <== 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
0004adbc <rtems_assoc_local_by_remote>:
uint32_t rtems_assoc_local_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4adbc: 4e56 0000 linkw %fp,#0
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
4adc0: 2f2e 000c movel %fp@(12),%sp@- 4adc4: 2f2e 0008 movel %fp@(8),%sp@- 4adc8: 4eb9 0004 ae84 jsr 4ae84 <rtems_assoc_ptr_by_remote>
if (nap)
4adce: 508f addql #8,%sp 4add0: 4a80 tstl %d0
4add2: 670a beqs 4adde <rtems_assoc_local_by_remote+0x22><== NEVER TAKEN
return nap->local_value;
4add4: 2040 moveal %d0,%a0
return 0;
}
4add6: 4e5e unlk %fp
{
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->local_value;
4add8: 2028 0004 movel %a0@(4),%d0
return 0;
}
4addc: 4e75 rts
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->local_value;
return 0;
4adde: 4280 clrl %d0 <== NOT EXECUTED
}
4ade0: 4e5e unlk %fp <== NOT EXECUTED
0004df6c <rtems_assoc_local_by_remote_bitfield>:
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4df6c: 4e56 ffe8 linkw %fp,#-24 4df70: 48d7 047c moveml %d2-%d6/%a2,%sp@ 4df74: 2c2e 0008 movel %fp@(8),%d6 4df78: 7620 moveq #32,%d3
uint32_t b; uint32_t local_value = 0;
4df7a: 4285 clrl %d5
for (b = 1; b; b <<= 1) {
4df7c: 7401 moveq #1,%d2
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4df7e: 45f9 0004 adbc lea 4adbc <rtems_assoc_local_by_remote>,%a2
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4df84: 282e 000c movel %fp@(12),%d4
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
if (b & remote_value)
4df88: 2002 movel %d2,%d0
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df8a: 5383 subql #1,%d3
if (b & remote_value)
4df8c: c084 andl %d4,%d0
4df8e: 6612 bnes 4dfa2 <rtems_assoc_local_by_remote_bitfield+0x36>
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df90: d482 addl %d2,%d2 4df92: 4a83 tstl %d3
4df94: 66f2 bnes 4df88 <rtems_assoc_local_by_remote_bitfield+0x1c>
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
}
return local_value;
}
4df96: 2005 movel %d5,%d0 4df98: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 4df9e: 4e5e unlk %fp 4dfa0: 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);
4dfa2: 2f02 movel %d2,%sp@-
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4dfa4: d482 addl %d2,%d2
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4dfa6: 2f06 movel %d6,%sp@- 4dfa8: 4e92 jsr %a2@ 4dfaa: 508f addql #8,%sp 4dfac: 8a80 orl %d0,%d5
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4dfae: 4a83 tstl %d3
4dfb0: 66d6 bnes 4df88 <rtems_assoc_local_by_remote_bitfield+0x1c><== ALWAYS TAKEN
4dfb2: 60e2 bras 4df96 <rtems_assoc_local_by_remote_bitfield+0x2a><== NOT EXECUTED
0004dfb4 <rtems_assoc_name_bad>:
uint32_t bad_value
#else
uint32_t bad_value __attribute((unused))
#endif
)
{
4dfb4: 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;
}
4dfb8: 203c 0005 e648 movel #386632,%d0 <== NOT EXECUTED 4dfbe: 4e5e unlk %fp <== NOT EXECUTED
...
0004ade4 <rtems_assoc_name_by_local>:
const char *rtems_assoc_name_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4ade4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ade8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4adea: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
4adee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4adf0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4adf4: 4eb9 0004 ae1c jsr 4ae1c <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if (nap)
4adfa: 508f addql #8,%sp <== NOT EXECUTED 4adfc: 4a80 tstl %d0 <== NOT EXECUTED 4adfe: 670c beqs 4ae0c <rtems_assoc_name_by_local+0x28> <== NOT EXECUTED
return nap->name;
return rtems_assoc_name_bad(local_value);
}
4ae00: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ae02: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4ae06: 4e5e unlk %fp <== NOT EXECUTED 4ae08: 2010 movel %a0@,%d0 <== NOT EXECUTED 4ae0a: 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);
4ae0c: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
4ae10: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4ae14: 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);
4ae16: 4ef9 0004 dfb4 jmp 4dfb4 <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 0604 lea 50604 <strcat>,%a3 <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43560: 4bf9 0005 0bc8 lea 50bc8 <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 bd80 jmp 4bd80 <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 0604 lea 50604 <strcat>,%a3 <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43614: 4bf9 0005 0bc8 lea 50bc8 <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
...
0004ae1c <rtems_assoc_ptr_by_local>:
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4ae1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ae20: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ae22: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4ae26: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ae28: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4ae2c: 2012 movel %a2@,%d0 <== NOT EXECUTED 4ae2e: 6742 beqs 4ae72 <rtems_assoc_ptr_by_local+0x56> <== NOT EXECUTED 4ae30: 4879 0005 d7c2 pea 5d7c2 <IMFS_memfile_handlers+0x38> <== NOT EXECUTED 4ae36: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4ae38: 4eb9 0004 f86c jsr 4f86c <strcmp> <== NOT EXECUTED 4ae3e: 508f addql #8,%sp <== NOT EXECUTED 4ae40: 4a80 tstl %d0 <== NOT EXECUTED 4ae42: 662a bnes 4ae6e <rtems_assoc_ptr_by_local+0x52> <== NOT EXECUTED
default_ap = ap++;
4ae44: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
4ae48: 4a90 tstl %a0@ <== NOT EXECUTED 4ae4a: 6714 beqs 4ae60 <rtems_assoc_ptr_by_local+0x44> <== NOT EXECUTED 4ae4c: 200a movel %a2,%d0 <== NOT EXECUTED 4ae4e: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (ap->local_value == local_value)
4ae50: b4aa 0004 cmpl %a2@(4),%d2 <== NOT EXECUTED 4ae54: 670a beqs 4ae60 <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++)
4ae56: 45ea 000c lea %a2@(12),%a2 <== NOT EXECUTED 4ae5a: 4a92 tstl %a2@ <== NOT EXECUTED 4ae5c: 66f2 bnes 4ae50 <rtems_assoc_ptr_by_local+0x34> <== NOT EXECUTED 4ae5e: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4ae60: 200a movel %a2,%d0 <== NOT EXECUTED 4ae62: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4ae66: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ae6a: 4e5e unlk %fp <== NOT EXECUTED 4ae6c: 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;
4ae6e: 4280 clrl %d0 <== NOT EXECUTED 4ae70: 60de bras 4ae50 <rtems_assoc_ptr_by_local+0x34> <== NOT EXECUTED 4ae72: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4ae74: 200a movel %a2,%d0 <== NOT EXECUTED 4ae76: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4ae7a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ae7e: 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 df33 pea 5df33 <_rodata_start+0x603> <== NOT EXECUTED 4372e: 47f9 0005 0670 lea 50670 <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
...
0004ae84 <rtems_assoc_ptr_by_remote>:
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4ae84: 4e56 0000 linkw %fp,#0 4ae88: 2f0a movel %a2,%sp@- 4ae8a: 246e 0008 moveal %fp@(8),%a2 4ae8e: 2f02 movel %d2,%sp@- 4ae90: 242e 000c movel %fp@(12),%d2
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4ae94: 2012 movel %a2@,%d0
4ae96: 6742 beqs 4aeda <rtems_assoc_ptr_by_remote+0x56> <== NEVER TAKEN
4ae98: 4879 0005 d7c2 pea 5d7c2 <IMFS_memfile_handlers+0x38> 4ae9e: 2f00 movel %d0,%sp@- 4aea0: 4eb9 0004 f86c jsr 4f86c <strcmp> 4aea6: 508f addql #8,%sp 4aea8: 4a80 tstl %d0
4aeaa: 662a bnes 4aed6 <rtems_assoc_ptr_by_remote+0x52> <== ALWAYS TAKEN
default_ap = ap++;
4aeac: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
4aeb0: 4a90 tstl %a0@ <== NOT EXECUTED 4aeb2: 6714 beqs 4aec8 <rtems_assoc_ptr_by_remote+0x44> <== NOT EXECUTED 4aeb4: 200a movel %a2,%d0 <== NOT EXECUTED 4aeb6: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (ap->remote_value == remote_value)
4aeb8: b4aa 0008 cmpl %a2@(8),%d2
4aebc: 670a beqs 4aec8 <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++)
4aebe: 45ea 000c lea %a2@(12),%a2 4aec2: 4a92 tstl %a2@
4aec4: 66f2 bnes 4aeb8 <rtems_assoc_ptr_by_remote+0x34> <== ALWAYS TAKEN
4aec6: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4aec8: 200a movel %a2,%d0 4aeca: 242e fff8 movel %fp@(-8),%d2 4aece: 246e fffc moveal %fp@(-4),%a2 4aed2: 4e5e unlk %fp 4aed4: 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;
4aed6: 4280 clrl %d0 4aed8: 60de bras 4aeb8 <rtems_assoc_ptr_by_remote+0x34>
4aeda: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4aedc: 200a movel %a2,%d0 <== NOT EXECUTED 4aede: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4aee2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aee6: 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
0004edec <rtems_barrier_create>:
rtems_name name,
rtems_attribute attribute_set,
uint32_t maximum_waiters,
rtems_id *id
)
{
4edec: 4e56 ffe8 linkw %fp,#-24 4edf0: 202e 0010 movel %fp@(16),%d0 4edf4: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 4edf8: 242e 0008 movel %fp@(8),%d2 4edfc: 262e 000c movel %fp@(12),%d3 4ee00: 246e 0014 moveal %fp@(20),%a2
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
4ee04: 4a82 tstl %d2
4ee06: 677a beqs 4ee82 <rtems_barrier_create+0x96> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
4ee08: 4a8a tstl %a2 4ee0a: 6700 00cc beqw 4eed8 <rtems_barrier_create+0xec>
return RTEMS_INVALID_ADDRESS;
/* Initialize core barrier attributes */
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
4ee0e: 0803 0004 btst #4,%d3
4ee12: 677a beqs 4ee8e <rtems_barrier_create+0xa2> <== NEVER TAKEN
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
4ee14: 42ae fff8 clrl %fp@(-8)
if ( maximum_waiters == 0 )
4ee18: 4a80 tstl %d0 4ee1a: 6700 00b0 beqw 4eecc <rtems_barrier_create+0xe0> 4ee1e: 2239 0006 26bc movel 626bc <_Thread_Dispatch_disable_level>,%d1 4ee24: 5281 addql #1,%d1
return RTEMS_INVALID_NUMBER;
} else
the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE;
the_attributes.maximum_count = maximum_waiters;
4ee26: 2d40 fffc movel %d0,%fp@(-4) 4ee2a: 23c1 0006 26bc movel %d1,626bc <_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 );
4ee30: 4879 0006 2f1c pea 62f1c <_Barrier_Information> 4ee36: 4eb9 0004 9c60 jsr 49c60 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4ee3c: 588f addql #4,%sp 4ee3e: 2640 moveal %d0,%a3 4ee40: 4a80 tstl %d0
4ee42: 6776 beqs 4eeba <rtems_barrier_create+0xce> <== NEVER TAKEN
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_barrier->attribute_set = attribute_set;
4ee44: 2743 0010 movel %d3,%a3@(16)
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
4ee48: 486e fff8 pea %fp@(-8) 4ee4c: 486b 0014 pea %a3@(20) 4ee50: 4eb9 0004 f69c jsr 4f69c <_CORE_barrier_Initialize>
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4ee56: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee5a: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee5c: 2079 0006 2f34 moveal 62f34 <_Barrier_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee62: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee64: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4ee68: 2742 000c movel %d2,%a3@(12)
&_Barrier_Information,
&the_barrier->Object,
(Objects_Name) name
);
*id = the_barrier->Object.id;
4ee6c: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
4ee6e: 4eb9 0004 ac82 jsr 4ac82 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4ee74: 508f addql #8,%sp 4ee76: 4280 clrl %d0
}
4ee78: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 4ee7e: 4e5e unlk %fp 4ee80: 4e75 rts
{
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4ee82: 7003 moveq #3,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee84: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4ee8a: 4e5e unlk %fp <== NOT EXECUTED 4ee8c: 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;
4ee8e: 7201 moveq #1,%d1 <== NOT EXECUTED 4ee90: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED 4ee94: 2239 0006 26bc movel 626bc <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 4ee9a: 5281 addql #1,%d1 <== NOT EXECUTED
the_attributes.maximum_count = maximum_waiters;
4ee9c: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 4eea0: 23c1 0006 26bc movel %d1,626bc <_Thread_Dispatch_disable_level><== NOT EXECUTED 4eea6: 4879 0006 2f1c pea 62f1c <_Barrier_Information> <== NOT EXECUTED 4eeac: 4eb9 0004 9c60 jsr 49c60 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4eeb2: 588f addql #4,%sp <== NOT EXECUTED 4eeb4: 2640 moveal %d0,%a3 <== NOT EXECUTED 4eeb6: 4a80 tstl %d0 <== NOT EXECUTED 4eeb8: 668a bnes 4ee44 <rtems_barrier_create+0x58> <== NOT EXECUTED
_Thread_Enable_dispatch();
4eeba: 4eb9 0004 ac82 jsr 4ac82 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4eec0: 7005 moveq #5,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4eec2: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4eec8: 4e5e unlk %fp <== NOT EXECUTED 4eeca: 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;
4eecc: 700a moveq #10,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4eece: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4eed4: 4e5e unlk %fp <== NOT EXECUTED 4eed6: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4eed8: 7009 moveq #9,%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
0004eee4 <rtems_barrier_delete>:
*/
rtems_status_code rtems_barrier_delete(
rtems_id id
)
{
4eee4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4eee8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4eeea: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4eeee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4eef2: 4879 0006 2f1c pea 62f1c <_Barrier_Information> <== NOT EXECUTED 4eef8: 4eb9 0004 a120 jsr 4a120 <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4eefe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ef02: 2440 moveal %d0,%a2 <== NOT EXECUTED 4ef04: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ef08: 6640 bnes 4ef4a <rtems_barrier_delete+0x66> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Flush(
4ef0a: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED 4ef0e: 42a7 clrl %sp@- <== NOT EXECUTED 4ef10: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4ef14: 4eb9 0004 b3d8 jsr 4b3d8 <_Thread_queue_Flush> <== NOT EXECUTED
&the_barrier->Barrier,
NULL,
CORE_BARRIER_WAS_DELETED
);
_Objects_Close( &_Barrier_Information, &the_barrier->Object );
4ef1a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ef1c: 4879 0006 2f1c pea 62f1c <_Barrier_Information> <== NOT EXECUTED 4ef22: 4eb9 0004 9cf0 jsr 49cf0 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Barrier_Free (
Barrier_Control *the_barrier
)
{
_Objects_Free( &_Barrier_Information, &the_barrier->Object );
4ef28: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ef2a: 4879 0006 2f1c pea 62f1c <_Barrier_Information> <== NOT EXECUTED 4ef30: 4eb9 0004 9fb4 jsr 49fb4 <_Objects_Free> <== NOT EXECUTED
_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4ef36: 4eb9 0004 ac82 jsr 4ac82 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef3c: 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;
4ef40: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4ef44: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef46: 4e5e unlk %fp <== NOT EXECUTED 4ef48: 4e75 rts <== NOT EXECUTED 4ef4a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ef4e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef50: 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 19e8 pea 619e8 <_Barrier_Information> <== NOT EXECUTED 4735c: 4eb9 0004 9768 jsr 49768 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
47362: 41f9 0005 f2ee lea 5f2ee <_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
0004ef84 <rtems_barrier_release>:
rtems_status_code rtems_barrier_release(
rtems_id id,
uint32_t *released
)
{
4ef84: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4ef88: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ef8a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4ef8e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef90: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
4ef94: 4a8a tstl %a2 <== NOT EXECUTED 4ef96: 6754 beqs 4efec <rtems_barrier_release+0x68> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4ef98: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ef9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef9e: 4879 0006 2f1c pea 62f1c <_Barrier_Information> <== NOT EXECUTED 4efa4: 4eb9 0004 a120 jsr 4a120 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4efaa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4efae: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4efb2: 662a bnes 4efde <rtems_barrier_release+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
*released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL );
4efb4: 42a7 clrl %sp@- <== NOT EXECUTED 4efb6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4efb8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4efba: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4efbe: 4eb9 0004 f6d8 jsr 4f6d8 <_CORE_barrier_Release> <== NOT EXECUTED 4efc4: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4efc6: 4eb9 0004 ac82 jsr 4ac82 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4efcc: 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;
4efd0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4efd4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4efd6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4efda: 4e5e unlk %fp <== NOT EXECUTED 4efdc: 4e75 rts <== NOT EXECUTED 4efde: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4efe2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4efe4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4efe8: 4e5e unlk %fp <== NOT EXECUTED 4efea: 4e75 rts <== NOT EXECUTED 4efec: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
{
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
return RTEMS_INVALID_ADDRESS;
4eff0: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4eff2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4eff6: 4e5e unlk %fp <== NOT EXECUTED
...
0004effc <rtems_barrier_wait>:
rtems_status_code rtems_barrier_wait(
rtems_id id,
rtems_interval timeout
)
{
4effc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f000: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f002: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f006: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4f00a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f00c: 4879 0006 2f1c pea 62f1c <_Barrier_Information> <== NOT EXECUTED 4f012: 4eb9 0004 a120 jsr 4a120 <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4f018: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4f01c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f020: 663a bnes 4f05c <rtems_barrier_wait+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
4f022: 42a7 clrl %sp@- <== NOT EXECUTED 4f024: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4f028: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f02a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 4f02e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f030: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4f034: 4eb9 0004 f714 jsr 4f714 <_CORE_barrier_Wait> <== NOT EXECUTED
id,
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
4f03a: 4eb9 0004 ac82 jsr 4ac82 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4f040: 2079 0006 2b4a moveal 62b4a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4f046: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4f04a: 4eb9 0005 0b60 jsr 50b60 <_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f050: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4f054: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f058: 4e5e unlk %fp <== NOT EXECUTED 4f05a: 4e75 rts <== NOT EXECUTED 4f05c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f060: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f062: 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 09f0 movel 609f0 <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 09f0 movel 609f0 <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 0942 jsr 50942 <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 04bc jsr 504bc <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
00047030 <rtems_chain_append_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
47030: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47034: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47036: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 4703a: 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 );
4703c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47040: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47044: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 47048: 4eb9 0004 75f4 jsr 475f4 <_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 ) {
4704e: 508f addql #8,%sp <== NOT EXECUTED 47050: 4a00 tstb %d0 <== NOT EXECUTED 47052: 660e bnes 47062 <rtems_chain_append_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
47054: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47058: 4280 clrl %d0 <== NOT EXECUTED 4705a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4705e: 4e5e unlk %fp <== NOT EXECUTED 47060: 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 );
47062: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
47066: 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 );
4706a: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
4706e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47072: 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 );
47074: 4ef9 0004 6560 jmp 46560 <rtems_event_send> <== NOT EXECUTED
...
0004707c <rtems_chain_get_with_notification>:
rtems_chain_control *chain,
rtems_id task,
rtems_event_set events,
rtems_chain_node **node
)
{
4707c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47080: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47082: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 47086: 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 );
47088: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4708c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47090: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 47094: 4eb9 0004 7694 jsr 47694 <_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 ) {
4709a: 508f addql #8,%sp <== NOT EXECUTED 4709c: 4a00 tstb %d0 <== NOT EXECUTED 4709e: 660e bnes 470ae <rtems_chain_get_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
470a0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 470a4: 4280 clrl %d0 <== NOT EXECUTED 470a6: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 470aa: 4e5e unlk %fp <== NOT EXECUTED 470ac: 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 );
470ae: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
470b2: 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 );
470b6: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
470ba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 470be: 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 );
470c0: 4ef9 0004 6560 jmp 46560 <rtems_event_send> <== NOT EXECUTED
...
000470c8 <rtems_chain_get_with_wait>:
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
470c8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 470cc: 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(
470d0: 2c0e movel %fp,%d6 <== NOT EXECUTED 470d2: 45f9 0004 76e4 lea 476e4 <_Chain_Get>,%a2 <== NOT EXECUTED 470d8: 5986 subql #4,%d6 <== NOT EXECUTED 470da: 47f9 0004 63b8 lea 463b8 <rtems_event_receive>,%a3 <== NOT EXECUTED
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
470e0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 470e4: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 470e8: 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 );
470ec: 2f03 movel %d3,%sp@- <== NOT EXECUTED 470ee: 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
470f0: 588f addql #4,%sp <== NOT EXECUTED 470f2: 2400 movel %d0,%d2 <== NOT EXECUTED 470f4: 6622 bnes 47118 <rtems_chain_get_with_wait+0x50> <== NOT EXECUTED
) {
rtems_event_set out;
sc = rtems_event_receive(
470f6: 2f06 movel %d6,%sp@- <== NOT EXECUTED 470f8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 470fa: 42a7 clrl %sp@- <== NOT EXECUTED 470fc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 470fe: 4e93 jsr %a3@ <== NOT EXECUTED
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
47100: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47104: 4a80 tstl %d0 <== NOT EXECUTED 47106: 67e4 beqs 470ec <rtems_chain_get_with_wait+0x24> <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
47108: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4710c: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
4710e: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED 47114: 4e5e unlk %fp <== NOT EXECUTED 47116: 4e75 rts <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
47118: 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
4711c: 4280 clrl %d0 <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
4711e: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
47120: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED 47126: 4e5e unlk %fp <== NOT EXECUTED
...
0004712c <rtems_chain_prepend_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
4712c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47130: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47132: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 47136: 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 );
47138: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4713c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47140: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 47144: 4eb9 0004 7750 jsr 47750 <_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) {
4714a: 508f addql #8,%sp <== NOT EXECUTED 4714c: 4a00 tstb %d0 <== NOT EXECUTED 4714e: 660e bnes 4715e <rtems_chain_prepend_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
47150: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47154: 4280 clrl %d0 <== NOT EXECUTED 47156: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4715a: 4e5e unlk %fp <== NOT EXECUTED 4715c: 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 );
4715e: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
47162: 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 );
47166: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
4716a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4716e: 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 );
47170: 4ef9 0004 6560 jmp 46560 <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 a298 tstb 6a298 <_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 a332 movel 6a332 <_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 e450 lea 5e450 <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 fe22 movel 5fe22 <_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 a298 tstb 6a298 <_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 8c04 jsr 48c04 <_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 0c20 lea 60c20 <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 eb8c tstb 7eb8c <_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 a5c8 jsr 5a5c8 <_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 77d0 jsr 477d0 <_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 0c20 lea 60c20 <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 a288 movel 6a288 <_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 a288 movel %d1,6a288 <_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 8d6c jsr 48d6c <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
47214: 4eb9 0004 a442 jsr 4a442 <_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 fe68 movel %d0,5fe68 <_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 7434 jsr 47434 <_TOD_Tickle_ticks>
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void )
{
_Watchdog_Tickle( &_Watchdog_Ticks_chain );
45d8a: 4879 0005 fdd8 pea 5fdd8 <_Watchdog_Ticks_chain> <== NOT EXECUTED 45d90: 4eb9 0004 9abc jsr 49abc <_Watchdog_Tickle> <== NOT EXECUTED
_Watchdog_Tickle_ticks();
_Thread_Tickle_timeslice();
45d96: 4eb9 0004 94fc jsr 494fc <_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 0192 moveb 60192 <_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 fcf8 movel 5fcf8 <_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 882c jsr 4882c <_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 a248 lea 6a248 <_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 b0c8 lea 4b0c8 <_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 8ca0 jsr 48ca0 <_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 a784 pea 6a784 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED 43264: 4eb9 0004 b1ac jsr 4b1ac <_Timespec_Subtract> <== NOT EXECUTED
}
}
}
#endif
(*print)(
4326a: 4879 0005 f34e pea 5f34e <IntUartPollCallbacks.6368+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_POSIX_API) || 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 f4c0 pea 5f4c0 <IntUartPollCallbacks.6368+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 a750 moveal 6a750 <_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 f4d3 pea 5f4d3 <IntUartPollCallbacks.6368+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 a254 cmpal #434772,%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 f4eb pea 5f4eb <IntUartPollCallbacks.6368+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 a354 pea 6a354 <_Thread_Time_of_last_context_switch><== NOT EXECUTED 4337a: 4eb9 0004 b1ac jsr 4b1ac <_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 b080 jsr 4b080 <_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 f4d3 pea 5f4d3 <IntUartPollCallbacks.6368+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 a784 pea 6a784 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED 433fe: 4eb9 0004 8ca0 jsr 48ca0 <_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 a784 movel 6a784 <CPU_usage_Uptime_at_last_reset>,%d0<== NOT EXECUTED 4340e: 2239 0006 a788 movel 6a788 <CPU_usage_Uptime_at_last_reset+0x4>,%d1<== NOT EXECUTED 43414: 23c0 0006 a354 movel %d0,6a354 <_Thread_Time_of_last_context_switch><== NOT EXECUTED 4341a: 23c1 0006 a358 movel %d1,6a358 <_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 92f4 jsr 492f4 <rtems_iterate_over_all_threads> <== NOT EXECUTED 43426: 508f addql #8,%sp <== NOT EXECUTED
}
43428: 4e5e unlk %fp <== NOT EXECUTED
0004c3b8 <rtems_debug_disable>:
* rtems_debug_disable
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
4c3b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level &= ~to_be_disabled;
4c3bc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c3c0: 4680 notl %d0 <== NOT EXECUTED
}
4c3c2: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
_Debug_Level &= ~to_be_disabled;
4c3c4: c1b9 0005 fdc0 andl %d0,5fdc0 <_Debug_Level> <== NOT EXECUTED
}
0004c3a6 <rtems_debug_enable>:
* rtems_debug_enable
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
4c3a6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level |= to_be_enabled;
4c3aa: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4c3ae: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
_Debug_Level |= to_be_enabled;
4c3b0: 81b9 0005 fdc0 orl %d0,5fdc0 <_Debug_Level> <== NOT EXECUTED
}
0004c3cc <rtems_debug_is_enabled>:
* rtems_debug_is_enabled
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
4c3cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (_Debug_Level & level) ? true : false;
4c3d0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4c3d4: 4e5e unlk %fp <== NOT EXECUTED
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
return (_Debug_Level & level) ? true : false;
4c3d6: c0b9 0005 fdc0 andl 5fdc0 <_Debug_Level>,%d0 <== NOT EXECUTED 4c3dc: 56c0 sne %d0 <== NOT EXECUTED
}
4c3de: 4480 negl %d0 <== NOT EXECUTED
...
0004e888 <rtems_deviceio_errno>:
[RTEMS_IO_ERROR] = EIO,
[RTEMS_PROXY_BLOCKING] = EIO
};
int rtems_deviceio_errno(rtems_status_code sc)
{
4e888: 4e56 0000 linkw %fp,#0 4e88c: 202e 0008 movel %fp@(8),%d0 4e890: 2f02 movel %d2,%sp@-
if (sc == RTEMS_SUCCESSFUL) {
4e892: 4a80 tstl %d0
4e894: 660a bnes 4e8a0 <rtems_deviceio_errno+0x18> <== NEVER TAKEN
errno = eno;
return -1;
}
}
4e896: 242e fffc movel %fp@(-4),%d2
};
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
4e89a: 4280 clrl %d0
errno = eno;
return -1;
}
}
4e89c: 4e5e unlk %fp 4e89e: 4e75 rts
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
4e8a0: 721c moveq #28,%d1 <== NOT EXECUTED 4e8a2: b280 cmpl %d0,%d1 <== NOT EXECUTED 4e8a4: 651e bcss 4e8c4 <rtems_deviceio_errno+0x3c> <== NOT EXECUTED
eno = status_code_to_errno [sc];
4e8a6: 41f9 0005 da20 lea 5da20 <status_code_to_errno>,%a0 <== NOT EXECUTED 4e8ac: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2 <== NOT EXECUTED
}
errno = eno;
4e8b0: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4e8b6: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4e8b8: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e8ba: 2082 movel %d2,%a0@ <== NOT EXECUTED
return -1;
}
}
4e8bc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4e8c0: 4e5e unlk %fp <== NOT EXECUTED 4e8c2: 4e75 rts <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e8c4: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
4e8ca: 7416 moveq #22,%d2 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e8cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4e8ce: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e8d0: 2082 movel %d2,%a0@ <== NOT EXECUTED 4e8d2: 60e8 bras 4e8bc <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 cf9e pea 5cf9e <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 e96c jsr 4e96c <__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 cfb3 pea 5cfb3 <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 e93c jsr 4e93c <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 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a1 45dd6: 2269 00fe moveal %a1@(254),%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 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d1 45dea: 5281 addql #1,%d1 45dec: 23c1 0005 fcf8 movel %d1,5fcf8 <_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 8996 jsr 48996 <_Thread_Enable_dispatch>
return( _Thread_Executing->Wait.return_code );
45e0a: 2079 0006 0186 moveal 60186 <_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 89bc jsr 489bc <_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 00fe moveal %a1@(254),%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 8996 jsr 48996 <_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
...
00048378 <rtems_extension_create>:
rtems_status_code rtems_extension_create(
rtems_name name,
const rtems_extensions_table *extension_table,
rtems_id *id
)
{
48378: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4837c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 48380: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 48384: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
Extension_Control *the_extension;
if ( !id )
48388: 4a8a tstl %a2 <== NOT EXECUTED 4838a: 6700 00a0 beqw 4842c <rtems_extension_create+0xb4> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
4838e: 4a82 tstl %d2 <== NOT EXECUTED 48390: 660c bnes 4839e <rtems_extension_create+0x26> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
48392: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48394: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4839a: 4e5e unlk %fp <== NOT EXECUTED 4839c: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4839e: 2039 0006 a288 movel 6a288 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 483a4: 5280 addql #1,%d0 <== NOT EXECUTED 483a6: 23c0 0006 a288 movel %d0,6a288 <_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 );
483ac: 4879 0006 a414 pea 6a414 <_Extension_Information> <== NOT EXECUTED 483b2: 4eb9 0004 934c jsr 4934c <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
483b8: 588f addql #4,%sp <== NOT EXECUTED 483ba: 2640 moveal %d0,%a3 <== NOT EXECUTED 483bc: 4a80 tstl %d0 <== NOT EXECUTED 483be: 675a beqs 4841a <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;
483c0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 483c4: 2758 0024 movel %a0@+,%a3@(36) <== NOT EXECUTED 483c8: 2758 0028 movel %a0@+,%a3@(40) <== NOT EXECUTED 483cc: 2758 002c movel %a0@+,%a3@(44) <== NOT EXECUTED 483d0: 2758 0030 movel %a0@+,%a3@(48) <== NOT EXECUTED 483d4: 2758 0034 movel %a0@+,%a3@(52) <== NOT EXECUTED 483d8: 2758 0038 movel %a0@+,%a3@(56) <== NOT EXECUTED 483dc: 2758 003c movel %a0@+,%a3@(60) <== NOT EXECUTED 483e0: 2750 0040 movel %a0@,%a3@(64) <== NOT EXECUTED
_User_extensions_Add_set( extension );
483e4: 486b 0010 pea %a3@(16) <== NOT EXECUTED 483e8: 4eb9 0004 b1fc jsr 4b1fc <_User_extensions_Add_set> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
483ee: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483f2: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483f4: 2079 0006 a42c moveal 6a42c <_Extension_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483fa: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483fc: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
48400: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Extension_Information,
&the_extension->Object,
(Objects_Name) name
);
*id = the_extension->Object.id;
48404: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
48406: 4eb9 0004 a442 jsr 4a442 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4840c: 588f addql #4,%sp <== NOT EXECUTED 4840e: 4280 clrl %d0 <== NOT EXECUTED
}
48410: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 48416: 4e5e unlk %fp <== NOT EXECUTED 48418: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
_Thread_Enable_dispatch();
4841a: 4eb9 0004 a442 jsr 4a442 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
48420: 7005 moveq #5,%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 4842a: 4e75 rts <== NOT EXECUTED
)
{
Extension_Control *the_extension;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4842c: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4842e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 48434: 4e5e unlk %fp <== NOT EXECUTED
00048220 <rtems_extension_delete>:
#include <rtems/extension.h>
rtems_status_code rtems_extension_delete(
rtems_id id
)
{
48220: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48224: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Extension_Control *)
_Objects_Get( &_Extension_Information, id, location );
48226: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4822a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4822e: 4879 0006 9d64 pea 69d64 <_Extension_Information> <== NOT EXECUTED 48234: 4eb9 0004 956c jsr 4956c <_Objects_Get> <== NOT EXECUTED
Extension_Control *the_extension;
Objects_Locations location;
the_extension = _Extension_Get( id, &location );
switch ( location ) {
4823a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4823e: 2440 moveal %d0,%a2 <== NOT EXECUTED 48240: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48244: 663a bnes 48280 <rtems_extension_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_User_extensions_Remove_set( &the_extension->Extension );
48246: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4824a: 4eb9 0004 ae7c jsr 4ae7c <_User_extensions_Remove_set> <== NOT EXECUTED
_Objects_Close( &_Extension_Information, &the_extension->Object );
48250: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48252: 4879 0006 9d64 pea 69d64 <_Extension_Information> <== NOT EXECUTED 48258: 4eb9 0004 913c jsr 4913c <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Extension_Free (
Extension_Control *the_extension
)
{
_Objects_Free( &_Extension_Information, &the_extension->Object );
4825e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48260: 4879 0006 9d64 pea 69d64 <_Extension_Information> <== NOT EXECUTED 48266: 4eb9 0004 9400 jsr 49400 <_Objects_Free> <== NOT EXECUTED
_Extension_Free( the_extension );
_Thread_Enable_dispatch();
4826c: 4eb9 0004 a09e jsr 4a09e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48272: 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;
48276: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4827a: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4827c: 4e5e unlk %fp <== NOT EXECUTED 4827e: 4e75 rts <== NOT EXECUTED 48280: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48284: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48286: 4e5e unlk %fp <== NOT EXECUTED
...
0004931c <rtems_extension_ident>:
rtems_status_code rtems_extension_ident(
rtems_name name,
rtems_id *id
)
{
4931c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
49320: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49324: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4932a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4932e: 4879 0006 3624 pea 63624 <_Extension_Information> <== NOT EXECUTED 49334: 4eb9 0004 a740 jsr 4a740 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
4933a: 41f9 0006 0a8a lea 60a8a <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
49340: 4e5e unlk %fp <== NOT EXECUTED 49342: 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 fdc4 jsr 4fdc4 <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
0004b430 <rtems_filesystem_get_mount_handler>:
rtems_filesystem_fsmount_me_t
rtems_filesystem_get_mount_handler(
const char *type
)
{
4b430: 4e56 fff8 linkw %fp,#-8 4b434: 202e 0008 movel %fp@(8),%d0
find_arg fa = {
4b438: 42ae fffc clrl %fp@(-4) 4b43c: 2d40 fff8 movel %d0,%fp@(-8)
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4b440: 6718 beqs 4b45a <rtems_filesystem_get_mount_handler+0x2a><== NEVER TAKEN
rtems_filesystem_iterate( find_handler, &fa );
4b442: 486e fff8 pea %fp@(-8) 4b446: 487a fefc pea %pc@(4b344 <find_handler>) 4b44a: 4eb9 0004 b386 jsr 4b386 <rtems_filesystem_iterate> 4b450: 202e fffc movel %fp@(-4),%d0 4b454: 508f addql #8,%sp
}
return fa.mount_h;
}
4b456: 4e5e unlk %fp 4b458: 4e75 rts
find_arg fa = {
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4b45a: 4280 clrl %d0 <== NOT EXECUTED
rtems_filesystem_iterate( find_handler, &fa );
}
return fa.mount_h;
}
4b45c: 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 e5b0 moveal 5e5b0 <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 e5b0 moveal 5e5b0 <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
0004b5f8 <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)
{
4b5f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b5fc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b600: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b602: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (rtems_filesystem_is_separator(path[0])) {
4b606: 1010 moveb %a0@,%d0 <== NOT EXECUTED 4b608: 49c0 extbl %d0 <== NOT EXECUTED 4b60a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b60c: 4eb9 0004 3c28 jsr 43c28 <rtems_filesystem_is_separator> <== NOT EXECUTED 4b612: 588f addql #4,%sp <== NOT EXECUTED 4b614: 4a80 tstl %d0 <== NOT EXECUTED 4b616: 660a bnes 4b622 <rtems_filesystem_get_sym_start_loc+0x2a><== NOT EXECUTED
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*index = 0;
4b618: 4292 clrl %a2@ <== NOT EXECUTED
}
}
4b61a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b61e: 4e5e unlk %fp <== NOT EXECUTED 4b620: 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;
4b622: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
*index = 1;
4b626: 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;
4b628: 2279 0005 e5b0 moveal 5e5b0 <rtems_current_user_env>,%a1 <== NOT EXECUTED 4b62e: 20e9 0018 movel %a1@(24),%a0@+ <== NOT EXECUTED 4b632: 20e9 001c movel %a1@(28),%a0@+ <== NOT EXECUTED 4b636: 20e9 0020 movel %a1@(32),%a0@+ <== NOT EXECUTED 4b63a: 20e9 0024 movel %a1@(36),%a0@+ <== NOT EXECUTED 4b63e: 20a9 0028 movel %a1@(40),%a0@ <== NOT EXECUTED
*index = 1;
4b642: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
else {
*index = 0;
}
}
4b644: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b648: 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 e5b0 moveal 5e5b0 <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 cbae tstl 5cbae <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 e39c moveal 5e39c <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 e5b0 moveal 5e5b0 <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 cf68 pea 5cf68 <IMFS_ops+0x48> 4285a: 4e94 jsr %a4@
rtems_filesystem_root = loc;
4285c: 2079 0005 e5b0 moveal 5e5b0 <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 cf68 pea 5cf68 <IMFS_ops+0x48> 4288c: 4e94 jsr %a4@
rtems_filesystem_current = loc;
4288e: 2079 0005 e5b0 moveal 5e5b0 <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 cf6a pea 5cf6a <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 6bcc jsr 46bcc <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 6bcc jsr 46bcc <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 6bcc jsr 46bcc <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
...
0004b386 <rtems_filesystem_iterate>:
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
4b386: 4e56 fff0 linkw %fp,#-16 4b38a: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 4b38e: 266e 0008 moveal %fp@(8),%a3 4b392: 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 ) {
4b396: 4ab9 0005 cb8e tstl 5cb8e <rtems_filesystem_table>
4b39c: 672a beqs 4b3c8 <rtems_filesystem_iterate+0x42> <== NEVER TAKEN
4b39e: 45f9 0005 cb8e lea 5cb8e <rtems_filesystem_table>,%a2
stop = (*routine)( table_entry, routine_arg );
4b3a4: 2f03 movel %d3,%sp@- 4b3a6: 2f0a movel %a2,%sp@-
++table_entry;
4b3a8: 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 );
4b3aa: 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 ) {
4b3ac: 508f addql #8,%sp
stop = (*routine)( table_entry, routine_arg );
4b3ae: 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 ) {
4b3b0: 4a92 tstl %a2@
4b3b2: 6710 beqs 4b3c4 <rtems_filesystem_iterate+0x3e>
4b3b4: 4a00 tstb %d0
4b3b6: 67ec beqs 4b3a4 <rtems_filesystem_iterate+0x1e> <== NEVER TAKEN
}
rtems_libio_unlock();
}
return stop;
}
4b3b8: 1002 moveb %d2,%d0 4b3ba: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 4b3c0: 4e5e unlk %fp 4b3c2: 4e75 rts
while ( table_entry->type && !stop ) {
stop = (*routine)( table_entry, routine_arg );
++table_entry;
}
if ( !stop ) {
4b3c4: 4a00 tstb %d0
4b3c6: 66f0 bnes 4b3b8 <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 );
4b3c8: 42a7 clrl %sp@- <== NOT EXECUTED 4b3ca: 42a7 clrl %sp@- <== NOT EXECUTED 4b3cc: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b3d2: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b3d8: 2479 0005 e5b4 moveal 5e5b4 <filesystem_chain>,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b3de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b3e2: b5fc 0005 e5b8 cmpal #386488,%a2 <== NOT EXECUTED 4b3e8: 6734 beqs 4b41e <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 );
4b3ea: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b3ec: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4b3f0: 4e93 jsr %a3@ <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b3f2: 2452 moveal %a2@,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b3f4: 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 );
4b3f6: 1400 moveb %d0,%d2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b3f8: b5fc 0005 e5b8 cmpal #386488,%a2 <== NOT EXECUTED 4b3fe: 6704 beqs 4b404 <rtems_filesystem_iterate+0x7e> <== NOT EXECUTED
node = rtems_chain_first( &filesystem_chain );
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
4b400: 4a00 tstb %d0 <== NOT EXECUTED 4b402: 67e6 beqs 4b3ea <rtems_filesystem_iterate+0x64> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b404: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b40a: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 4b410: 588f addql #4,%sp <== NOT EXECUTED
}
rtems_libio_unlock();
}
return stop;
}
4b412: 1002 moveb %d2,%d0 <== NOT EXECUTED 4b414: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4b41a: 4e5e unlk %fp <== NOT EXECUTED 4b41c: 4e75 rts <== NOT EXECUTED 4b41e: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b424: 4202 clrb %d2 <== NOT EXECUTED 4b426: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 4b42c: 588f addql #4,%sp <== NOT EXECUTED 4b42e: 60e2 bras 4b412 <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 fbac movel 5fbac <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 e494 moveal 5e494 <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 e498 cmpal #386200,%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 e498 cmpal #386200,%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 fbac movel 5fbac <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 fbac movel 5fbac <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
...
0004b460 <rtems_filesystem_register>:
int
rtems_filesystem_register(
const char *type,
rtems_filesystem_fsmount_me_t mount_h
)
{
4b460: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b464: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4b468: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
size_t type_size = strlen(type) + 1;
4b46c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b46e: 4eb9 0004 fdc4 jsr 4fdc4 <strlen> <== NOT EXECUTED 4b474: 588f addql #4,%sp <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size; filesystem_node *fsn = malloc( fsn_size );
4b476: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b478: 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;
4b47c: 2600 movel %d0,%d3 <== NOT EXECUTED 4b47e: 5283 addql #1,%d3 <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size; filesystem_node *fsn = malloc( fsn_size );
4b480: 4eb9 0004 302c jsr 4302c <malloc> <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
4b486: 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 );
4b488: 2440 moveal %d0,%a2 <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
4b48a: 4a80 tstl %d0 <== NOT EXECUTED 4b48c: 6700 0098 beqw 4b526 <rtems_filesystem_register+0xc6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
memcpy(type_storage, type, type_size);
4b490: 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 );
4b492: 2600 movel %d0,%d3 <== NOT EXECUTED 4b494: 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);
4b49a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b49c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b49e: 4eb9 0004 f218 jsr 4f218 <memcpy> <== NOT EXECUTED
fsn->entry.type = type_storage; fsn->entry.mount_h = mount_h;
4b4a4: 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 );
4b4aa: 42a7 clrl %sp@- <== NOT EXECUTED 4b4ac: 42a7 clrl %sp@- <== NOT EXECUTED 4b4ae: 2f39 0005 fbac movel 5fbac <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;
4b4b4: 2543 0008 movel %d3,%a2@(8) <== NOT EXECUTED 4b4b8: 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 ) {
4b4be: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b4c0: 4eb9 0004 b430 jsr 4b430 <rtems_filesystem_get_mount_handler><== NOT EXECUTED 4b4c6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4b4ca: 4a80 tstl %d0 <== NOT EXECUTED 4b4cc: 662a bnes 4b4f8 <rtems_filesystem_register+0x98> <== NOT EXECUTED 4b4ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b4d0: 4879 0005 e5b4 pea 5e5b4 <filesystem_chain> <== NOT EXECUTED 4b4d6: 4eb9 0004 6ef0 jsr 46ef0 <_Chain_Append> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b4dc: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b4e2: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 4b4e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
return 0;
4b4ec: 4280 clrl %d0 <== NOT EXECUTED
}
4b4ee: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4b4f4: 4e5e unlk %fp <== NOT EXECUTED 4b4f6: 4e75 rts <== NOT EXECUTED 4b4f8: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b4fe: 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 );
4b504: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b506: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4b50c: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4b512: 508f addql #8,%sp <== NOT EXECUTED 4b514: 7216 moveq #22,%d1 <== NOT EXECUTED 4b516: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b518: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
4b51a: 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 );
4b520: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
4b522: 4e5e unlk %fp <== NOT EXECUTED 4b524: 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 );
4b526: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4b52c: 740c moveq #12,%d2 <== NOT EXECUTED 4b52e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b530: 70ff moveq #-1,%d0 <== NOT EXECUTED 4b532: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
return 0;
}
4b534: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4b53a: 4e5e unlk %fp <== NOT EXECUTED
0004b53e <rtems_filesystem_unregister>:
int
rtems_filesystem_unregister(
const char *type
)
{
4b53e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b542: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4b546: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_chain_node *node = NULL;
if ( type == NULL ) {
4b54a: 6700 0094 beqw 4b5e0 <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 );
4b54e: 42a7 clrl %sp@- <== NOT EXECUTED 4b550: 42a7 clrl %sp@- <== NOT EXECUTED 4b552: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b558: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain> <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b55e: 2479 0005 e5b4 moveal 5e5b4 <filesystem_chain>,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4b564: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b568: b5fc 0005 e5b8 cmpal #386488,%a2 <== NOT EXECUTED 4b56e: 671e beqs 4b58e <rtems_filesystem_unregister+0x50><== NOT EXECUTED 4b570: 47f9 0004 f86c lea 4f86c <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 ) {
4b576: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b578: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 4b57c: 4e93 jsr %a3@ <== NOT EXECUTED 4b57e: 508f addql #8,%sp <== NOT EXECUTED 4b580: 4a80 tstl %d0 <== NOT EXECUTED 4b582: 6730 beqs 4b5b4 <rtems_filesystem_unregister+0x76><== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b584: 2452 moveal %a2@,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4b586: b5fc 0005 e5b8 cmpal #386488,%a2 <== NOT EXECUTED 4b58c: 66e8 bnes 4b576 <rtems_filesystem_unregister+0x38><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b58e: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b594: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4b59a: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4b5a0: 588f addql #4,%sp <== NOT EXECUTED 4b5a2: 7202 moveq #2,%d1 <== NOT EXECUTED 4b5a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b5a6: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4b5a8: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4b5ae: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4b5b0: 4e5e unlk %fp <== NOT EXECUTED 4b5b2: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4b5b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b5b6: 4eb9 0004 6f28 jsr 46f28 <_Chain_Extract> <== NOT EXECUTED
) {
filesystem_node *fsn = (filesystem_node *) node;
if ( strcmp( fsn->entry.type, type ) == 0 ) {
rtems_chain_extract( node );
free( fsn );
4b5bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b5be: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED 4b5c4: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b5ca: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED 4b5d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_libio_unlock();
return 0;
4b5d4: 4280 clrl %d0 <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b5d6: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4b5dc: 4e5e unlk %fp <== NOT EXECUTED 4b5de: 4e75 rts <== NOT EXECUTED
)
{
rtems_chain_node *node = NULL;
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
4b5e0: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4b5e6: 7416 moveq #22,%d2 <== NOT EXECUTED 4b5e8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b5ea: 70ff moveq #-1,%d0 <== NOT EXECUTED 4b5ec: 2082 movel %d2,%a0@ <== 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
00048b6c <rtems_get_version_string>:
#endif
#include <rtems/system.h>
const char *rtems_get_version_string(void)
{
48b6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _RTEMS_version; }
48b70: 203c 0006 13aa movel #398250,%d0 <== NOT EXECUTED 48b76: 4e5e unlk %fp <== NOT EXECUTED
...
00043950 <rtems_gxx_getspecific>:
void *rtems_gxx_getspecific(__gthread_key_t key)
{
43950: 4e56 fffc linkw %fp,#-4
rtems_status_code status; void *p= 0;
43954: 204e moveal %fp,%a0
key = NULL;
return 0;
}
void *rtems_gxx_getspecific(__gthread_key_t key)
{
43956: 2f0a movel %a2,%sp@- 43958: 246e 0008 moveal %fp@(8),%a2
rtems_status_code status; void *p= 0;
4395c: 42a0 clrl %a0@-
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_get( RTEMS_SELF, (void **)key, &p );
4395e: 2f08 movel %a0,%sp@- 43960: 2f0a movel %a2,%sp@- 43962: 42a7 clrl %sp@- 43964: 4eb9 0004 792c jsr 4792c <rtems_task_variable_get>
if ( status == RTEMS_SUCCESSFUL ) {
4396a: 4fef 000c lea %sp@(12),%sp 4396e: 4a80 tstl %d0
43970: 660a bnes 4397c <rtems_gxx_getspecific+0x2c> <== ALWAYS TAKEN
/* We do not have to do this, but what the heck ! */
p= key->val;
43972: 2012 movel %a2@,%d0 <== NOT EXECUTED
p,
rtems_task_self()
);
#endif
return p;
}
43974: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 43978: 4e5e unlk %fp <== NOT EXECUTED 4397a: 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 );
4397c: 2f2a 0004 movel %a2@(4),%sp@- 43980: 2f0a movel %a2,%sp@- 43982: 42a7 clrl %sp@- 43984: 4eb9 0004 77c8 jsr 477c8 <rtems_task_variable_add>
if ( status != RTEMS_SUCCESSFUL ) {
4398a: 4fef 000c lea %sp@(12),%sp 4398e: 4a80 tstl %d0
43990: 660e bnes 439a0 <rtems_gxx_getspecific+0x50> <== ALWAYS TAKEN
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_GXX_KEY_ADD_FAILED
);
}
key->val = (void *)0;
43992: 4292 clrl %a2@ <== NOT EXECUTED 43994: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
p,
rtems_task_self()
);
#endif
return p;
}
43998: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4399c: 4e5e unlk %fp <== NOT EXECUTED 4399e: 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(
439a0: 4878 0015 pea 15 <OPER2+0x1> 439a4: 4878 0001 pea 1 <ADD> 439a8: 42a7 clrl %sp@- 439aa: 4eb9 0004 8884 jsr 48884 <_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: 2f0a movel %a2,%sp@- <== NOT EXECUTED 438b6: 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 ) );
438b8: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
}
return 0;
}
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
438bc: 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 ) );
438c0: 4eb9 0004 3ce4 jsr 43ce4 <malloc> <== NOT EXECUTED
*key = new_key;
438c6: 206e 0008 moveal %fp@(8),%a0 <== 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 ) );
438ca: 2440 moveal %d0,%a2 <== 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 );
438cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 438ce: 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;
438d0: 2080 movel %d0,%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 );
438d2: 42a7 clrl %sp@- <== 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: 4292 clrl %a2@ <== NOT EXECUTED
new_key->dtor = dtor;
438d6: 2542 0004 movel %d2,%a2@(4) <== 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 );
438da: 4eb9 0004 77c8 jsr 477c8 <rtems_task_variable_add> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
438e0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 438e4: 4a80 tstl %d0 <== NOT EXECUTED 438e6: 660e bnes 438f6 <rtems_gxx_key_create+0x46> <== NOT EXECUTED
return 0;
free( new_key );
return -1;
}
438e8: 242e fff8 movel %fp@(-8),%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;
438ec: 4280 clrl %d0 <== NOT EXECUTED
free( new_key );
return -1;
}
438ee: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 438f2: 4e5e unlk %fp <== NOT EXECUTED 438f4: 4e75 rts <== NOT EXECUTED
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
if ( status == RTEMS_SUCCESSFUL )
return 0;
free( new_key );
438f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 438f8: 4eb9 0004 3718 jsr 43718 <free> <== NOT EXECUTED
return -1; }
438fe: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
if ( status == RTEMS_SUCCESSFUL )
return 0;
free( new_key );
return -1;
43902: 588f addql #4,%sp <== NOT EXECUTED 43904: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
43906: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4390a: 4e5e unlk %fp <== NOT EXECUTED
0004391e <rtems_gxx_key_delete>:
int rtems_gxx_key_delete (__gthread_key_t key)
{
4391e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43922: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43924: 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 );
43928: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4392a: 42a7 clrl %sp@- <== NOT EXECUTED 4392c: 4eb9 0004 7884 jsr 47884 <rtems_task_variable_delete> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
43932: 508f addql #8,%sp <== NOT EXECUTED 43934: 4a80 tstl %d0 <== NOT EXECUTED 43936: 660e bnes 43946 <rtems_gxx_key_delete+0x28> <== NOT EXECUTED
/* Hmm - hopefully all tasks using this key have gone away... */
if ( key ) free( *(void **)key );
43938: 4a8a tstl %a2 <== NOT EXECUTED 4393a: 670a beqs 43946 <rtems_gxx_key_delete+0x28> <== NOT EXECUTED 4393c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4393e: 4eb9 0004 3718 jsr 43718 <free> <== NOT EXECUTED 43944: 588f addql #4,%sp <== NOT EXECUTED
return 0;
}
key = NULL;
return 0;
}
43946: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4394a: 4280 clrl %d0 <== NOT EXECUTED 4394c: 4e5e unlk %fp <== NOT EXECUTED
0004390e <rtems_gxx_key_dtor>:
printk( "gxx_wrappers: dtor key=%x, ptr=%x\n", key, ptr );
#endif
key->val = 0;
return 0;
}
4390e: 4280 clrl %d0 <== NOT EXECUTED
free( new_key );
return -1;
}
int rtems_gxx_key_dtor (__gthread_key_t key, void *ptr)
{
43910: 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;
43914: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return 0; }
43918: 4e5e unlk %fp <== NOT EXECUTED
{
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: dtor key=%x, ptr=%x\n", key, ptr );
#endif
key->val = 0;
4391a: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
}
00043a42 <rtems_gxx_mutex_destroy>:
int rtems_gxx_mutex_destroy (__gthread_mutex_t *mutex)
{
43a42: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43a46: 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);
43a4a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 43a4c: 4eb9 0004 7058 jsr 47058 <rtems_semaphore_delete> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
43a52: 588f addql #4,%sp <== NOT EXECUTED
return 0;
return -1;
}
43a54: 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;
43a56: 4a80 tstl %d0 <== NOT EXECUTED 43a58: 56c0 sne %d0 <== NOT EXECUTED 43a5a: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
000439e6 <rtems_gxx_mutex_init>:
/*
* MUTEX support
*/
void rtems_gxx_mutex_init (__gthread_mutex_t *mutex)
{
439e6: 4e56 0000 linkw %fp,#0
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: mutex init =%X\n", *mutex );
#endif
status = rtems_semaphore_create(
439ea: 2f2e 0008 movel %fp@(8),%sp@- 439ee: 42a7 clrl %sp@- 439f0: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f> 439f4: 4878 0001 pea 1 <ADD> 439f8: 2f3c 4743 4332 movel #1195590450,%sp@- 439fe: 4eb9 0004 6e94 jsr 46e94 <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 ) {
43a04: 4fef 0014 lea %sp@(20),%sp 43a08: 4a80 tstl %d0
43a0a: 6604 bnes 43a10 <rtems_gxx_mutex_init+0x2a> <== ALWAYS TAKEN
);
}
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: mutex init complete =%X\n", *mutex );
#endif
}
43a0c: 4e5e unlk %fp <== NOT EXECUTED 43a0e: 4e75 rts <== NOT EXECUTED
"gxx_wrappers: mutex init failed %s (%d)\n",
rtems_status_text(status),
status
);
#endif
_Internal_error_Occurred(
43a10: 4878 0016 pea 16 <OPER2+0x2> 43a14: 4878 0001 pea 1 <ADD> 43a18: 42a7 clrl %sp@- 43a1a: 4eb9 0004 8884 jsr 48884 <_Internal_error_Occurred>
00043a20 <rtems_gxx_mutex_lock>:
printk( "gxx_wrappers: mutex init complete =%X\n", *mutex );
#endif
}
int rtems_gxx_mutex_lock (__gthread_mutex_t *mutex)
{
43a20: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: lock mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_obtain(
43a24: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43a28: 42a7 clrl %sp@- <== NOT EXECUTED 43a2a: 42a7 clrl %sp@- <== NOT EXECUTED 43a2c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 43a2e: 4eb9 0004 7130 jsr 47130 <rtems_semaphore_obtain> <== NOT EXECUTED
*(rtems_id *)mutex,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if ( status == RTEMS_SUCCESSFUL )
43a34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
return -1;
}
43a38: 4e5e unlk %fp <== NOT EXECUTED
*(rtems_id *)mutex,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if ( status == RTEMS_SUCCESSFUL )
return 0;
43a3a: 4a80 tstl %d0 <== NOT EXECUTED 43a3c: 56c0 sne %d0 <== NOT EXECUTED 43a3e: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043a5e <rtems_gxx_mutex_trylock>:
int rtems_gxx_mutex_trylock (__gthread_mutex_t *mutex)
{
43a5e: 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);
43a62: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43a66: 42a7 clrl %sp@- <== NOT EXECUTED 43a68: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 43a6c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 43a6e: 4eb9 0004 7130 jsr 47130 <rtems_semaphore_obtain> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
43a74: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
return -1;
}
43a78: 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;
43a7a: 4a80 tstl %d0 <== NOT EXECUTED 43a7c: 56c0 sne %d0 <== NOT EXECUTED 43a7e: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043a82 <rtems_gxx_mutex_unlock>:
int rtems_gxx_mutex_unlock (__gthread_mutex_t *mutex)
{
43a82: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43a86: 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 );
43a8a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 43a8c: 4eb9 0004 7270 jsr 47270 <rtems_semaphore_release> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
43a92: 588f addql #4,%sp <== NOT EXECUTED
return 0;
return -1;
}
43a94: 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;
43a96: 4a80 tstl %d0 <== NOT EXECUTED 43a98: 56c0 sne %d0 <== NOT EXECUTED 43a9a: 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 758c lea 4758c <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
00043a9e <rtems_gxx_recursive_mutex_init>:
void rtems_gxx_recursive_mutex_init(__gthread_recursive_mutex_t *mutex)
{
43a9e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_gxx_mutex_init(mutex); }
43aa2: 4e5e unlk %fp <== NOT EXECUTED
return -1;
}
void rtems_gxx_recursive_mutex_init(__gthread_recursive_mutex_t *mutex)
{
rtems_gxx_mutex_init(mutex);
43aa4: 4ef9 0004 39e6 jmp 439e6 <rtems_gxx_mutex_init> <== NOT EXECUTED
00043aaa <rtems_gxx_recursive_mutex_lock>:
}
int rtems_gxx_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex)
{
43aaa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_lock(mutex); }
43aae: 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);
43ab0: 4ef9 0004 3a20 jmp 43a20 <rtems_gxx_mutex_lock> <== NOT EXECUTED
00043ab6 <rtems_gxx_recursive_mutex_trylock>:
}
int rtems_gxx_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex)
{
43ab6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_trylock(mutex); }
43aba: 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);
43abc: 4ef9 0004 3a5e jmp 43a5e <rtems_gxx_mutex_trylock> <== NOT EXECUTED
00043ac2 <rtems_gxx_recursive_mutex_unlock>:
}
int rtems_gxx_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex)
{
43ac2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_unlock(mutex); }
43ac6: 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);
43ac8: 4ef9 0004 3a82 jmp 43a82 <rtems_gxx_mutex_unlock> <== NOT EXECUTED
...
000439b0 <rtems_gxx_setspecific>:
#endif
return p;
}
int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr)
{
439b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 439b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 439b6: 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 );
439ba: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 439be: 2f0a movel %a2,%sp@- <== NOT EXECUTED 439c0: 42a7 clrl %sp@- <== NOT EXECUTED 439c2: 4eb9 0004 77c8 jsr 477c8 <rtems_task_variable_add> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
439c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 439cc: 4a80 tstl %d0 <== NOT EXECUTED 439ce: 660c bnes 439dc <rtems_gxx_setspecific+0x2c> <== NOT EXECUTED
/* now let's set the proper value */
key->val = (void *)ptr;
439d0: 24ae 000c movel %fp@(12),%a2@ <== NOT EXECUTED
return 0;
}
return -1;
}
439d4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 439d8: 4e5e unlk %fp <== NOT EXECUTED 439da: 4e75 rts <== NOT EXECUTED 439dc: 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;
439e0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
439e2: 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 6280 cmpl 66280 <_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 3ee0 movel 63ee0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 47c86: 4eb9 0004 ced8 jsr 4ced8 <_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
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 9cf6 jsr 49cf6 <_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 18c2 tstl 618c2 <_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
...
0004e590 <rtems_io_close>:
rtems_status_code rtems_io_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e590: 4e56 0000 linkw %fp,#0 4e594: 202e 0008 movel %fp@(8),%d0 4e598: 2f03 movel %d3,%sp@- 4e59a: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e59c: b0b9 0006 0596 cmpl 60596 <_IO_Number_of_drivers>,%d0
4e5a2: 6420 bccs 4e5c4 <rtems_io_close+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
4e5a4: 2600 movel %d0,%d3 4e5a6: 2400 movel %d0,%d2 4e5a8: e78b lsll #3,%d3 4e5aa: eb8a lsll #5,%d2 4e5ac: 2279 0006 059a moveal 6059a <_IO_Driver_address_table>,%a1 4e5b2: 9483 subl %d3,%d2 4e5b4: 2271 2808 moveal %a1@(00000008,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e5b8: 4a89 tstl %a1
4e5ba: 6712 beqs 4e5ce <rtems_io_close+0x3e> <== NEVER TAKEN
}
4e5bc: 241f movel %sp@+,%d2 4e5be: 261f movel %sp@+,%d3 4e5c0: 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;
4e5c2: 4ed1 jmp %a1@
}
4e5c4: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e5c6: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e5c8: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e5ca: 4e5e unlk %fp <== NOT EXECUTED 4e5cc: 4e75 rts <== NOT EXECUTED 4e5ce: 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;
4e5d0: 4280 clrl %d0 <== NOT EXECUTED
}
4e5d2: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e5d4: 4e5e unlk %fp <== NOT EXECUTED
0004e5d8 <rtems_io_control>:
rtems_status_code rtems_io_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e5d8: 4e56 0000 linkw %fp,#0 4e5dc: 202e 0008 movel %fp@(8),%d0 4e5e0: 2f03 movel %d3,%sp@- 4e5e2: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e5e4: b0b9 0006 0596 cmpl 60596 <_IO_Number_of_drivers>,%d0
4e5ea: 6420 bccs 4e60c <rtems_io_control+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
4e5ec: 2600 movel %d0,%d3 4e5ee: 2400 movel %d0,%d2 4e5f0: e78b lsll #3,%d3 4e5f2: eb8a lsll #5,%d2 4e5f4: 2279 0006 059a moveal 6059a <_IO_Driver_address_table>,%a1 4e5fa: 9483 subl %d3,%d2 4e5fc: 2271 2814 moveal %a1@(00000014,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e600: 4a89 tstl %a1
4e602: 6712 beqs 4e616 <rtems_io_control+0x3e> <== NEVER TAKEN
}
4e604: 241f movel %sp@+,%d2 4e606: 261f movel %sp@+,%d3 4e608: 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;
4e60a: 4ed1 jmp %a1@
}
4e60c: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e60e: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e610: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e612: 4e5e unlk %fp <== NOT EXECUTED 4e614: 4e75 rts <== NOT EXECUTED 4e616: 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;
4e618: 4280 clrl %d0 <== NOT EXECUTED
}
4e61a: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e61c: 4e5e unlk %fp <== NOT EXECUTED
0004c3e4 <rtems_io_initialize>:
rtems_status_code rtems_io_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4c3e4: 4e56 0000 linkw %fp,#0 4c3e8: 202e 0008 movel %fp@(8),%d0 4c3ec: 2f03 movel %d3,%sp@- 4c3ee: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4c3f0: b0b9 0006 0596 cmpl 60596 <_IO_Number_of_drivers>,%d0
4c3f6: 6420 bccs 4c418 <rtems_io_initialize+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
4c3f8: 2600 movel %d0,%d3 4c3fa: 2400 movel %d0,%d2 4c3fc: e78b lsll #3,%d3 4c3fe: 2279 0006 059a moveal 6059a <_IO_Driver_address_table>,%a1 4c404: 93c3 subal %d3,%a1 4c406: eb8a lsll #5,%d2 4c408: 2271 2800 moveal %a1@(00000000,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c40c: 4a89 tstl %a1
4c40e: 6712 beqs 4c422 <rtems_io_initialize+0x3e> }
4c410: 241f movel %sp@+,%d2 4c412: 261f movel %sp@+,%d3 4c414: 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;
4c416: 4ed1 jmp %a1@
}
4c418: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4c41a: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4c41c: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c41e: 4e5e unlk %fp <== NOT EXECUTED 4c420: 4e75 rts <== NOT EXECUTED
4c422: 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;
4c424: 4280 clrl %d0
}
4c426: 261f movel %sp@+,%d3
4c428: 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 fdc4 lea 4fdc4 <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
0004e620 <rtems_io_open>:
rtems_status_code rtems_io_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e620: 4e56 0000 linkw %fp,#0 4e624: 202e 0008 movel %fp@(8),%d0 4e628: 2f03 movel %d3,%sp@- 4e62a: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e62c: b0b9 0006 0596 cmpl 60596 <_IO_Number_of_drivers>,%d0
4e632: 6420 bccs 4e654 <rtems_io_open+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
4e634: 2600 movel %d0,%d3 4e636: 2400 movel %d0,%d2 4e638: e78b lsll #3,%d3 4e63a: eb8a lsll #5,%d2 4e63c: 2279 0006 059a moveal 6059a <_IO_Driver_address_table>,%a1 4e642: 9483 subl %d3,%d2 4e644: 2271 2804 moveal %a1@(00000004,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e648: 4a89 tstl %a1
4e64a: 6712 beqs 4e65e <rtems_io_open+0x3e> <== NEVER TAKEN
}
4e64c: 241f movel %sp@+,%d2 4e64e: 261f movel %sp@+,%d3 4e650: 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;
4e652: 4ed1 jmp %a1@
}
4e654: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e656: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e658: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e65a: 4e5e unlk %fp <== NOT EXECUTED 4e65c: 4e75 rts <== NOT EXECUTED 4e65e: 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;
4e660: 4280 clrl %d0 <== NOT EXECUTED
}
4e662: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e664: 4e5e unlk %fp <== NOT EXECUTED
0004e668 <rtems_io_read>:
rtems_status_code rtems_io_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e668: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4e66c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4e670: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e672: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e674: b0b9 0006 0596 cmpl 60596 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED 4e67a: 6420 bccs 4e69c <rtems_io_read+0x34> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
4e67c: 2600 movel %d0,%d3 <== NOT EXECUTED 4e67e: 2400 movel %d0,%d2 <== NOT EXECUTED 4e680: e78b lsll #3,%d3 <== NOT EXECUTED 4e682: eb8a lsll #5,%d2 <== NOT EXECUTED 4e684: 2279 0006 059a moveal 6059a <_IO_Driver_address_table>,%a1 <== NOT EXECUTED 4e68a: 9483 subl %d3,%d2 <== NOT EXECUTED 4e68c: 2271 280c moveal %a1@(0000000c,%d2:l),%a1 <== NOT EXECUTED
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e690: 4a89 tstl %a1 <== NOT EXECUTED 4e692: 6712 beqs 4e6a6 <rtems_io_read+0x3e> <== NOT EXECUTED
}
4e694: 241f movel %sp@+,%d2 <== NOT EXECUTED 4e696: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e698: 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;
4e69a: 4ed1 jmp %a1@ <== NOT EXECUTED
}
4e69c: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e69e: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e6a0: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e6a2: 4e5e unlk %fp <== NOT EXECUTED 4e6a4: 4e75 rts <== NOT EXECUTED 4e6a6: 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;
4e6a8: 4280 clrl %d0 <== NOT EXECUTED
}
4e6aa: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e6ac: 4e5e unlk %fp <== NOT EXECUTED
000480a0 <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
)
{
480a0: 4e56 fff4 linkw %fp,#-12 480a4: 226e 000c moveal %fp@(12),%a1 480a8: 48d7 040c moveml %d2-%d3/%a2,%sp@ 480ac: 242e 0008 movel %fp@(8),%d2 480b0: 246e 0010 moveal %fp@(16),%a2
rtems_device_major_number major_limit = _IO_Number_of_drivers;
480b4: 2039 0006 47be movel 647be <_IO_Number_of_drivers>,%d0
if ( rtems_interrupt_is_in_progress() )
480ba: 4ab9 0006 43aa tstl 643aa <_Per_CPU_Information+0x8> 480c0: 6600 009c bnew 4815e <rtems_io_register_driver+0xbe>
return RTEMS_CALLED_FROM_ISR;
if ( registered_major == NULL )
480c4: 4a8a tstl %a2 480c6: 6700 00ea beqw 481b2 <rtems_io_register_driver+0x112>
return RTEMS_INVALID_ADDRESS;
/* Set it to an invalid value */
*registered_major = major_limit;
480ca: 2480 movel %d0,%a2@
if ( driver_table == NULL )
480cc: 4a89 tstl %a1 480ce: 6700 00e2 beqw 481b2 <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;
480d2: 4a91 tstl %a1@ 480d4: 6700 00d4 beqw 481aa <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 )
480d8: b480 cmpl %d0,%d2
480da: 6476 bccs 48152 <rtems_io_register_driver+0xb2> <== NEVER TAKEN
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
480dc: 2039 0006 3f20 movel 63f20 <_Thread_Dispatch_disable_level>,%d0 480e2: 5280 addql #1,%d0 480e4: 23c0 0006 3f20 movel %d0,63f20 <_Thread_Dispatch_disable_level>
return RTEMS_INVALID_NUMBER;
_Thread_Disable_dispatch();
if ( major == 0 ) {
480ea: 4a82 tstl %d2
480ec: 667c bnes 4816a <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;
480ee: 2039 0006 47be movel 647be <_IO_Number_of_drivers>,%d0
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
480f4: 6700 0106 beqw 481fc <rtems_io_register_driver+0x15c> 480f8: 2239 0006 47c2 movel 647c2 <_IO_Driver_address_table>,%d1 480fe: 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;
48100: 4a90 tstl %a0@ 48102: 6700 008e beqw 48192 <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 ) {
48106: 5282 addql #1,%d2 48108: 41e8 0018 lea %a0@(24),%a0 4810c: b480 cmpl %d0,%d2
4810e: 65f0 bcss 48100 <rtems_io_register_driver+0x60> <== ALWAYS TAKEN
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
48110: 2482 movel %d2,%a2@
if ( m != n )
48112: b480 cmpl %d0,%d2 48114: 6700 00e8 beqw 481fe <rtems_io_register_driver+0x15e> 48118: 2602 movel %d2,%d3 4811a: 2002 movel %d2,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
4811c: 2041 moveal %d1,%a0
}
/* Assigns invalid value in case of failure */
*major = m;
if ( m != n )
4811e: e78b lsll #3,%d3 48120: eb88 lsll #5,%d0 48122: 9083 subl %d3,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
48124: d1c0 addal %d0,%a0 48126: 20d9 movel %a1@+,%a0@+ 48128: 20d9 movel %a1@+,%a0@+ 4812a: 20d9 movel %a1@+,%a0@+ 4812c: 20d9 movel %a1@+,%a0@+ 4812e: 20d9 movel %a1@+,%a0@+ 48130: 2091 movel %a1@,%a0@
_Thread_Enable_dispatch();
48132: 4eb9 0004 9f56 jsr 49f56 <_Thread_Enable_dispatch>
return rtems_io_initialize( major, 0, NULL );
48138: 2d42 0008 movel %d2,%fp@(8)
}
4813c: 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 );
48142: 42ae 0010 clrl %fp@(16) 48146: 42ae 000c clrl %fp@(12)
}
4814a: 4e5e unlk %fp
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
4814c: 4ef9 0005 077c jmp 5077c <rtems_io_initialize>
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
48152: 700a moveq #10,%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
)
{
rtems_device_major_number major_limit = _IO_Number_of_drivers;
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
4815e: 7012 moveq #18,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48160: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 48166: 4e5e unlk %fp <== NOT EXECUTED 48168: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return sc;
}
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
4816a: 2202 movel %d2,%d1 <== NOT EXECUTED 4816c: 2002 movel %d2,%d0 <== NOT EXECUTED 4816e: e789 lsll #3,%d1 <== NOT EXECUTED 48170: eb88 lsll #5,%d0 <== NOT EXECUTED 48172: 2079 0006 47c2 moveal 647c2 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED 48178: 9081 subl %d1,%d0 <== NOT EXECUTED 4817a: 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;
4817c: 4a90 tstl %a0@ <== NOT EXECUTED 4817e: 673e beqs 481be <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();
48180: 4eb9 0004 9f56 jsr 49f56 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
48186: 700c moveq #12,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48188: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4818e: 4e5e unlk %fp <== NOT EXECUTED 48190: 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;
48192: 4aa8 0004 tstl %a0@(4) 48196: 6700 ff78 beqw 48110 <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 ) {
4819a: 5282 addql #1,%d2 4819c: 41e8 0018 lea %a0@(24),%a0 481a0: b480 cmpl %d0,%d2 481a2: 6500 ff5c bcsw 48100 <rtems_io_register_driver+0x60>
481a6: 6000 ff68 braw 48110 <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;
481aa: 4aa9 0004 tstl %a1@(4) 481ae: 6600 ff28 bnew 480d8 <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;
481b2: 7009 moveq #9,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
481b4: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 481ba: 4e5e unlk %fp <== NOT EXECUTED 481bc: 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;
481be: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 481c2: 66bc bnes 48180 <rtems_io_register_driver+0xe0> <== NOT EXECUTED 481c4: 2239 0006 47c2 movel 647c2 <_IO_Driver_address_table>,%d1 <== NOT EXECUTED
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
481ca: 2041 moveal %d1,%a0 <== NOT EXECUTED 481cc: d1c0 addal %d0,%a0 <== NOT EXECUTED
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
*registered_major = major;
481ce: 2482 movel %d2,%a2@ <== NOT EXECUTED
}
_IO_Driver_address_table [major] = *driver_table;
481d0: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481d2: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481d4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481d6: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481d8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 481da: 2091 movel %a1@,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
481dc: 4eb9 0004 9f56 jsr 49f56 <_Thread_Enable_dispatch> <== NOT EXECUTED
return rtems_io_initialize( major, 0, NULL );
481e2: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
481e6: 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 );
481ec: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED 481f0: 42ae 000c clrl %fp@(12) <== NOT EXECUTED
}
481f4: 4e5e unlk %fp <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
481f6: 4ef9 0005 077c jmp 5077c <rtems_io_initialize> <== NOT EXECUTED
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
481fc: 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();
481fe: 4eb9 0004 9f56 jsr 49f56 <_Thread_Enable_dispatch> <== NOT EXECUTED
*major = m;
if ( m != n )
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
48204: 7005 moveq #5,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48206: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4820c: 4e5e unlk %fp <== NOT EXECUTED
00048210 <rtems_io_unregister_driver>:
*/
rtems_status_code rtems_io_unregister_driver(
rtems_device_major_number major
)
{
48210: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48214: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
48218: 4ab9 0006 43aa tstl 643aa <_Per_CPU_Information+0x8> <== NOT EXECUTED 4821e: 6644 bnes 48264 <rtems_io_unregister_driver+0x54><== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
48220: b0b9 0006 47be cmpl 647be <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED 48226: 6506 bcss 4822e <rtems_io_unregister_driver+0x1e><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
48228: 700d moveq #13,%d0 <== NOT EXECUTED
}
4822a: 4e5e unlk %fp <== NOT EXECUTED 4822c: 4e75 rts <== NOT EXECUTED 4822e: 2239 0006 3f20 movel 63f20 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 48234: 5281 addql #1,%d1 <== NOT EXECUTED 48236: 23c1 0006 3f20 movel %d1,63f20 <_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],
4823c: 2200 movel %d0,%d1 <== NOT EXECUTED 4823e: eb88 lsll #5,%d0 <== NOT EXECUTED 48240: 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(
48242: 2079 0006 47c2 moveal 647c2 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED
&_IO_Driver_address_table[major],
48248: 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(
4824a: d1c0 addal %d0,%a0 <== NOT EXECUTED 4824c: 4298 clrl %a0@+ <== NOT EXECUTED 4824e: 4298 clrl %a0@+ <== NOT EXECUTED 48250: 4298 clrl %a0@+ <== NOT EXECUTED 48252: 4298 clrl %a0@+ <== NOT EXECUTED 48254: 4298 clrl %a0@+ <== NOT EXECUTED 48256: 4290 clrl %a0@ <== NOT EXECUTED
&_IO_Driver_address_table[major],
0,
sizeof( rtems_driver_address_table )
);
_Thread_Enable_dispatch();
48258: 4eb9 0004 9f56 jsr 49f56 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4825e: 4280 clrl %d0 <== NOT EXECUTED
}
return RTEMS_UNSATISFIED;
}
48260: 4e5e unlk %fp <== NOT EXECUTED 48262: 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;
48264: 7012 moveq #18,%d0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
}
48266: 4e5e unlk %fp <== NOT EXECUTED
...
0004e6b0 <rtems_io_write>:
rtems_status_code rtems_io_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e6b0: 4e56 0000 linkw %fp,#0 4e6b4: 202e 0008 movel %fp@(8),%d0 4e6b8: 2f03 movel %d3,%sp@- 4e6ba: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e6bc: b0b9 0006 0596 cmpl 60596 <_IO_Number_of_drivers>,%d0
4e6c2: 6420 bccs 4e6e4 <rtems_io_write+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
4e6c4: 2600 movel %d0,%d3 4e6c6: 2400 movel %d0,%d2 4e6c8: e78b lsll #3,%d3 4e6ca: eb8a lsll #5,%d2 4e6cc: 2279 0006 059a moveal 6059a <_IO_Driver_address_table>,%a1 4e6d2: 9483 subl %d3,%d2 4e6d4: 2271 2810 moveal %a1@(00000010,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e6d8: 4a89 tstl %a1
4e6da: 6712 beqs 4e6ee <rtems_io_write+0x3e> <== NEVER TAKEN
}
4e6dc: 241f movel %sp@+,%d2 4e6de: 261f movel %sp@+,%d3 4e6e0: 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;
4e6e2: 4ed1 jmp %a1@
}
4e6e4: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e6e6: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e6e8: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e6ea: 4e5e unlk %fp <== NOT EXECUTED 4e6ec: 4e75 rts <== NOT EXECUTED 4e6ee: 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;
4e6f0: 4280 clrl %d0 <== NOT EXECUTED
}
4e6f2: 261f movel %sp@+,%d3 <== NOT EXECUTED 4e6f4: 4e5e unlk %fp <== NOT EXECUTED
000492f4 <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)
{
492f4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 492f8: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 492fc: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
uint32_t i;
uint32_t api_index;
Thread_Control *the_thread;
Objects_Information *information;
if ( !routine )
49300: 4a8b tstl %a3 <== NOT EXECUTED 49302: 673e beqs 49342 <rtems_iterate_over_all_threads+0x4e><== NOT EXECUTED 49304: 49f9 0006 a248 lea 6a248 <_Objects_Information_table+0x4>,%a4<== NOT EXECUTED
#if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
4930a: 205c moveal %a4@+,%a0 <== NOT EXECUTED 4930c: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED
if ( !information )
49310: 4a8a tstl %a2 <== NOT EXECUTED 49312: 6726 beqs 4933a <rtems_iterate_over_all_threads+0x46><== NOT EXECUTED
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
49314: 4a6a 000e tstw %a2@(14) <== NOT EXECUTED 49318: 6720 beqs 4933a <rtems_iterate_over_all_threads+0x46><== NOT EXECUTED 4931a: 7401 moveq #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
4931c: 206a 0018 moveal %a2@(24),%a0 <== NOT EXECUTED 49320: 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++ ) {
49324: 5282 addql #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
49326: 4a80 tstl %d0 <== NOT EXECUTED 49328: 6706 beqs 49330 <rtems_iterate_over_all_threads+0x3c><== NOT EXECUTED
continue;
(*routine)(the_thread);
4932a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4932c: 4e93 jsr %a3@ <== NOT EXECUTED 4932e: 588f addql #4,%sp <== NOT EXECUTED
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
49330: 4280 clrl %d0 <== NOT EXECUTED 49332: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 49336: b480 cmpl %d0,%d2 <== NOT EXECUTED 49338: 63e2 blss 4931c <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++ ) {
4933a: b9fc 0006 a254 cmpal #434772,%a4 <== NOT EXECUTED 49340: 66c8 bnes 4930a <rtems_iterate_over_all_threads+0x16><== NOT EXECUTED
(*routine)(the_thread);
}
}
}
49342: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 49348: 4e5e unlk %fp <== NOT EXECUTED
0004b0f6 <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 )
{
4b0f6: 4e56 fffc linkw %fp,#-4 4b0fa: 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 );
4b0fc: 42a7 clrl %sp@- 4b0fe: 42a7 clrl %sp@- 4b100: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- 4b106: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain>
rtems_status_code rc;
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
4b10c: 2039 0005 fba8 movel 5fba8 <rtems_libio_iop_freelist>,%d0 4b112: 4fef 000c lea %sp@(12),%sp
4b116: 6618 bnes 4b130 <rtems_libio_allocate+0x3a> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b118: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@-
rtems_libio_iop_freelist = next;
goto done;
}
failed:
iop = 0;
4b11e: 95ca subal %a2,%a2 4b120: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
done:
rtems_libio_unlock();
return iop;
}
4b126: 200a movel %a2,%d0 4b128: 246e fff8 moveal %fp@(-8),%a2 4b12c: 4e5e unlk %fp 4b12e: 4e75 rts
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b130: 486e fffc pea %fp@(-4)
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
4b134: 90b9 0005 fba4 subl 5fba4 <rtems_libio_iops>,%d0 4b13a: 223c b6db 6db7 movel #-1227133513,%d1
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b140: 42a7 clrl %sp@- 4b142: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
4b146: e680 asrl #3,%d0 4b148: 4c01 0800 mulsl %d1,%d0
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b14c: 4878 0001 pea 1 <ADD> 4b150: 0080 4c42 4900 oril #1279412480,%d0 4b156: 2f00 movel %d0,%sp@- 4b158: 4eb9 0004 61dc jsr 461dc <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
0,
&sema
);
if (rc != RTEMS_SUCCESSFUL)
4b15e: 4fef 0014 lea %sp@(20),%sp 4b162: 4a80 tstl %d0
4b164: 66b2 bnes 4b118 <rtems_libio_allocate+0x22>
goto failed;
iop = rtems_libio_iop_freelist;
4b166: 2479 0005 fba8 moveal 5fba8 <rtems_libio_iop_freelist>,%a2
next = iop->data1;
(void) memset( iop, 0, sizeof(rtems_libio_t) );
4b16c: 204a moveal %a2,%a0
iop->flags = LIBIO_FLAGS_OPEN;
4b16e: 223c 0000 0100 movel #256,%d1
&sema
);
if (rc != RTEMS_SUCCESSFUL)
goto failed;
iop = rtems_libio_iop_freelist;
next = iop->data1;
4b174: 202a 0034 movel %a2@(52),%d0
(void) memset( iop, 0, sizeof(rtems_libio_t) );
4b178: 4298 clrl %a0@+ 4b17a: 4298 clrl %a0@+ 4b17c: 4298 clrl %a0@+ 4b17e: 4298 clrl %a0@+ 4b180: 4298 clrl %a0@+ 4b182: 4298 clrl %a0@+ 4b184: 4298 clrl %a0@+ 4b186: 4298 clrl %a0@+ 4b188: 4298 clrl %a0@+ 4b18a: 4298 clrl %a0@+ 4b18c: 4298 clrl %a0@+ 4b18e: 4298 clrl %a0@+ 4b190: 4298 clrl %a0@+ 4b192: 4290 clrl %a0@
iop->flags = LIBIO_FLAGS_OPEN;
iop->sem = sema;
4b194: 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;
4b19a: 2541 0014 movel %d1,%a2@(20) 4b19e: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@-
iop->sem = sema;
rtems_libio_iop_freelist = next;
4b1a4: 23c0 0005 fba8 movel %d0,5fba8 <rtems_libio_iop_freelist> 4b1aa: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
iop = 0;
done:
rtems_libio_unlock();
return iop;
}
4b1b0: 200a movel %a2,%d0 4b1b2: 246e fff8 moveal %fp@(-8),%a2
4b1b6: 4e5e unlk %fp <== NOT EXECUTED
0004b1ba <rtems_libio_free>:
*/
void rtems_libio_free(
rtems_libio_t *iop
)
{
4b1ba: 4e56 0000 linkw %fp,#0 4b1be: 2f0a movel %a2,%sp@- 4b1c0: 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 );
4b1c4: 42a7 clrl %sp@- 4b1c6: 42a7 clrl %sp@- 4b1c8: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- 4b1ce: 4eb9 0004 6478 jsr 46478 <rtems_semaphore_obtain>
rtems_libio_lock();
if (iop->sem)
4b1d4: 202a 002c movel %a2@(44),%d0 4b1d8: 4fef 000c lea %sp@(12),%sp
4b1dc: 6630 bnes 4b20e <rtems_libio_free+0x54> <== ALWAYS TAKEN
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
4b1de: 41f9 0005 fba8 lea 5fba8 <rtems_libio_iop_freelist>,%a0 <== NOT EXECUTED
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b1e4: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED
iop->data1 = rtems_libio_iop_freelist;
4b1ea: 2550 0034 movel %a0@,%a2@(52) <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b1ee: 41f9 0005 fbac lea 5fbac <rtems_libio_semaphore>,%a0 <== NOT EXECUTED 4b1f4: 2d50 0008 movel %a0@,%fp@(8) <== NOT EXECUTED
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b1f8: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
4b1fc: 23ca 0005 fba8 movel %a2,5fba8 <rtems_libio_iop_freelist> <== NOT EXECUTED
rtems_libio_unlock();
}
4b202: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b206: 4e5e unlk %fp <== NOT EXECUTED 4b208: 4ef9 0004 65b8 jmp 465b8 <rtems_semaphore_release> <== NOT EXECUTED
)
{
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
4b20e: 2f00 movel %d0,%sp@- 4b210: 4eb9 0004 63a0 jsr 463a0 <rtems_semaphore_delete> 4b216: 588f addql #4,%sp
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
4b218: 41f9 0005 fba8 lea 5fba8 <rtems_libio_iop_freelist>,%a0
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b21e: 203c ffff feff movel #-257,%d0
iop->data1 = rtems_libio_iop_freelist;
4b224: 2550 0034 movel %a0@,%a2@(52) 4b228: 41f9 0005 fbac lea 5fbac <rtems_libio_semaphore>,%a0 4b22e: 2d50 0008 movel %a0@,%fp@(8)
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b232: c1aa 0014 andl %d0,%a2@(20)
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
4b236: 23ca 0005 fba8 movel %a2,5fba8 <rtems_libio_iop_freelist>
rtems_libio_unlock();
}
4b23c: 246e fffc moveal %fp@(-4),%a2 4b240: 4e5e unlk %fp 4b242: 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 e394 movel 5e394 <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 fba4 movel %d0,5fba4 <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 fba8 movel %d0,5fba8 <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 fbac pea 5fbac <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 e390 moveal 5e390 <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 6bcc jsr 46bcc <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 6bcc jsr 46bcc <rtems_fatal_error_occurred> <== NOT EXECUTED
0004b2c6 <rtems_libio_is_file_open>:
*/
int rtems_libio_is_file_open(
void *node_access
)
{
4b2c6: 4e56 0000 linkw %fp,#0 4b2ca: 2f02 movel %d2,%sp@- 4b2cc: 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 );
4b2d0: 42a7 clrl %sp@- 4b2d2: 42a7 clrl %sp@- 4b2d4: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- 4b2da: 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++){
4b2e0: 2079 0005 fba4 moveal 5fba4 <rtems_libio_iops>,%a0 4b2e6: 4fef 000c lea %sp@(12),%sp 4b2ea: 2279 0005 e394 moveal 5e394 <rtems_libio_number_iops>,%a1 4b2f0: 4a89 tstl %a1
4b2f2: 6720 beqs 4b314 <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(
4b2f4: 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++){
4b2f8: 4280 clrl %d0
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b2fa: 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++){
4b2fc: 5280 addql #1,%d0
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b2fe: 0281 0000 0100 andil #256,%d1
4b304: 6706 beqs 4b30c <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 ) {
4b306: b4a8 0004 cmpl %a0@(4),%d2
4b30a: 6720 beqs 4b32c <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++){
4b30c: 41e8 0038 lea %a0@(56),%a0 4b310: b3c0 cmpal %d0,%a1
4b312: 62e6 bhis 4b2fa <rtems_libio_is_file_open+0x34> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b314: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
int rtems_libio_is_file_open(
void *node_access
)
{
rtems_libio_t *iop;
int result=0;
4b31a: 4282 clrl %d2 <== NOT EXECUTED 4b31c: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b322: 2002 movel %d2,%d0 <== NOT EXECUTED 4b324: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4b328: 4e5e unlk %fp <== NOT EXECUTED 4b32a: 4e75 rts <== NOT EXECUTED
4b32c: 2f39 0005 fbac movel 5fbac <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;
4b332: 7401 moveq #1,%d2 4b334: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release>
}
rtems_libio_unlock();
return result;
}
4b33a: 2002 movel %d2,%d0 4b33c: 242e fffc movel %fp@(-4),%d2
4b340: 4e5e unlk %fp <== NOT EXECUTED
0004b248 <rtems_libio_is_open_files_in_fs>:
*/
int rtems_libio_is_open_files_in_fs(
rtems_filesystem_mount_table_entry_t * fs_mt_entry
)
{
4b248: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b24c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b24e: 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 );
4b252: 42a7 clrl %sp@- <== NOT EXECUTED 4b254: 42a7 clrl %sp@- <== NOT EXECUTED 4b256: 2f39 0005 fbac movel 5fbac <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED 4b25c: 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++){
4b262: 2079 0005 fba4 moveal 5fba4 <rtems_libio_iops>,%a0 <== NOT EXECUTED 4b268: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b26c: 2279 0005 e394 moveal 5e394 <rtems_libio_number_iops>,%a1 <== NOT EXECUTED 4b272: 4a89 tstl %a1 <== NOT EXECUTED 4b274: 6720 beqs 4b296 <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(
4b276: 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++){
4b27a: 4280 clrl %d0 <== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b27c: 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++){
4b27e: 5280 addql #1,%d0 <== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b280: 0281 0000 0100 andil #256,%d1 <== NOT EXECUTED 4b286: 6706 beqs 4b28e <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 ) {
4b288: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED 4b28c: 6720 beqs 4b2ae <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++){
4b28e: 41e8 0038 lea %a0@(56),%a0 <== NOT EXECUTED 4b292: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 4b294: 62e6 bhis 4b27c <rtems_libio_is_open_files_in_fs+0x34><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b296: 2f39 0005 fbac movel 5fbac <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;
4b29c: 4282 clrl %d2 <== NOT EXECUTED 4b29e: 4eb9 0004 65b8 jsr 465b8 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b2a4: 2002 movel %d2,%d0 <== NOT EXECUTED 4b2a6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4b2aa: 4e5e unlk %fp <== NOT EXECUTED 4b2ac: 4e75 rts <== NOT EXECUTED 4b2ae: 2f39 0005 fbac movel 5fbac <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;
4b2b4: 7401 moveq #1,%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
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 d94e pea 5d94e <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 d94e pea 5d94e <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 ef88 moveal 5ef88 <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 05c4 cmpal #394692,%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 ef88 pea 5ef88 <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 ef88 movel %a3,5ef88 <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 05c4 pea 605c4 <rtems_global_user_env> <== NOT EXECUTED 444f6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 444f8: 4eb9 0004 fb88 jsr 4fb88 <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 ef88 pea 5ef88 <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 ef88 moveal 5ef88 <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 ef88 movel %a0@,5ef88 <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 ef88 movel %a0@,5ef88 <rtems_current_user_env> <== NOT EXECUTED 445e4: 60ca bras 445b0 <rtems_libio_share_private_env+0x46><== NOT EXECUTED
...
0004b0a8 <rtems_libio_to_fcntl_flags>:
uint32_t flags
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b0a8: 7006 moveq #6,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
4b0aa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b0ae: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b0b2: c081 andl %d1,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
4b0b4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b0b6: 7406 moveq #6,%d2 <== NOT EXECUTED 4b0b8: b480 cmpl %d0,%d2 <== NOT EXECUTED 4b0ba: 6736 beqs 4b0f2 <rtems_libio_to_fcntl_flags+0x4a><== NOT EXECUTED
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
4b0bc: 0801 0001 btst #1,%d1 <== NOT EXECUTED 4b0c0: 6726 beqs 4b0e8 <rtems_libio_to_fcntl_flags+0x40><== NOT EXECUTED
fcntl_flags |= O_RDONLY;
4b0c2: 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 ) {
4b0c4: 0801 0000 btst #0,%d1 <== NOT EXECUTED 4b0c8: 6704 beqs 4b0ce <rtems_libio_to_fcntl_flags+0x26><== NOT EXECUTED
fcntl_flags |= O_NONBLOCK;
4b0ca: 08c0 000e bset #14,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {
4b0ce: 0801 0009 btst #9,%d1 <== NOT EXECUTED 4b0d2: 6704 beqs 4b0d8 <rtems_libio_to_fcntl_flags+0x30><== NOT EXECUTED
fcntl_flags |= O_APPEND;
4b0d4: 7408 moveq #8,%d2 <== NOT EXECUTED 4b0d6: 8082 orl %d2,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {
4b0d8: 0801 000a btst #10,%d1 <== NOT EXECUTED 4b0dc: 6704 beqs 4b0e2 <rtems_libio_to_fcntl_flags+0x3a><== NOT EXECUTED
fcntl_flags |= O_CREAT;
4b0de: 08c0 0009 bset #9,%d0 <== NOT EXECUTED
}
return fcntl_flags;
}
4b0e2: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b0e4: 4e5e unlk %fp <== NOT EXECUTED 4b0e6: 4e75 rts <== NOT EXECUTED
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
fcntl_flags |= O_RDWR;
4b0e8: 44c1 movew %d1,%ccr <== NOT EXECUTED 4b0ea: 57c0 seq %d0 <== NOT EXECUTED 4b0ec: 49c0 extbl %d0 <== NOT EXECUTED 4b0ee: 4480 negl %d0 <== NOT EXECUTED 4b0f0: 60d2 bras 4b0c4 <rtems_libio_to_fcntl_flags+0x1c><== NOT EXECUTED 4b0f2: 7002 moveq #2,%d0 <== NOT EXECUTED 4b0f4: 60ce bras 4b0c4 <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 3ee0 movel 63ee0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED 46f1a: 4eb9 0004 cf90 jsr 4cf90 <_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 6000 addl %d3,66000 <rtems_malloc_statistics+0x28><== NOT EXECUTED 46f34: 2039 0006 5ffc movel 65ffc <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED 46f3a: d182 addxl %d2,%d0 <== NOT EXECUTED 46f3c: 23c0 0006 5ffc movel %d0,65ffc <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 3ee0 movel 63ee0 <RTEMS_Malloc_Heap>,%sp@- 46f70: 4eb9 0004 cf90 jsr 4cf90 <_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 5ff4 movel 65ff4 <rtems_malloc_statistics+0x1c>,%d0 46f84: d6b9 0006 5ff8 addl 65ff8 <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 6000 subl 66000 <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 5ff4 movel %d2,65ff4 <rtems_malloc_statistics+0x1c> 46f9a: 23c3 0006 5ff8 movel %d3,65ff8 <rtems_malloc_statistics+0x20>
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
46fa0: b0b9 0006 5ff0 cmpl 65ff0 <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 5ff0 movel %d0,65ff0 <rtems_malloc_statistics+0x18>
}
46fae: 242e fff4 movel %fp@(-12),%d2 46fb2: 262e fff8 movel %fp@(-8),%d3
46fb6: 4e5e unlk %fp <== NOT EXECUTED
0004f6fc <rtems_memalign>:
int rtems_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
4f6fc: 4e56 0000 linkw %fp,#0 4f700: 2f0a movel %a2,%sp@- 4f702: 246e 0008 moveal %fp@(8),%a2 4f706: 2f02 movel %d2,%sp@-
void *return_this;
/*
* Parameter error checks
*/
if ( !pointer )
4f708: 4a8a tstl %a2
4f70a: 675e beqs 4f76a <rtems_memalign+0x6e> <== NEVER TAKEN
return EINVAL;
*pointer = NULL;
4f70c: 4292 clrl %a2@
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
4f70e: 7003 moveq #3,%d0 4f710: b0b9 0006 408c cmpl 6408c <_System_state_Current>,%d0
4f716: 6748 beqs 4f760 <rtems_memalign+0x64> <== ALWAYS TAKEN
return EINVAL;
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
4f718: 4eb9 0004 4098 jsr 44098 <malloc_deferred_frees_process>
Heap_Control *heap,
uintptr_t size,
uintptr_t alignment
)
{
return
4f71e: 42a7 clrl %sp@- 4f720: 2f2e 000c movel %fp@(12),%sp@- 4f724: 2f2e 0010 movel %fp@(16),%sp@- 4f728: 2f39 0006 2520 movel 62520 <RTEMS_Malloc_Heap>,%sp@- 4f72e: 4eb9 0004 9608 jsr 49608 <_Protected_heap_Allocate_aligned_with_boundary>
return_this = _Protected_heap_Allocate_aligned(
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
4f734: 4fef 0010 lea %sp@(16),%sp 4f738: 2400 movel %d0,%d2
4f73a: 673c beqs 4f778 <rtems_memalign+0x7c> <== NEVER TAKEN
return ENOMEM;
/*
* If configured, update the more involved statistics
*/
if ( rtems_malloc_statistics_helpers )
4f73c: 2079 0006 2cc6 moveal 62cc6 <rtems_malloc_statistics_helpers>,%a0 4f742: 4a88 tstl %a0
4f744: 670a beqs 4f750 <rtems_memalign+0x54> <== ALWAYS TAKEN
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
4f746: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f748: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 4f74c: 4e90 jsr %a0@ <== NOT EXECUTED 4f74e: 588f addql #4,%sp <== NOT EXECUTED
*pointer = return_this;
4f750: 2482 movel %d2,%a2@
return 0; }
4f752: 242e fff8 movel %fp@(-8),%d2
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
4f756: 4280 clrl %d0
}
4f758: 246e fffc moveal %fp@(-4),%a2 4f75c: 4e5e unlk %fp 4f75e: 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() )
4f760: 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()) &&
4f766: 4a00 tstb %d0
4f768: 66ae bnes 4f718 <rtems_memalign+0x1c> <== ALWAYS TAKEN
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f76a: 242e fff8 movel %fp@(-8),%d2
/*
* 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;
4f76e: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f770: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4f774: 4e5e unlk %fp <== NOT EXECUTED 4f776: 4e75 rts <== NOT EXECUTED 4f778: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
return ENOMEM;
4f77c: 700c moveq #12,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f77e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4f782: 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 f3e8 pea 7f3e8 <_Message_queue_Information> <== NOT EXECUTED 56304: 4eb9 0005 b978 jsr 5b978 <_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 9d5c jsr 59d5c <_CORE_message_queue_Broadcast> <== NOT EXECUTED 5632c: 2400 movel %d0,%d2 <== NOT EXECUTED
NULL,
#endif
count
);
_Thread_Enable_dispatch();
5632e: 4eb9 0005 c52a jsr 5c52a <_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
...
0004ed50 <rtems_message_queue_create>:
uint32_t count,
size_t max_message_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
4ed50: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4ed54: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4ed58: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4ed5c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4ed60: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 4ed64: 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 ) )
4ed68: 4a82 tstl %d2 <== NOT EXECUTED 4ed6a: 6726 beqs 4ed92 <rtems_message_queue_create+0x42><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
4ed6c: 4a8a tstl %a2 <== NOT EXECUTED 4ed6e: 6700 009c beqw 4ee0c <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 )
4ed72: 4a83 tstl %d3 <== NOT EXECUTED 4ed74: 6710 beqs 4ed86 <rtems_message_queue_create+0x36><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( max_message_size == 0 )
4ed76: 4a84 tstl %d4 <== NOT EXECUTED 4ed78: 6624 bnes 4ed9e <rtems_message_queue_create+0x4e><== NOT EXECUTED
return RTEMS_INVALID_SIZE;
4ed7a: 7008 moveq #8,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed7c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ed82: 4e5e unlk %fp <== NOT EXECUTED 4ed84: 4e75 rts <== NOT EXECUTED
!_System_state_Is_multiprocessing )
return RTEMS_MP_NOT_CONFIGURED;
#endif
if ( count == 0 )
return RTEMS_INVALID_NUMBER;
4ed86: 700a moveq #10,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed88: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ed8e: 4e5e unlk %fp <== NOT EXECUTED 4ed90: 4e75 rts <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4ed92: 7003 moveq #3,%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
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4ed9e: 2039 0006 9d00 movel 69d00 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4eda4: 5280 addql #1,%d0 <== NOT EXECUTED 4eda6: 23c0 0006 9d00 movel %d0,69d00 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#endif
#endif
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
4edac: 4eb9 0005 55dc jsr 555dc <_Message_queue_Allocate> <== NOT EXECUTED 4edb2: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( !the_message_queue ) {
4edb4: 4a80 tstl %d0 <== NOT EXECUTED 4edb6: 6700 008a beqw 4ee42 <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;
4edba: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED 4edbe: 204e moveal %fp,%a0 <== NOT EXECUTED 4edc0: 44c0 movew %d0,%ccr <== NOT EXECUTED 4edc2: 56c0 sne %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4edc4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4edc8: 49c0 extbl %d0 <== NOT EXECUTED 4edca: 5280 addql #1,%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4edcc: 2741 0010 movel %d1,%a3@(16) <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4edd0: 2100 movel %d0,%a0@- <== NOT EXECUTED
else
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
if ( ! _CORE_message_queue_Initialize(
4edd2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4edd4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4edd6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4edd8: 486b 0014 pea %a3@(20) <== NOT EXECUTED 4eddc: 4eb9 0005 0164 jsr 50164 <_CORE_message_queue_Initialize> <== NOT EXECUTED 4ede2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4ede6: 4a00 tstb %d0 <== NOT EXECUTED 4ede8: 662e bnes 4ee18 <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 );
4edea: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4edec: 4879 0006 a564 pea 6a564 <_Message_queue_Information> <== NOT EXECUTED 4edf2: 4eb9 0005 1188 jsr 51188 <_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();
4edf8: 4eb9 0005 1f2e jsr 51f2e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
4edfe: 508f addql #8,%sp <== NOT EXECUTED 4ee00: 700d moveq #13,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee02: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ee08: 4e5e unlk %fp <== NOT EXECUTED 4ee0a: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4ee0c: 7009 moveq #9,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee0e: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ee14: 4e5e unlk %fp <== NOT EXECUTED 4ee16: 4e75 rts <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4ee18: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee1c: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee1e: 2079 0006 a57c moveal 6a57c <_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee24: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee26: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4ee2a: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Message_queue_Information,
&the_message_queue->Object,
(Objects_Name) name
);
*id = the_message_queue->Object.id;
4ee2e: 2480 movel %d0,%a2@ <== NOT EXECUTED
name,
0
);
#endif
_Thread_Enable_dispatch();
4ee30: 4eb9 0005 1f2e jsr 51f2e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
4ee36: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
0
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4ee3c: 4280 clrl %d0 <== NOT EXECUTED
}
4ee3e: 4e5e unlk %fp <== NOT EXECUTED 4ee40: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
if ( !the_message_queue ) {
_Thread_Enable_dispatch();
4ee42: 4eb9 0005 1f2e jsr 51f2e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4ee48: 7005 moveq #5,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee4a: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4ee50: 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 f3e8 pea 7f3e8 <_Message_queue_Information> <== NOT EXECUTED 5647c: 4eb9 0005 b978 jsr 5b978 <_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 f3e8 pea 7f3e8 <_Message_queue_Information> <== NOT EXECUTED 56496: 4eb9 0005 b50c jsr 5b50c <_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 9de8 jsr 59de8 <_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 f3e8 pea 7f3e8 <_Message_queue_Information> <== NOT EXECUTED 564b4: 4eb9 0005 b7d0 jsr 5b7d0 <_Objects_Free> <== NOT EXECUTED
0, /* Not used */
0
);
}
#endif
_Thread_Enable_dispatch();
564ba: 4eb9 0005 c52a jsr 5c52a <_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 f3e8 pea 7f3e8 <_Message_queue_Information> <== NOT EXECUTED 564f4: 4eb9 0005 b978 jsr 5b978 <_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 9e3c jsr 59e3c <_CORE_message_queue_Flush> <== NOT EXECUTED 56510: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
56512: 4eb9 0005 c52a jsr 5c52a <_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 f3e8 pea 7f3e8 <_Message_queue_Information> <== NOT EXECUTED 56554: 4eb9 0005 b978 jsr 5b978 <_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 c52a jsr 5c52a <_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
...
0004ee54 <rtems_message_queue_ident>:
rtems_status_code rtems_message_queue_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4ee54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
4ee58: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4ee5c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4ee60: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ee64: 4879 0006 a564 pea 6a564 <_Message_queue_Information> <== NOT EXECUTED 4ee6a: 4eb9 0005 14a4 jsr 514a4 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
node,
id
);
return _Status_Object_name_errors_to_status[ status ];
4ee70: 41f9 0006 73e2 lea 673e2 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4ee76: 4e5e unlk %fp <== NOT EXECUTED 4ee78: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004ee80 <rtems_message_queue_receive>:
void *buffer,
size_t *size,
rtems_option option_set,
rtems_interval timeout
)
{
4ee80: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4ee84: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4ee88: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4ee8c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
bool wait;
if ( !buffer )
4ee90: 4a82 tstl %d2 <== NOT EXECUTED 4ee92: 6776 beqs 4ef0a <rtems_message_queue_receive+0x8a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
4ee94: 4a83 tstl %d3 <== NOT EXECUTED 4ee96: 6772 beqs 4ef0a <rtems_message_queue_receive+0x8a><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
4ee98: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ee9c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4eea0: 4879 0006 a564 pea 6a564 <_Message_queue_Information> <== NOT EXECUTED 4eea6: 4eb9 0005 12f4 jsr 512f4 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4eeac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4eeb0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4eeb4: 6648 bnes 4eefe <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;
4eeb6: 7201 moveq #1,%d1 <== NOT EXECUTED
if ( _Options_Is_no_wait( option_set ) )
wait = false;
else
wait = true;
_CORE_message_queue_Seize(
4eeb8: 7801 moveq #1,%d4 <== NOT EXECUTED 4eeba: 2040 moveal %d0,%a0 <== NOT EXECUTED 4eebc: c2ae 0014 andl %fp@(20),%d1 <== NOT EXECUTED 4eec0: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4eec4: b384 eorl %d1,%d4 <== NOT EXECUTED 4eec6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4eec8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4eeca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4eecc: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4eed0: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4eed4: 4eb9 0005 0224 jsr 50224 <_CORE_message_queue_Seize> <== NOT EXECUTED
buffer,
size,
wait,
timeout
);
_Thread_Enable_dispatch();
4eeda: 4eb9 0005 1f2e jsr 51f2e <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Message_queue_Translate_core_message_queue_return_code(
_Thread_Executing->Wait.return_code
4eee0: 2079 0006 a18e moveal 6a18e <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
size,
wait,
timeout
);
_Thread_Enable_dispatch();
return _Message_queue_Translate_core_message_queue_return_code(
4eee6: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4eeea: 4eb9 0004 efa4 jsr 4efa4 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4eef0: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4eef4: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4eefa: 4e5e unlk %fp <== NOT EXECUTED 4eefc: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4eefe: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef00: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4ef06: 4e5e unlk %fp <== NOT EXECUTED 4ef08: 4e75 rts <== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
4ef0a: 7009 moveq #9,%d0 <== 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
...
0004ef18 <rtems_message_queue_send>:
rtems_status_code rtems_message_queue_send(
rtems_id id,
const void *buffer,
size_t size
)
{
4ef18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4ef1c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef1e: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4ef22: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef24: 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 )
4ef28: 676c beqs 4ef96 <rtems_message_queue_send+0x7e> <== NOT EXECUTED 4ef2a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ef2e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef30: 4879 0006 a564 pea 6a564 <_Message_queue_Information> <== NOT EXECUTED 4ef36: 4eb9 0005 12f4 jsr 512f4 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4ef3c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ef40: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ef44: 6642 bnes 4ef88 <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(
4ef46: 42a7 clrl %sp@- <== NOT EXECUTED 4ef48: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ef4a: 42a7 clrl %sp@- <== NOT EXECUTED 4ef4c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4ef52: 42a7 clrl %sp@- <== NOT EXECUTED 4ef54: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ef56: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4ef5a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef5c: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4ef60: 4eb9 0005 035c jsr 5035c <_CORE_message_queue_Submit> <== NOT EXECUTED
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
4ef66: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 4ef6a: 2400 movel %d0,%d2 <== NOT EXECUTED 4ef6c: 4eb9 0005 1f2e jsr 51f2e <_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);
4ef72: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ef74: 4eb9 0004 efa4 jsr 4efa4 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef7a: 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);
4ef7e: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef80: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4ef84: 4e5e unlk %fp <== NOT EXECUTED 4ef86: 4e75 rts <== NOT EXECUTED 4ef88: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ef8c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef8e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4ef92: 4e5e unlk %fp <== NOT EXECUTED 4ef94: 4e75 rts <== NOT EXECUTED 4ef96: 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;
4ef9a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef9c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4efa0: 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 f3e8 pea 7f3e8 <_Message_queue_Information> <== NOT EXECUTED 56716: 4eb9 0005 b978 jsr 5b978 <_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 a0ac jsr 5a0ac <_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 c52a jsr 5c52a <_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
0004dab4 <rtems_mkdir>:
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4dab4: 4e56 ff90 linkw %fp,#-112 <== NOT EXECUTED 4dab8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int success = 0; char *dup_path = strdup(path);
4dabc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4dac0: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
int success = 0; char *dup_path = strdup(path);
4dac4: 4eb9 0005 179c jsr 5179c <strdup> <== NOT EXECUTED
if (dup_path != NULL) {
4daca: 588f addql #4,%sp <== NOT EXECUTED
int
rtems_mkdir(const char *path, mode_t mode)
{
int success = 0;
char *dup_path = strdup(path);
4dacc: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (dup_path != NULL) {
4dace: 4a80 tstl %d0 <== NOT EXECUTED 4dad0: 6700 0138 beqw 4dc0a <rtems_mkdir+0x156> <== NOT EXECUTED
char *p;
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
4dad4: 742f moveq #47,%d2 <== NOT EXECUTED 4dad6: 1013 moveb %a3@,%d0 <== NOT EXECUTED 4dad8: 1200 moveb %d0,%d1 <== NOT EXECUTED 4dada: 49c1 extbl %d1 <== NOT EXECUTED 4dadc: b481 cmpl %d1,%d2 <== NOT EXECUTED 4dade: 6700 014a beqw 4dc2a <rtems_mkdir+0x176> <== NOT EXECUTED 4dae2: 244b moveal %a3,%a2 <== NOT EXECUTED
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4dae4: 49ea 0001 lea %a2@(1),%a4 <== NOT EXECUTED 4dae8: 4283 clrl %d3 <== NOT EXECUTED 4daea: 7201 moveq #1,%d1 <== NOT EXECUTED 4daec: 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) {
4daf2: 2e3c 0005 07ec movel #329708,%d7 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4daf8: 283c 0004 dd18 movel #318744,%d4 <== NOT EXECUTED
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
if (p[0] == '\0')
4dafe: 4a00 tstb %d0 <== NOT EXECUTED 4db00: 6710 beqs 4db12 <rtems_mkdir+0x5e> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
4db02: 49c0 extbl %d0 <== NOT EXECUTED 4db04: 742f moveq #47,%d2 <== NOT EXECUTED 4db06: b480 cmpl %d0,%d2 <== NOT EXECUTED 4db08: 6738 beqs 4db42 <rtems_mkdir+0x8e> <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
4db0a: 528a addql #1,%a2 <== NOT EXECUTED 4db0c: 101c moveb %a4@+,%d0 <== NOT EXECUTED
if (p[0] == '\0')
4db0e: 4a00 tstb %d0 <== NOT EXECUTED 4db10: 66f0 bnes 4db02 <rtems_mkdir+0x4e> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4db12: 7401 moveq #1,%d2 <== NOT EXECUTED 4db14: 4212 clrb %a2@ <== NOT EXECUTED
if (!last && p[1] == '\0')
last = 1;
if (first) {
4db16: 4a81 tstl %d1 <== NOT EXECUTED 4db18: 6650 bnes 4db6a <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) {
4db1a: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4db20: 4a82 tstl %d2 <== NOT EXECUTED 4db22: 662e bnes 4db52 <rtems_mkdir+0x9e> <== NOT EXECUTED
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4db24: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db26: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4db28: 4e95 jsr %a5@ <== NOT EXECUTED 4db2a: 508f addql #8,%sp <== NOT EXECUTED 4db2c: 4a80 tstl %d0 <== NOT EXECUTED 4db2e: 6d5c blts 4db8c <rtems_mkdir+0xd8> <== NOT EXECUTED
} else {
retval = 0;
break;
}
}
if (!last)
4db30: 4a82 tstl %d2 <== NOT EXECUTED 4db32: 6600 00c0 bnew 4dbf4 <rtems_mkdir+0x140> <== NOT EXECUTED
*p = '/';
4db36: 4281 clrl %d1 <== NOT EXECUTED 4db38: 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) {
4db3c: 528a addql #1,%a2 <== NOT EXECUTED 4db3e: 101c moveb %a4@+,%d0 <== NOT EXECUTED 4db40: 60cc bras 4db0e <rtems_mkdir+0x5a> <== NOT EXECUTED
if (p[0] == '\0')
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4db42: 4212 clrb %a2@ <== NOT EXECUTED
if (!last && p[1] == '\0')
4db44: 4a14 tstb %a4@ <== NOT EXECUTED 4db46: 57c2 seq %d2 <== NOT EXECUTED 4db48: 49c2 extbl %d2 <== NOT EXECUTED 4db4a: 4482 negl %d2 <== NOT EXECUTED
last = 1;
if (first) {
4db4c: 4a81 tstl %d1 <== NOT EXECUTED 4db4e: 67ca beqs 4db1a <rtems_mkdir+0x66> <== NOT EXECUTED 4db50: 6018 bras 4db6a <rtems_mkdir+0xb6> <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4db52: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4db54: 2044 moveal %d4,%a0 <== NOT EXECUTED 4db56: 4e90 jsr %a0@ <== NOT EXECUTED 4db58: 588f addql #4,%sp <== NOT EXECUTED
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4db5a: 2005 movel %d5,%d0 <== NOT EXECUTED 4db5c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db5e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4db60: 4e95 jsr %a5@ <== NOT EXECUTED 4db62: 508f addql #8,%sp <== NOT EXECUTED 4db64: 4a80 tstl %d0 <== NOT EXECUTED 4db66: 6cc8 bges 4db30 <rtems_mkdir+0x7c> <== NOT EXECUTED 4db68: 6022 bras 4db8c <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);
4db6a: 42a7 clrl %sp@- <== NOT EXECUTED 4db6c: 2044 moveal %d4,%a0 <== NOT EXECUTED 4db6e: 4e90 jsr %a0@ <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4db70: 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);
4db72: 2600 movel %d0,%d3 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4db74: 0280 ffff ff3f andil #-193,%d0 <== NOT EXECUTED 4db7a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4db7c: 4e90 jsr %a0@ <== NOT EXECUTED 4db7e: 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) {
4db80: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4db86: 4a82 tstl %d2 <== NOT EXECUTED 4db88: 679a beqs 4db24 <rtems_mkdir+0x70> <== NOT EXECUTED 4db8a: 60c6 bras 4db52 <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) {
4db8c: 2047 moveal %d7,%a0 <== NOT EXECUTED 4db8e: 2c3c 0005 07ec movel #329708,%d6 <== NOT EXECUTED 4db94: 4e90 jsr %a0@ <== NOT EXECUTED 4db96: 7211 moveq #17,%d1 <== NOT EXECUTED 4db98: 2040 moveal %d0,%a0 <== NOT EXECUTED 4db9a: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4db9c: 670c beqs 4dbaa <rtems_mkdir+0xf6> <== NOT EXECUTED 4db9e: 2046 moveal %d6,%a0 <== NOT EXECUTED 4dba0: 4e90 jsr %a0@ <== NOT EXECUTED 4dba2: 7215 moveq #21,%d1 <== NOT EXECUTED 4dba4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dba6: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4dba8: 6664 bnes 4dc0e <rtems_mkdir+0x15a> <== NOT EXECUTED
if (stat(path, &sb) < 0) {
4dbaa: 486e ffba pea %fp@(-70) <== NOT EXECUTED 4dbae: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4dbb0: 4eb9 0004 dc64 jsr 4dc64 <stat> <== NOT EXECUTED 4dbb6: 508f addql #8,%sp <== NOT EXECUTED 4dbb8: 4a80 tstl %d0 <== NOT EXECUTED 4dbba: 6d52 blts 4dc0e <rtems_mkdir+0x15a> <== NOT EXECUTED
retval = 0;
break;
} else if (!S_ISDIR(sb.st_mode)) {
4dbbc: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED 4dbc0: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED 4dbc6: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED 4dbcc: 6700 ff62 beqw 4db30 <rtems_mkdir+0x7c> <== NOT EXECUTED
if (last)
4dbd0: 4a82 tstl %d2 <== NOT EXECUTED 4dbd2: 677a beqs 4dc4e <rtems_mkdir+0x19a> <== NOT EXECUTED
errno = EEXIST;
4dbd4: 2046 moveal %d6,%a0 <== NOT EXECUTED 4dbd6: 4e90 jsr %a0@ <== NOT EXECUTED 4dbd8: 7211 moveq #17,%d1 <== NOT EXECUTED 4dbda: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dbdc: 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);
4dbde: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4dbe0: 4eb9 0004 40c0 jsr 440c0 <free> <== NOT EXECUTED 4dbe6: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dbe8: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4dbea: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4dbf0: 4e5e unlk %fp <== NOT EXECUTED 4dbf2: 4e75 rts <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
4dbf4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4dbf6: 4eb9 0004 40c0 jsr 440c0 <free> <== NOT EXECUTED 4dbfc: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dbfe: 4280 clrl %d0 <== NOT EXECUTED
}
4dc00: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4dc06: 4e5e unlk %fp <== NOT EXECUTED 4dc08: 4e75 rts <== NOT EXECUTED
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
}
return success != 0 ? 0 : -1;
4dc0a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4dc0c: 60dc bras 4dbea <rtems_mkdir+0x136> <== NOT EXECUTED
}
}
if (!last)
*p = '/';
}
if (!first && !last)
4dc0e: 4a82 tstl %d2 <== NOT EXECUTED 4dc10: 66cc bnes 4dbde <rtems_mkdir+0x12a> <== NOT EXECUTED
(void)umask(oumask);
4dc12: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4dc14: 4eb9 0004 dd18 jsr 4dd18 <umask> <== NOT EXECUTED 4dc1a: 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);
4dc1c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4dc1e: 4eb9 0004 40c0 jsr 440c0 <free> <== NOT EXECUTED 4dc24: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dc26: 70ff moveq #-1,%d0 <== NOT EXECUTED 4dc28: 60c0 bras 4dbea <rtems_mkdir+0x136> <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4dc2a: 45eb 0001 lea %a3@(1),%a2 <== NOT EXECUTED
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4dc2e: 49ea 0001 lea %a2@(1),%a4 <== NOT EXECUTED 4dc32: 4283 clrl %d3 <== NOT EXECUTED 4dc34: 7201 moveq #1,%d1 <== NOT EXECUTED 4dc36: 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) {
4dc3c: 2e3c 0005 07ec movel #329708,%d7 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4dc42: 283c 0004 dd18 movel #318744,%d4 <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4dc48: 1012 moveb %a2@,%d0 <== NOT EXECUTED 4dc4a: 6000 feb2 braw 4dafe <rtems_mkdir+0x4a> <== NOT EXECUTED
break;
} else if (!S_ISDIR(sb.st_mode)) {
if (last)
errno = EEXIST;
else
errno = ENOTDIR;
4dc4e: 2046 moveal %d6,%a0 <== NOT EXECUTED 4dc50: 4e90 jsr %a0@ <== NOT EXECUTED 4dc52: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dc54: 7014 moveq #20,%d0 <== NOT EXECUTED 4dc56: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
if (!last)
*p = '/';
}
if (!first && !last)
(void)umask(oumask);
4dc58: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4dc5a: 4eb9 0004 dd18 jsr 4dd18 <umask> <== NOT EXECUTED 4dc60: 588f addql #4,%sp <== NOT EXECUTED 4dc62: 60b8 bras 4dc1c <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 7c94 jmp 47c94 <_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 dee2 movel #384738,%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 f128 movel #389416,%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 b29c jsr 4b29c <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 deea movel #384746,%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 f0b0 movel #389296,%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 f098 movel #389272,%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 f1b8 pea 5f1b8 <rtems_objects_api_assoc> <== NOT EXECUTED 464ea: 4eb9 0004 b29c jsr 4b29c <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 deea movel #384746,%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 9ce8 jsr 49ce8 <_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 9540 jsr 49540 <_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 f210 lea 5f210 <_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 980c jmp 4980c <_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 8000 jsr 48000 <_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 81ec jsr 481ec <_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 839c jsr 4839c <_Objects_Set_name> <== NOT EXECUTED
_Thread_Enable_dispatch();
46558: 4eb9 0004 8e16 jsr 48e16 <_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 0d7e moveal 60d7e <_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 cf9e pea 5cf9e <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 e96c jsr 4e96c <__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 eb7c movel 7eb7c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 567f0: 5280 addql #1,%d0 <== NOT EXECUTED 567f2: 23c0 0007 eb7c movel %d0,7eb7c <_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 ea12 pea 7ea12 <_Partition_Information> <== NOT EXECUTED 567fe: 4eb9 0005 b47c jsr 5b47c <_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 9ce8 jsr 59ce8 <_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 ea2a moveal 7ea2a <_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 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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 ea12 pea 7ea12 <_Partition_Information> <== NOT EXECUTED 5688a: 4eb9 0005 b978 jsr 5b978 <_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 c52a jsr 5c52a <_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 ea12 pea 7ea12 <_Partition_Information> <== NOT EXECUTED 568bc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 568c0: 4eb9 0005 b50c jsr 5b50c <_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 ea12 pea 7ea12 <_Partition_Information> <== NOT EXECUTED 568d2: 4eb9 0005 b7d0 jsr 5b7d0 <_Objects_Free> <== NOT EXECUTED
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
568d8: 4eb9 0005 c52a jsr 5c52a <_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 ea12 pea 7ea12 <_Partition_Information> <== NOT EXECUTED 56906: 4eb9 0005 b978 jsr 5b978 <_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 9cac jsr 59cac <_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 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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 ea12 pea 7ea12 <_Partition_Information> <== NOT EXECUTED 56982: 4eb9 0005 bb28 jsr 5bb28 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
56988: 41f9 0007 7f60 lea 77f60 <_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 ea12 pea 7ea12 <_Partition_Information> <== NOT EXECUTED 569ae: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 569b2: 4eb9 0005 b978 jsr 5b978 <_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 9c4c jsr 59c4c <_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 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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 eb7c movel 7eb7c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 55cc8: 5280 addql #1,%d0 <== NOT EXECUTED 55cca: 23c0 0007 eb7c movel %d0,7eb7c <_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 e9d8 pea 7e9d8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55cd6: 4eb9 0005 b47c jsr 5b47c <_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 e9f0 moveal 7e9f0 <_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 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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 e9d8 pea 7e9d8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d46: 4eb9 0005 b978 jsr 5b978 <_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 e9d8 pea 7e9d8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d5e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 55d62: 4eb9 0005 b50c jsr 5b50c <_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 e9d8 pea 7e9d8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55d74: 4eb9 0005 b7d0 jsr 5b7d0 <_Objects_Free> <== NOT EXECUTED
_Dual_ported_memory_Free( the_port );
_Thread_Enable_dispatch();
55d7a: 4eb9 0005 c52a jsr 5c52a <_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 e9d8 pea 7e9d8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55db2: 4eb9 0005 b978 jsr 5b978 <_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 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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 e9d8 pea 7e9d8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55e28: 4eb9 0005 bb28 jsr 5bb28 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_ALL_NODES,
id
);
return _Status_Object_name_errors_to_status[ status ];
55e2e: 41f9 0007 7f60 lea 77f60 <_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 e9d8 pea 7e9d8 <_Dual_ported_memory_Information> <== NOT EXECUTED 55e5e: 4eb9 0005 b978 jsr 5b978 <_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 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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 f818 lea 4f818 <sprintf>,%a4 <== NOT EXECUTED 4214a: 4bf9 0004 ff34 lea 4ff34 <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 d03c pea 5d03c <IntUartPollCallbacks.6368+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 e7c8 moveal 5e7c8 <__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 d044 pea 5d044 <IntUartPollCallbacks.6368+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 f818 lea 4f818 <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 d03c pea 5d03c <IntUartPollCallbacks.6368+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 ff34 lea 4ff34 <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 f818 lea 4f818 <sprintf>,%a4 <== NOT EXECUTED 4226a: 4eb9 0004 ff34 jsr 4ff34 <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 e7c8 moveal 5e7c8 <__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 d044 pea 5d044 <IntUartPollCallbacks.6368+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 ff34 lea 4ff34 <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 ff34 lea 4ff34 <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 ea4c pea 7ea4c <_Rate_monotonic_Information> <== NOT EXECUTED 56a44: 4eb9 0005 b978 jsr 5b978 <_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 f012 movel 7f012 <_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 c52a jsr 5c52a <_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 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
56a86: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
_Thread_Enable_dispatch();
56a8a: 4eb9 0005 c52a jsr 5c52a <_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 1e62 movel 61e62 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 471c8: 5280 addql #1,%d0 <== NOT EXECUTED 471ca: 23c0 0006 1e62 movel %d0,61e62 <_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 1d6c pea 61d6c <_Rate_monotonic_Information> <== NOT EXECUTED 471d6: 4eb9 0004 9394 jsr 49394 <_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 22f0 lea 622f0 <_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 1d84 moveal 61d84 <_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 a50a jsr 4a50a <_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 a50a jsr 4a50a <_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 ea4c pea 7ea4c <_Rate_monotonic_Information> <== NOT EXECUTED 56b9c: 4eb9 0005 b978 jsr 5b978 <_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 ea4c pea 7ea4c <_Rate_monotonic_Information> <== NOT EXECUTED 56bb6: 4eb9 0005 b50c jsr 5b50c <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_period->Timer );
56bbc: 486a 0010 pea %a2@(16) <== NOT EXECUTED 56bc0: 4eb9 0005 d858 jsr 5d858 <_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 ea4c pea 7ea4c <_Rate_monotonic_Information> <== NOT EXECUTED 56bd2: 4eb9 0005 b7d0 jsr 5b7d0 <_Objects_Free> <== NOT EXECUTED
_Rate_monotonic_Free( the_period );
_Thread_Enable_dispatch();
56bd8: 4eb9 0005 c52a jsr 5c52a <_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
...
0004dcf8 <rtems_rate_monotonic_get_statistics>:
rtems_status_code rtems_rate_monotonic_get_statistics(
rtems_id id,
rtems_rate_monotonic_period_statistics *statistics
)
{
4dcf8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4dcfc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dcfe: 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 )
4dd02: 4a8a tstl %a2 <== NOT EXECUTED 4dd04: 6700 00a6 beqw 4ddac <rtems_rate_monotonic_get_statistics+0xb4><== NOT EXECUTED 4dd08: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4dd0c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4dd10: 4879 0006 1d6c pea 61d6c <_Rate_monotonic_Information> <== NOT EXECUTED 4dd16: 4eb9 0004 9958 jsr 49958 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4dd1c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4dd20: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dd22: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4dd26: 667a bnes 4dda2 <rtems_rate_monotonic_get_statistics+0xaa><== NOT EXECUTED
case OBJECTS_LOCAL:
dst = statistics;
src = &the_period->Statistics;
dst->count = src->count;
4dd28: 24a8 0054 movel %a0@(84),%a2@ <== NOT EXECUTED
dst->missed_count = src->missed_count;
4dd2c: 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 );
4dd32: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED 4dd36: 2228 0060 movel %a0@(96),%d1 <== NOT EXECUTED 4dd3a: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED 4dd3e: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time );
4dd42: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED 4dd46: 2228 0068 movel %a0@(104),%d1 <== NOT EXECUTED 4dd4a: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED 4dd4e: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
4dd52: 2028 006c movel %a0@(108),%d0 <== NOT EXECUTED 4dd56: 2228 0070 movel %a0@(112),%d1 <== NOT EXECUTED 4dd5a: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED 4dd5e: 2541 001c movel %d1,%a2@(28) <== NOT EXECUTED
_Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time );
4dd62: 2028 0074 movel %a0@(116),%d0 <== NOT EXECUTED 4dd66: 2228 0078 movel %a0@(120),%d1 <== NOT EXECUTED 4dd6a: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED 4dd6e: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time );
4dd72: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED 4dd76: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED 4dd7a: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED 4dd7e: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
4dd82: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED 4dd86: 2228 0088 movel %a0@(136),%d1 <== NOT EXECUTED 4dd8a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4dd8e: 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();
4dd92: 4eb9 0004 a50a jsr 4a50a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4dd98: 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;
4dd9c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4dd9e: 4e5e unlk %fp <== NOT EXECUTED 4dda0: 4e75 rts <== NOT EXECUTED 4dda2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4dda6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4dda8: 4e5e unlk %fp <== NOT EXECUTED 4ddaa: 4e75 rts <== NOT EXECUTED 4ddac: 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;
4ddb0: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ddb2: 4e5e unlk %fp <== NOT EXECUTED
...
0004ddb8 <rtems_rate_monotonic_get_status>:
rtems_status_code rtems_rate_monotonic_get_status(
rtems_id id,
rtems_rate_monotonic_period_status *status
)
{
4ddb8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4ddbc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ddbe: 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 )
4ddc2: 4a8a tstl %a2 <== NOT EXECUTED 4ddc4: 6700 00a0 beqw 4de66 <rtems_rate_monotonic_get_status+0xae><== NOT EXECUTED 4ddc8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ddcc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ddd0: 4879 0006 1d6c pea 61d6c <_Rate_monotonic_Information> <== NOT EXECUTED 4ddd6: 4eb9 0004 9958 jsr 49958 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4dddc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4dde0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dde2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4dde6: 6632 bnes 4de1a <rtems_rate_monotonic_get_status+0x62><== NOT EXECUTED
case OBJECTS_LOCAL:
status->owner = the_period->owner->Object.id;
4dde8: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED 4ddec: 24a9 0008 movel %a1@(8),%a2@ <== NOT EXECUTED
status->state = the_period->state;
4ddf0: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 4ddf4: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
/*
* If the period is inactive, there is no information.
*/
if ( status->state == RATE_MONOTONIC_INACTIVE ) {
4ddf8: 662a bnes 4de24 <rtems_rate_monotonic_get_status+0x6c><== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timespec_Set_to_zero( &status->since_last_period );
4ddfa: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED 4ddfe: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Timespec_Set_to_zero( &status->executed_since_last_period );
4de02: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED 4de06: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
status->since_last_period = since_last_period;
status->executed_since_last_period = executed;
#endif
}
_Thread_Enable_dispatch();
4de0a: 4eb9 0004 a50a jsr 4a50a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4de10: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de12: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4de16: 4e5e unlk %fp <== NOT EXECUTED 4de18: 4e75 rts <== NOT EXECUTED 4de1a: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4de1e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4de20: 4e5e unlk %fp <== NOT EXECUTED 4de22: 4e75 rts <== NOT EXECUTED
} else {
/*
* Grab the current status.
*/
valid_status =
4de24: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 4de28: 486e ffec pea %fp@(-20) <== NOT EXECUTED 4de2c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4de2e: 4eb9 0004 72c0 jsr 472c0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
4de34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4de38: 4a00 tstb %d0 <== NOT EXECUTED 4de3a: 6734 beqs 4de70 <rtems_rate_monotonic_get_status+0xb8><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_To_timespec(
4de3c: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED 4de40: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED 4de44: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED 4de48: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
&since_last_period, &status->since_last_period
);
_Timestamp_To_timespec(
4de4c: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 4de50: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED 4de54: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED 4de58: 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();
4de5c: 4eb9 0004 a50a jsr 4a50a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4de62: 4280 clrl %d0 <== NOT EXECUTED 4de64: 60ac bras 4de12 <rtems_rate_monotonic_get_status+0x5a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de66: 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;
4de6a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de6c: 4e5e unlk %fp <== NOT EXECUTED 4de6e: 4e75 rts <== NOT EXECUTED
valid_status =
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
_Thread_Enable_dispatch();
4de70: 4eb9 0004 a50a jsr 4a50a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de76: 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;
4de7a: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4de7c: 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 1d6c pea 61d6c <_Rate_monotonic_Information> <== NOT EXECUTED 472ac: 4eb9 0004 9b08 jsr 49b08 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
472b2: 41f9 0005 f5e6 lea 5f5e6 <_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 1d6c pea 61d6c <_Rate_monotonic_Information> <== NOT EXECUTED 47528: 4eb9 0004 9958 jsr 49958 <_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 22f0 moveal 622f0 <_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 a50a jsr 4a50a <_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 a50a jsr 4a50a <_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 1f42 pea 61f42 <_Watchdog_Ticks_chain> <== NOT EXECUTED 475ea: 4eb9 0004 b540 jsr 4b540 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
475f0: 4eb9 0004 a50a jsr 4a50a <_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 f406 lea 5f406 <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 a50a jsr 4a50a <_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 1f42 pea 61f42 <_Watchdog_Ticks_chain> <== NOT EXECUTED 47664: 4eb9 0004 b540 jsr 4b540 <_Watchdog_Insert> <== NOT EXECUTED
);
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
4766a: 4eb9 0004 a50a jsr 4a50a <_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 22f0 moveal 622f0 <_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 ae08 jsr 4ae08 <_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 a50a jsr 4a50a <_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 22f0 movel 622f0 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4770c: 4eb9 0004 a154 jsr 4a154 <_Thread_Clear_state> <== NOT EXECUTED 47712: 508f addql #8,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
47714: 4eb9 0004 a50a jsr 4a50a <_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 d264 pea 4d264 <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 f41a pea 5f41a <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 f438 pea 5f438 <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 f45a pea 5f45a <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 f47d pea 5f47d <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 f4c8 movel #390344,%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 1d72 movel 61d72 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED 4776e: 508f addql #8,%sp <== NOT EXECUTED 47770: b4b9 0006 1d76 cmpl 61d76 <_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
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
#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 dcf8 lea 4dcf8 <rtems_rate_monotonic_get_statistics>,%a3<== NOT EXECUTED
#if defined(RTEMS_DEBUG)
status = rtems_rate_monotonic_get_status( id, &the_status );
if ( status != RTEMS_SUCCESSFUL )
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
47788: 4bf9 0004 ddb8 lea 4ddb8 <rtems_rate_monotonic_get_status>,%a5<== NOT EXECUTED
#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 b140 movel #307520,%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 1d76 cmpl 61d76 <_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
#if defined(RTEMS_DEBUG)
status = rtems_rate_monotonic_get_status( id, &the_status );
if ( status != RTEMS_SUCCESSFUL )
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
477bc: 486e ffda pea %fp@(-38) <== NOT EXECUTED 477c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 477c2: 4e95 jsr %a5@ <== NOT EXECUTED
#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 f514 pea 5f514 <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 f33e pea 5f33e <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 1d76 cmpl 61d76 <_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 f52b pea 5f52b <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 f54a pea 5f54a <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 1d76 cmpl 61d76 <_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 1e62 movel 61e62 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 478e2: 5280 addql #1,%d0 <== NOT EXECUTED 478e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 478e6: 23c0 0006 1e62 movel %d0,61e62 <_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 1d72 movel 61d72 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED 478f4: b4b9 0006 1d76 cmpl 61d76 <_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++ ) {
(void) 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
(void) 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 1d76 cmpl 61d76 <_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 a50a jmp 4a50a <_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 1d6c pea 61d6c <_Rate_monotonic_Information> <== NOT EXECUTED 47936: 4eb9 0004 9958 jsr 49958 <_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 a50a jsr 4a50a <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5731e: 4eb9 0005 9bb8 jsr 59bb8 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 5732a: 4eb9 0005 b47c jsr 5b47c <_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 b00e jsr 5b00e <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_INVALID_SIZE;
5735c: 7408 moveq #8,%d2 <== NOT EXECUTED 5735e: 4eb9 0005 b7d0 jsr 5b7d0 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5736c: 4eb9 0005 9c18 jsr 59c18 <_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 ccbc jsr 5ccbc <_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 ea9e moveal 7ea9e <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 573e2: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5741e: 4eb9 0005 9bb8 jsr 59bb8 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 57432: 4eb9 0005 b93c jsr 5b93c <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ea86 pea 7ea86 <_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 b50c jsr 5b50c <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 5749a: 4eb9 0005 b7d0 jsr 5b7d0 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 574aa: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 574d6: 4eb9 0005 9bb8 jsr 59bb8 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 574ea: 4eb9 0005 b93c jsr 5b93c <_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 aa14 jsr 5aa14 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5752c: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5758e: 4eb9 0005 9bb8 jsr 59bb8 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 575a2: 4eb9 0005 b93c jsr 5b93c <_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 ade8 jsr 5ade8 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 575d6: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57622: 4eb9 0005 9bb8 jsr 59bb8 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 57636: 4eb9 0005 b93c jsr 5b93c <_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 ae44 jsr 5ae44 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5765e: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 576c2: 4eb9 0005 9bb8 jsr 59bb8 <_API_Mutex_Lock> <== NOT EXECUTED 576c8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 576cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 576ce: 4879 0007 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED
executing = _Thread_Executing;
576d4: 2879 0007 f012 moveal 7f012 <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED 576da: 4eb9 0005 b93c jsr 5b93c <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 576fa: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 576fe: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5771c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57720: 4eb9 0005 9c18 jsr 59c18 <_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 a864 jsr 5a864 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57754: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57758: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 57784: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 57788: 4eb9 0005 9c18 jsr 59c18 <_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 eb7c movel 7eb7c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5779e: 5280 addql #1,%d0 <== NOT EXECUTED 577a0: 23c0 0007 eb7c movel %d0,7eb7c <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 577ac: 4eb9 0005 9c18 jsr 59c18 <_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 cdc8 pea 5cdc8 <_Thread_queue_Timeout> <== NOT EXECUTED 577d6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 577da: 2f00 movel %d0,%sp@- <== NOT EXECUTED 577dc: 4eb9 0005 ca04 jsr 5ca04 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
577e2: 4eb9 0005 c52a jsr 5c52a <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5781c: 4eb9 0005 9bb8 jsr 59bb8 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 57830: 4eb9 0005 b93c jsr 5b93c <_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 b35c jsr 5b35c <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 578c8: 4eb9 0005 bb28 jsr 5bb28 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
578ce: 41f9 0007 7f60 lea 77f60 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 578f4: 4eb9 0005 9bb8 jsr 59bb8 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 57908: 4eb9 0005 b93c jsr 5b93c <_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 b270 jsr 5b270 <_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 ff24 jsr 5ff24 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5795e: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5797a: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED 5797e: 4eb9 0005 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 579ba: 4eb9 0005 9bb8 jsr 59bb8 <_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 ea86 pea 7ea86 <_Region_Information> <== NOT EXECUTED 579ce: 4eb9 0005 b93c jsr 5b93c <_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 ac70 jsr 5ac70 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ec3c movel 7ec3c <_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 9c18 jsr 59c18 <_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 ff24 jsr 5ff24 <_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 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0 46252: 5280 addql #1,%d0 46254: 23c0 0005 fcf8 movel %d0,5fcf8 <_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 fc3c pea 5fc3c <_Semaphore_Information> 46260: 4eb9 0004 7924 jsr 47924 <_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 6f98 jsr 46f98 <_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 fc3c pea 5fc3c <_Semaphore_Information> <== NOT EXECUTED 462c6: 4eb9 0004 7c78 jsr 47c78 <_Objects_Free> <== NOT EXECUTED
_Semaphore_Free( the_semaphore );
_Thread_Enable_dispatch();
462cc: 4eb9 0004 8996 jsr 48996 <_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 72d0 jsr 472d0 <_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 fc54 moveal 5fc54 <_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 8996 jsr 48996 <_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 8996 jsr 48996 <_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 fc3c pea 5fc3c <_Semaphore_Information> 463b4: 4eb9 0004 7de4 jsr 47de4 <_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 8996 jsr 48996 <_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 6f8c jsr 46f8c <_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 fc3c pea 5fc3c <_Semaphore_Information> 46410: 4eb9 0004 79b4 jsr 479b4 <_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 fc3c pea 5fc3c <_Semaphore_Information> 4641e: 4eb9 0004 7c78 jsr 47c78 <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46424: 4eb9 0004 8996 jsr 48996 <_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 72c4 jsr 472c4 <_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 fc3c pea 5fc3c <_Semaphore_Information> 46454: 4eb9 0004 79b4 jsr 479b4 <_Objects_Close> 4645a: 2f0a movel %a2,%sp@- 4645c: 4879 0005 fc3c pea 5fc3c <_Semaphore_Information> 46462: 4eb9 0004 7c78 jsr 47c78 <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46468: 4eb9 0004 8996 jsr 48996 <_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>
...
0005029c <rtems_semaphore_flush>:
#endif
rtems_status_code rtems_semaphore_flush(
rtems_id id
)
{
5029c: 4e56 fffc linkw %fp,#-4 502a0: 486e fffc pea %fp@(-4) 502a4: 2f2e 0008 movel %fp@(8),%sp@- 502a8: 4879 0006 3e64 pea 63e64 <_Semaphore_Information> 502ae: 4eb9 0004 939c jsr 4939c <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
502b4: 4fef 000c lea %sp@(12),%sp 502b8: 4aae fffc tstl %fp@(-4)
502bc: 6706 beqs 502c4 <rtems_semaphore_flush+0x28> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
502be: 7004 moveq #4,%d0 <== NOT EXECUTED
}
502c0: 4e5e unlk %fp <== NOT EXECUTED 502c2: 4e75 rts <== NOT EXECUTED
502c4: 7230 moveq #48,%d1 502c6: 2040 moveal %d0,%a0 502c8: 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) ) {
502cc: 6720 beqs 502ee <rtems_semaphore_flush+0x52> <== NEVER TAKEN
_CORE_mutex_Flush(
502ce: 4878 0001 pea 1 <ADD> 502d2: 42a7 clrl %sp@- 502d4: 4868 0014 pea %a0@(20) 502d8: 4eb9 0004 8544 jsr 48544 <_CORE_mutex_Flush> 502de: 4fef 000c lea %sp@(12),%sp
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
502e2: 4eb9 0004 9f56 jsr 49f56 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
502e8: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
502ea: 4e5e unlk %fp 502ec: 4e75 rts
&the_semaphore->Core_control.mutex,
SEND_OBJECT_WAS_DELETED,
CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT
);
} else {
_CORE_semaphore_Flush(
502ee: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 502f2: 2040 moveal %d0,%a0 <== NOT EXECUTED 502f4: 42a7 clrl %sp@- <== NOT EXECUTED 502f6: 4868 0014 pea %a0@(20) <== NOT EXECUTED 502fa: 4eb9 0004 887c jsr 4887c <_CORE_semaphore_Flush> <== NOT EXECUTED 50300: 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();
50304: 4eb9 0004 9f56 jsr 49f56 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
5030a: 4280 clrl %d0 <== NOT EXECUTED 5030c: 60dc bras 502ea <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 eac0 pea 7eac0 <_Semaphore_Information> <== NOT EXECUTED 57d6a: 4eb9 0005 bb28 jsr 5bb28 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
57d70: 41f9 0007 7f60 lea 77f60 <_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 fc3c pea 5fc3c <_Semaphore_Information> 46494: 262e 000c movel %fp@(12),%d3 46498: 282e 0010 movel %fp@(16),%d4 4649c: 4eb9 0004 7d84 jsr 47d84 <_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 7114 jsr 47114 <_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 0186 moveal 60186 <_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 0186 moveal 60186 <_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 0186 moveal 60186 <_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 0186 moveal 60186 <_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 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 46562: 5281 addql #1,%d1 <== NOT EXECUTED 46564: 23c1 0005 fcf8 movel %d1,5fcf8 <_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 9234 pea 49234 <_Thread_queue_Timeout> <== NOT EXECUTED 4658c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4658e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46590: 4eb9 0004 8e70 jsr 48e70 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
46596: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
_Thread_Executing->Wait.return_code );
4659c: 2079 0006 0186 moveal 60186 <_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 fc3c pea 5fc3c <_Semaphore_Information> 465ce: 4eb9 0004 7de4 jsr 47de4 <_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 7318 jsr 47318 <_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 8996 jsr 48996 <_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 71c4 jsr 471c4 <_CORE_mutex_Surrender> 4662c: 2400 movel %d0,%d2
&the_semaphore->Core_control.mutex,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
4662e: 4eb9 0004 8996 jsr 48996 <_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
00046b54 <rtems_shutdown_executive>:
void rtems_shutdown_executive(
uint32_t result
)
{
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b54: 7003 moveq #3,%d0
*/
void rtems_shutdown_executive(
uint32_t result
)
{
46b56: 4e56 0000 linkw %fp,#0
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b5a: b0b9 0005 fe64 cmpl 5fe64 <_System_state_Current>,%d0
46b60: 6710 beqs 46b72 <rtems_shutdown_executive+0x1e>
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
_Thread_Stop_multitasking();
}
_Internal_error_Occurred(
46b62: 4878 0014 pea 14 <OPER2> 46b66: 4878 0001 pea 1 <ADD> 46b6a: 42a7 clrl %sp@- 46b6c: 4eb9 0004 7868 jsr 47868 <_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 );
46b72: 4879 0005 fcc4 pea 5fcc4 <_Thread_BSP_context> 46b78: 103c 0004 moveb #4,%d0 46b7c: 23c0 0005 fe64 movel %d0,5fe64 <_System_state_Current> 46b82: 4eb9 0004 9c1e jsr 49c1e <_CPU_Context_Restart_self>
46b88: 588f addql #4,%sp <== NOT EXECUTED 46b8a: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED 46b8e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED 46b92: 42a7 clrl %sp@- <== NOT EXECUTED 46b94: 4eb9 0004 7868 jsr 47868 <_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 1480 movel 61480 <_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 190e moveal 6190e <_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 00fe moveal %a0@(254),%a0 <== NOT EXECUTED 47742: 23c1 0006 1480 movel %d1,61480 <_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 9da2 jsr 49da2 <_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 9da2 jsr 49da2 <_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 c550 jsr 5c550 <_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 00fe moveal %a1@(254),%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 f00e tstl 7f00e <_Per_CPU_Information+0x8> <== NOT EXECUTED 57fe6: 6708 beqs 57ff0 <rtems_signal_send+0x74> <== NOT EXECUTED 57fe8: b0b9 0007 f012 cmpl 7f012 <_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 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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 f01e moveb %d0,7f01e <_Per_CPU_Information+0x18> <== NOT EXECUTED
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
58028: 4eb9 0005 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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
...
00042a9e <rtems_stack_checker_begin_extension>:
* rtems_stack_checker_Begin_extension
*/
void rtems_stack_checker_begin_extension(
Thread_Control *the_thread
)
{
42a9e: 4e56 0000 linkw %fp,#0 42aa2: 206e 0008 moveal %fp@(8),%a0
Stack_check_Control *the_pattern;
if ( the_thread->Object.id == 0 ) /* skip system tasks */
42aa6: 4aa8 0008 tstl %a0@(8)
42aaa: 672c beqs 42ad8 <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;
42aac: 2068 00b6 moveal %a0@(182),%a0 42ab0: 43f9 0006 2d74 lea 62d74 <Stack_check_Pattern>,%a1 42ab6: 2151 0008 movel %a1@,%a0@(8) 42aba: 43f9 0006 2d78 lea 62d78 <Stack_check_Pattern+0x4>,%a1 42ac0: 2151 000c movel %a1@,%a0@(12) 42ac4: 43f9 0006 2d7c lea 62d7c <Stack_check_Pattern+0x8>,%a1 42aca: 2151 0010 movel %a1@,%a0@(16) 42ace: 43f9 0006 2d80 lea 62d80 <Stack_check_Pattern+0xc>,%a1 42ad4: 2151 0014 movel %a1@,%a0@(20)
}
42ad8: 4e5e unlk %fp <== NOT EXECUTED
00042a6a <rtems_stack_checker_create_extension>:
*/
bool rtems_stack_checker_create_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *the_thread
)
{
42a6a: 4e56 0000 linkw %fp,#0 42a6e: 2f0a movel %a2,%sp@- 42a70: 246e 000c moveal %fp@(12),%a2
Stack_check_Initialize();
42a74: 4eb9 0004 29f0 jsr 429f0 <Stack_check_Initialize>
if (the_thread)
42a7a: 4a8a tstl %a2
42a7c: 6716 beqs 42a94 <rtems_stack_checker_create_extension+0x2a><== NEVER TAKEN
Stack_check_Dope_stack(&the_thread->Start.Initial_stack);
42a7e: 2f2a 00b2 movel %a2@(178),%sp@- 42a82: 4878 00a5 pea a5 <DBL_MANT_DIG+0x70> 42a86: 2f2a 00b6 movel %a2@(182),%sp@- 42a8a: 4eb9 0005 2100 jsr 52100 <memset> 42a90: 4fef 000c lea %sp@(12),%sp
return true;
}
42a94: 246e fffc moveal %fp@(-4),%a2 42a98: 4e5e unlk %fp
42a9a: 7001 moveq #1,%d0 <== NOT EXECUTED
00042c0c <rtems_stack_checker_is_blown>:
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
42c0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack;
42c10: 2279 0006 33de moveal 633de <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
42c16: 2069 00b6 moveal %a1@(182),%a0 <== NOT EXECUTED
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
42c1a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
42c1c: b1ce cmpal %fp,%a0 <== NOT EXECUTED 42c1e: 6248 bhis 42c68 <rtems_stack_checker_is_blown+0x5c><== NOT EXECUTED
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
42c20: 2008 movel %a0,%d0 <== NOT EXECUTED 42c22: d0a9 00b2 addl %a1@(178),%d0 <== NOT EXECUTED
}
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
42c26: b08e cmpl %fp,%d0 <== NOT EXECUTED 42c28: 54c2 scc %d2 <== NOT EXECUTED 42c2a: 4482 negl %d2 <== NOT EXECUTED
/*
* The stack checker must be initialized before the pattern is there
* to check.
*/
if ( Stack_check_Initialized ) {
42c2c: 4ab9 0006 2570 tstl 62570 <Stack_check_Initialized> <== NOT EXECUTED 42c32: 6730 beqs 42c64 <rtems_stack_checker_is_blown+0x58><== NOT EXECUTED
pattern_ok = (!memcmp(
42c34: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 42c38: 4879 0006 2d74 pea 62d74 <Stack_check_Pattern> <== NOT EXECUTED 42c3e: 4868 0008 pea %a0@(8) <== NOT EXECUTED 42c42: 4eb9 0005 2010 jsr 52010 <memcmp> <== NOT EXECUTED 42c48: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 42c4c: 4a80 tstl %d0 <== NOT EXECUTED 42c4e: 57c0 seq %d0 <== NOT EXECUTED 42c50: 4480 negl %d0 <== NOT EXECUTED
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
42c52: 4a02 tstb %d2 <== NOT EXECUTED 42c54: 6716 beqs 42c6c <rtems_stack_checker_is_blown+0x60><== NOT EXECUTED 42c56: 4a00 tstb %d0 <== NOT EXECUTED 42c58: 6712 beqs 42c6c <rtems_stack_checker_is_blown+0x60><== NOT EXECUTED
/*
* The Stack Pointer and the Pattern Area are OK so return false.
*/
return false;
}
42c5a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 42c5e: 4e5e unlk %fp <== NOT EXECUTED 42c60: 4200 clrb %d0 <== NOT EXECUTED 42c62: 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;
42c64: 7001 moveq #1,%d0 <== NOT EXECUTED 42c66: 60ea bras 42c52 <rtems_stack_checker_is_blown+0x46><== NOT EXECUTED
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
return false;
42c68: 4202 clrb %d2 <== NOT EXECUTED 42c6a: 60c0 bras 42c2c <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 );
42c6c: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 42c72: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42c74: 2f39 0006 33de movel 633de <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 42c7a: 4eb9 0004 2adc jsr 42adc <Stack_check_report_blown_task> <== NOT EXECUTED
00042ce6 <rtems_stack_checker_report_usage>:
void rtems_stack_checker_report_usage( void )
{
42ce6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_stack_checker_report_usage_with_plugin( NULL, printk_plugin );
42cea: 4879 0004 4c0c pea 44c0c <printk_plugin> <== NOT EXECUTED 42cf0: 42a7 clrl %sp@- <== NOT EXECUTED 42cf2: 4eb9 0004 2c80 jsr 42c80 <rtems_stack_checker_report_usage_with_plugin><== NOT EXECUTED 42cf8: 508f addql #8,%sp <== NOT EXECUTED
}
42cfa: 4e5e unlk %fp <== NOT EXECUTED
...
00042c80 <rtems_stack_checker_report_usage_with_plugin>:
void rtems_stack_checker_report_usage_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
42c80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42c84: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42c86: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 42c8a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42c8c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ( !print )
42c90: 4a8a tstl %a2 <== NOT EXECUTED 42c92: 6746 beqs 42cda <rtems_stack_checker_report_usage_with_plugin+0x5a><== NOT EXECUTED
return;
print_context = context;
print_handler = print;
(*print)( context, "Stack usage by thread\n");
42c94: 4879 0006 0046 pea 60046 <IntUartPollCallbacks.6368+0x13c> <== NOT EXECUTED
)
{
if ( !print )
return;
print_context = context;
42c9a: 23c2 0006 2568 movel %d2,62568 <print_context> <== NOT EXECUTED
print_handler = print;
(*print)( context, "Stack usage by thread\n");
42ca0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
{
if ( !print )
return;
print_context = context;
print_handler = print;
42ca2: 23ca 0006 256c movel %a2,6256c <print_handler> <== NOT EXECUTED
(*print)( context, "Stack usage by thread\n");
42ca8: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context,
42caa: 4879 0006 005d pea 6005d <IntUartPollCallbacks.6368+0x153> <== NOT EXECUTED 42cb0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42cb2: 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 );
42cb4: 4879 0004 2860 pea 42860 <Stack_check_Dump_threads_usage> <== NOT EXECUTED 42cba: 4eb9 0004 a7b4 jsr 4a7b4 <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);
42cc0: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 42cc4: 4eb9 0004 2860 jsr 42860 <Stack_check_Dump_threads_usage> <== NOT EXECUTED
#endif
print_context = NULL;
print_handler = NULL;
42cca: 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;
42cce: 42b9 0006 2568 clrl 62568 <print_context> <== NOT EXECUTED
print_handler = NULL;
42cd4: 42b9 0006 256c clrl 6256c <print_handler> <== NOT EXECUTED
}
42cda: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 42cde: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 42ce2: 4e5e unlk %fp <== NOT EXECUTED
00042b8c <rtems_stack_checker_switch_extension>:
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *heir __attribute__((unused))
)
{
42b8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42b90: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42b92: 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 = Stack_check_Get_pattern_area(the_stack);
42b96: 222a 00b6 movel %a2@(182),%d1 <== NOT EXECUTED 42b9a: 5081 addql #8,%d1 <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
42b9c: 202a 00b6 movel %a2@(182),%d0 <== NOT EXECUTED 42ba0: b08e cmpl %fp,%d0 <== NOT EXECUTED 42ba2: 622a bhis 42bce <rtems_stack_checker_switch_extension+0x42><== NOT EXECUTED
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
42ba4: d0aa 00b2 addl %a2@(178),%d0 <== NOT EXECUTED 42ba8: b08e cmpl %fp,%d0 <== NOT EXECUTED 42baa: 6522 bcss 42bce <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,
42bac: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 42bb0: 4879 0006 2d74 pea 62d74 <Stack_check_Pattern> <== NOT EXECUTED 42bb6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 42bb8: 4eb9 0005 2010 jsr 52010 <memcmp> <== NOT EXECUTED 42bbe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
(void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
if ( !sp_ok || !pattern_ok ) {
42bc2: 4a80 tstl %d0 <== NOT EXECUTED 42bc4: 6634 bnes 42bfa <rtems_stack_checker_switch_extension+0x6e><== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
}
}
42bc6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 42bca: 4e5e unlk %fp <== NOT EXECUTED 42bcc: 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,
42bce: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 42bd2: 4879 0006 2d74 pea 62d74 <Stack_check_Pattern> <== NOT EXECUTED 42bd8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 42bda: 4eb9 0005 2010 jsr 52010 <memcmp> <== NOT EXECUTED 42be0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 42be4: 4a80 tstl %d0 <== NOT EXECUTED 42be6: 57c0 seq %d0 <== NOT EXECUTED 42be8: 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 );
42bea: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 42bf0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42bf2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42bf4: 4eb9 0004 2adc jsr 42adc <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 ) {
42bfa: 4200 clrb %d0 <== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
42bfc: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 42c02: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42c04: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42c06: 4eb9 0004 2adc jsr 42adc <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 d27c pea 5d27c <rtems_status_assoc> <== NOT EXECUTED 4294a: 4eb9 0004 ade4 jsr 4ade4 <rtems_assoc_name_by_local> <== NOT EXECUTED
}
42950: 4e5e unlk %fp <== NOT EXECUTED
0004d648 <rtems_string_to_double>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d648: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4d64c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4d650: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d654: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d658: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d65c: 4a8a tstl %a2 <== NOT EXECUTED 4d65e: 677a beqs 4d6da <rtems_string_to_double+0x92> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d660: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4d666: 4e94 jsr %a4@ <== NOT EXECUTED
*n = 0;
4d668: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d66a: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4d66c: 4280 clrl %d0 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d66e: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d670: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d674: 2480 movel %d0,%a2@ <== NOT EXECUTED 4d676: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d67a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d67c: 4eb9 0005 3480 jsr 53480 <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 )
4d682: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d684: 2600 movel %d0,%d3 <== NOT EXECUTED 4d686: 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 )
4d688: 4a8b tstl %a3 <== NOT EXECUTED 4d68a: 675a beqs 4d6e6 <rtems_string_to_double+0x9e> <== NOT EXECUTED
*endptr = end;
4d68c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d690: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d692: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d694: 6756 beqs 4d6ec <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))
4d696: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED 4d69a: 2f3c 7fef ffff movel #2146435071,%sp@- <== NOT EXECUTED 4d6a0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d6a2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d6a4: 4eb9 0005 e594 jsr 5e594 <__gtdf2> <== NOT EXECUTED 4d6aa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d6ae: 4a80 tstl %d0 <== NOT EXECUTED 4d6b0: 6e12 bgts 4d6c4 <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;
4d6b2: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4d6b4: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d6b6: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL; }
4d6ba: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d6c0: 4e5e unlk %fp <== NOT EXECUTED 4d6c2: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d6c4: 4e94 jsr %a4@ <== NOT EXECUTED 4d6c6: 7222 moveq #34,%d1 <== NOT EXECUTED 4d6c8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d6ca: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d6cc: 66e4 bnes 4d6b2 <rtems_string_to_double+0x6a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d6ce: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6d0: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d6d6: 4e5e unlk %fp <== NOT EXECUTED 4d6d8: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d6da: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6dc: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d6e2: 4e5e unlk %fp <== NOT EXECUTED 4d6e4: 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 )
4d6e6: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d6ea: 60a6 bras 4d692 <rtems_string_to_double+0x4a> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d6ec: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6ee: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d6f4: 4e5e unlk %fp <== NOT EXECUTED
0004d6f8 <rtems_string_to_float>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d6f8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4d6fc: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d700: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d704: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d708: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d70c: 4a8a tstl %a2 <== NOT EXECUTED 4d70e: 6768 beqs 4d778 <rtems_string_to_float+0x80> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d710: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4d716: 4e94 jsr %a4@ <== NOT EXECUTED 4d718: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d71a: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d71c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d720: 24bc 0000 0000 movel #0,%a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d726: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d728: 4eb9 0005 34a0 jsr 534a0 <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 )
4d72e: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d730: 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 )
4d732: 4a8b tstl %a3 <== NOT EXECUTED 4d734: 674e beqs 4d784 <rtems_string_to_float+0x8c> <== NOT EXECUTED
*endptr = end;
4d736: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d73a: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d73c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d73e: 674a beqs 4d78a <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))
4d740: 2f3c 7f7f ffff movel #2139095039,%sp@- <== NOT EXECUTED 4d746: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d748: 4eb9 0005 e624 jsr 5e624 <__gtsf2> <== NOT EXECUTED 4d74e: 508f addql #8,%sp <== NOT EXECUTED 4d750: 4a80 tstl %d0 <== NOT EXECUTED 4d752: 6e0e bgts 4d762 <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;
4d754: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4d756: 4280 clrl %d0 <== NOT EXECUTED
}
4d758: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d75e: 4e5e unlk %fp <== NOT EXECUTED 4d760: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d762: 4e94 jsr %a4@ <== NOT EXECUTED 4d764: 7222 moveq #34,%d1 <== NOT EXECUTED 4d766: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d768: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d76a: 66e8 bnes 4d754 <rtems_string_to_float+0x5c> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d76c: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d76e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d774: 4e5e unlk %fp <== NOT EXECUTED 4d776: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d778: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d77a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d780: 4e5e unlk %fp <== NOT EXECUTED 4d782: 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 )
4d784: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d788: 60b2 bras 4d73c <rtems_string_to_float+0x44> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d78a: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d78c: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d792: 4e5e unlk %fp <== NOT EXECUTED
...
0004d798 <rtems_string_to_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d798: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4d79c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d7a0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d7a4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d7a8: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d7ac: 4a8a tstl %a2 <== NOT EXECUTED 4d7ae: 675e beqs 4d80e <rtems_string_to_int+0x76> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d7b0: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4d7b6: 4e94 jsr %a4@ <== NOT EXECUTED 4d7b8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d7ba: 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 );
4d7bc: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4d7c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d7c4: 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 );
4d7c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d7c8: 4eb9 0005 3658 jsr 53658 <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d7ce: 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 );
4d7d2: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d7d4: 4a8b tstl %a3 <== NOT EXECUTED 4d7d6: 6742 beqs 4d81a <rtems_string_to_int+0x82> <== NOT EXECUTED
*endptr = end;
4d7d8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d7dc: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d7de: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d7e0: 673e beqs 4d820 <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))
4d7e2: 0c83 7fff ffff cmpil #2147483647,%d3 <== NOT EXECUTED 4d7e8: 670e beqs 4d7f8 <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;
4d7ea: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4d7ec: 4280 clrl %d0 <== NOT EXECUTED
}
4d7ee: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d7f4: 4e5e unlk %fp <== NOT EXECUTED 4d7f6: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d7f8: 4e94 jsr %a4@ <== NOT EXECUTED 4d7fa: 7222 moveq #34,%d1 <== NOT EXECUTED 4d7fc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d7fe: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d800: 66e8 bnes 4d7ea <rtems_string_to_int+0x52> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d802: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d804: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d80a: 4e5e unlk %fp <== NOT EXECUTED 4d80c: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d80e: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d810: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d816: 4e5e unlk %fp <== NOT EXECUTED 4d818: 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 )
4d81a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d81e: 60be bras 4d7de <rtems_string_to_int+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d820: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d822: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d828: 4e5e unlk %fp <== NOT EXECUTED
0004d8e4 <rtems_string_to_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d8e4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4d8e8: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d8ec: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4d8f0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d8f4: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d8f8: 4a8a tstl %a2 <== NOT EXECUTED 4d8fa: 6766 beqs 4d962 <rtems_string_to_long+0x7e> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d8fc: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4d902: 4e94 jsr %a4@ <== NOT EXECUTED 4d904: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d906: 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 );
4d908: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4d90c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d910: 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 );
4d912: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d914: 4eb9 0005 3658 jsr 53658 <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d91a: 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 );
4d91e: 2400 movel %d0,%d2 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d920: 4a8b tstl %a3 <== NOT EXECUTED 4d922: 674a beqs 4d96e <rtems_string_to_long+0x8a> <== NOT EXECUTED
*endptr = end;
4d924: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d928: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d92a: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d92c: 6746 beqs 4d974 <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))
4d92e: 0c82 7fff ffff cmpil #2147483647,%d2 <== NOT EXECUTED 4d934: 6716 beqs 4d94c <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))
4d936: 0c82 8000 0000 cmpil #-2147483648,%d2 <== NOT EXECUTED 4d93c: 670e beqs 4d94c <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;
4d93e: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4d940: 4280 clrl %d0 <== NOT EXECUTED
}
4d942: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d948: 4e5e unlk %fp <== NOT EXECUTED 4d94a: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d94c: 4e94 jsr %a4@ <== NOT EXECUTED 4d94e: 7222 moveq #34,%d1 <== NOT EXECUTED 4d950: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d952: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d954: 66e8 bnes 4d93e <rtems_string_to_long+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d956: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d958: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d95e: 4e5e unlk %fp <== NOT EXECUTED 4d960: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d962: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d964: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d96a: 4e5e unlk %fp <== NOT EXECUTED 4d96c: 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 )
4d96e: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d972: 60b6 bras 4d92a <rtems_string_to_long+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d974: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d976: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d97c: 4e5e unlk %fp <== NOT EXECUTED
0004d82c <rtems_string_to_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d82c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4d830: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4d834: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 4d838: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d83c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d840: 4a8a tstl %a2 <== NOT EXECUTED 4d842: 6700 0082 beqw 4d8c6 <rtems_string_to_long_long+0x9a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d846: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4d84c: 4e94 jsr %a4@ <== NOT EXECUTED 4d84e: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4d850: 4280 clrl %d0 <== NOT EXECUTED 4d852: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d854: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4d856: 2480 movel %d0,%a2@ <== NOT EXECUTED 4d858: 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 );
4d85c: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4d860: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4d864: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d866: 4eb9 0005 3678 jsr 53678 <strtoll> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d86c: 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 );
4d870: 2400 movel %d0,%d2 <== NOT EXECUTED 4d872: 2601 movel %d1,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d874: 4a8b tstl %a3 <== NOT EXECUTED 4d876: 675a beqs 4d8d2 <rtems_string_to_long_long+0xa6> <== NOT EXECUTED
*endptr = end;
4d878: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d87c: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d87e: b084 cmpl %d4,%d0 <== NOT EXECUTED 4d880: 6756 beqs 4d8d8 <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))
4d882: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED 4d888: 72ff moveq #-1,%d1 <== NOT EXECUTED 4d88a: 9283 subl %d3,%d1 <== NOT EXECUTED 4d88c: 9182 subxl %d2,%d0 <== NOT EXECUTED 4d88e: 6720 beqs 4d8b0 <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))
4d890: 203c 8000 0000 movel #-2147483648,%d0 <== NOT EXECUTED 4d896: 4281 clrl %d1 <== NOT EXECUTED 4d898: 9283 subl %d3,%d1 <== NOT EXECUTED 4d89a: 9182 subxl %d2,%d0 <== NOT EXECUTED 4d89c: 6712 beqs 4d8b0 <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;
4d89e: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d8a0: 2482 movel %d2,%a2@ <== NOT EXECUTED 4d8a2: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL; }
4d8a6: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d8ac: 4e5e unlk %fp <== NOT EXECUTED 4d8ae: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d8b0: 4e94 jsr %a4@ <== NOT EXECUTED 4d8b2: 7222 moveq #34,%d1 <== NOT EXECUTED 4d8b4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d8b6: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d8b8: 66e4 bnes 4d89e <rtems_string_to_long_long+0x72> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d8ba: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8bc: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d8c2: 4e5e unlk %fp <== NOT EXECUTED 4d8c4: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d8c6: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8c8: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d8ce: 4e5e unlk %fp <== NOT EXECUTED 4d8d0: 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 )
4d8d2: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d8d6: 60a6 bras 4d87e <rtems_string_to_long_long+0x52> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d8d8: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8da: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4d8e0: 4e5e unlk %fp <== NOT EXECUTED
0004d980 <rtems_string_to_pointer>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d980: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4d984: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4d988: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4d98c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4d990: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d994: 4a8a tstl %a2 <== NOT EXECUTED 4d996: 675c beqs 4d9f4 <rtems_string_to_pointer+0x74> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d998: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4d99e: 4e94 jsr %a4@ <== NOT EXECUTED 4d9a0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d9a2: 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 );
4d9a4: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 4d9a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d9ac: 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 );
4d9ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d9b0: 4eb9 0005 3a8c jsr 53a8c <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 )
4d9b6: 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 );
4d9ba: 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 )
4d9bc: 4a8b tstl %a3 <== NOT EXECUTED 4d9be: 6740 beqs 4da00 <rtems_string_to_pointer+0x80> <== NOT EXECUTED
*endptr = end;
4d9c0: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4d9c4: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d9c6: b082 cmpl %d2,%d0 <== NOT EXECUTED 4d9c8: 673c beqs 4da06 <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))
4d9ca: 70ff moveq #-1,%d0 <== NOT EXECUTED 4d9cc: b083 cmpl %d3,%d0 <== NOT EXECUTED 4d9ce: 670e beqs 4d9de <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;
4d9d0: 2483 movel %d3,%a2@ <== NOT EXECUTED
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4d9d2: 4280 clrl %d0 <== NOT EXECUTED
}
4d9d4: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d9da: 4e5e unlk %fp <== NOT EXECUTED 4d9dc: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d9de: 4e94 jsr %a4@ <== NOT EXECUTED 4d9e0: 7222 moveq #34,%d1 <== NOT EXECUTED 4d9e2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d9e4: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4d9e6: 66e8 bnes 4d9d0 <rtems_string_to_pointer+0x50> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d9e8: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d9ea: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d9f0: 4e5e unlk %fp <== NOT EXECUTED 4d9f2: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d9f4: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d9f6: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4d9fc: 4e5e unlk %fp <== NOT EXECUTED 4d9fe: 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 )
4da00: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4da04: 60c0 bras 4d9c6 <rtems_string_to_pointer+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4da06: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da08: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4da0e: 4e5e unlk %fp <== NOT EXECUTED
...
0004da14 <rtems_string_to_unsigned_char>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4da14: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4da18: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 4da1c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4da20: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4da24: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4da28: 4a8a tstl %a2 <== NOT EXECUTED 4da2a: 673e beqs 4da6a <rtems_string_to_unsigned_char+0x56><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4da2c: 4eb9 0005 0b5c jsr 50b5c <__errno> <== NOT EXECUTED 4da32: 2040 moveal %d0,%a0 <== NOT EXECUTED 4da34: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4da36: 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 );
4da38: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4da3c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4da40: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4da42: 4eb9 0005 3a8c jsr 53a8c <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da48: 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 );
4da4c: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da4e: 4a8b tstl %a3 <== NOT EXECUTED 4da50: 6724 beqs 4da76 <rtems_string_to_unsigned_char+0x62><== NOT EXECUTED
*endptr = end;
4da52: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4da56: 2681 movel %d1,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4da58: b282 cmpl %d2,%d1 <== NOT EXECUTED 4da5a: 6720 beqs 4da7c <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;
4da5c: 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 );
4da5e: 1483 moveb %d3,%a2@ <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da60: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4da66: 4e5e unlk %fp <== NOT EXECUTED 4da68: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4da6a: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da6c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4da72: 4e5e unlk %fp <== NOT EXECUTED 4da74: 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 )
4da76: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4da7a: 60dc bras 4da58 <rtems_string_to_unsigned_char+0x44><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4da7c: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da7e: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4da84: 4e5e unlk %fp <== NOT EXECUTED
0004da88 <rtems_string_to_unsigned_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4da88: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4da8c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4da90: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4da94: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4da98: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4da9c: 4a8a tstl %a2 <== NOT EXECUTED 4da9e: 675c beqs 4dafc <rtems_string_to_unsigned_int+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4daa0: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4daa6: 4e94 jsr %a4@ <== NOT EXECUTED 4daa8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4daaa: 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 );
4daac: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4dab0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4dab4: 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 );
4dab6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4dab8: 4eb9 0005 3a8c jsr 53a8c <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dabe: 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 );
4dac2: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dac4: 4a8b tstl %a3 <== NOT EXECUTED 4dac6: 6740 beqs 4db08 <rtems_string_to_unsigned_int+0x80><== NOT EXECUTED
*endptr = end;
4dac8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4dacc: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4dace: b082 cmpl %d2,%d0 <== NOT EXECUTED 4dad0: 673c beqs 4db0e <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))
4dad2: 70ff moveq #-1,%d0 <== NOT EXECUTED 4dad4: b083 cmpl %d3,%d0 <== NOT EXECUTED 4dad6: 670e beqs 4dae6 <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;
4dad8: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4dada: 4280 clrl %d0 <== NOT EXECUTED
}
4dadc: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dae2: 4e5e unlk %fp <== NOT EXECUTED 4dae4: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4dae6: 4e94 jsr %a4@ <== NOT EXECUTED 4dae8: 7222 moveq #34,%d1 <== NOT EXECUTED 4daea: 2040 moveal %d0,%a0 <== NOT EXECUTED 4daec: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4daee: 66e8 bnes 4dad8 <rtems_string_to_unsigned_int+0x50><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4daf0: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4daf2: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4daf8: 4e5e unlk %fp <== NOT EXECUTED 4dafa: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4dafc: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dafe: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4db04: 4e5e unlk %fp <== NOT EXECUTED 4db06: 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 )
4db08: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4db0c: 60c0 bras 4dace <rtems_string_to_unsigned_int+0x46><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4db0e: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db10: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4db16: 4e5e unlk %fp <== NOT EXECUTED
...
0004dbc0 <rtems_string_to_unsigned_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4dbc0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4dbc4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 4dbc8: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4dbcc: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4dbd0: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4dbd4: 4a8a tstl %a2 <== NOT EXECUTED 4dbd6: 675c beqs 4dc34 <rtems_string_to_unsigned_long+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4dbd8: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4dbde: 4e94 jsr %a4@ <== NOT EXECUTED 4dbe0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dbe2: 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 );
4dbe4: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4dbe8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4dbec: 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 );
4dbee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4dbf0: 4eb9 0005 3a8c jsr 53a8c <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dbf6: 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 );
4dbfa: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dbfc: 4a8b tstl %a3 <== NOT EXECUTED 4dbfe: 6740 beqs 4dc40 <rtems_string_to_unsigned_long+0x80><== NOT EXECUTED
*endptr = end;
4dc00: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4dc04: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4dc06: b082 cmpl %d2,%d0 <== NOT EXECUTED 4dc08: 673c beqs 4dc46 <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))
4dc0a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4dc0c: b083 cmpl %d3,%d0 <== NOT EXECUTED 4dc0e: 670e beqs 4dc1e <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;
4dc10: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL;
4dc12: 4280 clrl %d0 <== NOT EXECUTED
}
4dc14: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dc1a: 4e5e unlk %fp <== NOT EXECUTED 4dc1c: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4dc1e: 4e94 jsr %a4@ <== NOT EXECUTED 4dc20: 7222 moveq #34,%d1 <== NOT EXECUTED 4dc22: 2040 moveal %d0,%a0 <== NOT EXECUTED 4dc24: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4dc26: 66e8 bnes 4dc10 <rtems_string_to_unsigned_long+0x50><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4dc28: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc2a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dc30: 4e5e unlk %fp <== NOT EXECUTED 4dc32: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4dc34: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc36: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dc3c: 4e5e unlk %fp <== NOT EXECUTED 4dc3e: 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 )
4dc40: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4dc44: 60c0 bras 4dc06 <rtems_string_to_unsigned_long+0x46><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4dc46: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc48: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4dc4e: 4e5e unlk %fp <== NOT EXECUTED
...
0004db1c <rtems_string_to_unsigned_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4db1c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4db20: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4db24: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4db28: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4db2c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4db30: 4a8a tstl %a2 <== NOT EXECUTED 4db32: 676e beqs 4dba2 <rtems_string_to_unsigned_long_long+0x86><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4db34: 49f9 0005 0b5c lea 50b5c <__errno>,%a4 <== NOT EXECUTED 4db3a: 4e94 jsr %a4@ <== NOT EXECUTED 4db3c: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4db3e: 4280 clrl %d0 <== NOT EXECUTED 4db40: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4db42: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4db44: 2480 movel %d0,%a2@ <== NOT EXECUTED 4db46: 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 );
4db4a: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4db4e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4db52: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4db54: 4eb9 0005 3aac jsr 53aac <strtoull> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db5a: 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 );
4db5e: 2600 movel %d0,%d3 <== NOT EXECUTED 4db60: 2801 movel %d1,%d4 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db62: 4a8b tstl %a3 <== NOT EXECUTED 4db64: 6748 beqs 4dbae <rtems_string_to_unsigned_long_long+0x92><== NOT EXECUTED
*endptr = end;
4db66: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4db6a: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4db6c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4db6e: 6744 beqs 4dbb4 <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))
4db70: 70ff moveq #-1,%d0 <== NOT EXECUTED 4db72: 72ff moveq #-1,%d1 <== NOT EXECUTED 4db74: 9284 subl %d4,%d1 <== NOT EXECUTED 4db76: 9183 subxl %d3,%d0 <== NOT EXECUTED 4db78: 6712 beqs 4db8c <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;
4db7a: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4db7c: 2483 movel %d3,%a2@ <== NOT EXECUTED 4db7e: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
#endif return RTEMS_SUCCESSFUL; }
4db82: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4db88: 4e5e unlk %fp <== NOT EXECUTED 4db8a: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4db8c: 4e94 jsr %a4@ <== NOT EXECUTED 4db8e: 7222 moveq #34,%d1 <== NOT EXECUTED 4db90: 2040 moveal %d0,%a0 <== NOT EXECUTED 4db92: b290 cmpl %a0@,%d1 <== NOT EXECUTED 4db94: 66e4 bnes 4db7a <rtems_string_to_unsigned_long_long+0x5e><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4db96: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db98: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4db9e: 4e5e unlk %fp <== NOT EXECUTED 4dba0: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4dba2: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dba4: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4dbaa: 4e5e unlk %fp <== NOT EXECUTED 4dbac: 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 )
4dbae: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 4dbb2: 60b8 bras 4db6c <rtems_string_to_unsigned_long_long+0x50><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4dbb4: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dbb6: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4dbbc: 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 35c8 jsr 535c8 <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 232a cmpil #402218,%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 2372 pea 62372 <IMFS_ops+0x48> <== NOT EXECUTED 42916: 486a 0101 pea %a2@(257) <== NOT EXECUTED 4291a: 4eb9 0005 35e0 jsr 535e0 <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 aa04 lea 4aa04 <_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 36d0 jsr 536d0 <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 aeb2 jsr 4aeb2 <_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 b846 jsr 4b846 <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 311c jsr 5311c <strcpy> <== NOT EXECUTED
if (full_filename[strlen(full_filename)-1] != '/')
42a02: 2f0d movel %a5,%sp@- <== NOT EXECUTED 42a04: 4eb9 0005 35c8 jsr 535c8 <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 3004 jsr 53004 <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 b0ca jsr 4b0ca <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 2b7e cmpil #404350,%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 e442 moveb 5e442 <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 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- 466ba: 4eb9 0004 6e5c jsr 46e5c <_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 fc76 pea 5fc76 <_RTEMS_tasks_Information> 466c6: 4eb9 0004 7924 jsr 47924 <_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 fc76 pea 5fc76 <_RTEMS_tasks_Information> 4670e: 4eb9 0004 8a54 jsr 48a54 <_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 00fe moveal %a3@(254),%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 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- 46736: 4eb9 0004 6ebc jsr 46ebc <_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 7cfc jsr 47cfc <_Objects_Get_information_id> 4676c: 2f0b movel %a3,%sp@- 4676e: 2f00 movel %d0,%sp@- 46770: 4eb9 0004 7c78 jsr 47c78 <_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 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- 4677c: 4eb9 0004 6ebc jsr 46ebc <_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 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46798: 4eb9 0004 6ebc jsr 46ebc <_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 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- 467c6: 4eb9 0004 6e5c jsr 46e5c <_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 89bc jsr 489bc <_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 7cfc lea 47cfc <_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 8640 jsr 48640 <_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 7c78 jsr 47c78 <_Objects_Free>
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
4680c: 2f39 0005 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- 46812: 4eb9 0004 6ebc jsr 46ebc <_API_Mutex_Unlock>
_Thread_Enable_dispatch();
46818: 4eb9 0004 8996 jsr 48996 <_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 fdb8 movel 5fdb8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 46836: 4eb9 0004 6ebc jsr 46ebc <_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 1944 tstb 61944 <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 3960 moveal 63960 <_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 b168 jsr 4b168 <_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 00fe moveal %a1@(254),%a0 <== NOT EXECUTED 48ce6: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
48cea: 4eb9 0004 b142 jsr 4b142 <_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 3960 moveal 63960 <_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 00fe moveal %a0@(254),%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 0186 moveal 60186 <_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 fc76 pea 5fc76 <_RTEMS_tasks_Information> <== NOT EXECUTED 4687c: 4eb9 0004 7f94 jsr 47f94 <_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 d55e lea 5d55e <_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 c550 jsr 5c550 <_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 c52a jsr 5c52a <_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 c52a jsr 5c52a <_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
...
0004e410 <rtems_task_mode>:
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
)
{
4e410: 4e56 ffe4 linkw %fp,#-28 4e414: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ 4e418: 2a2e 0008 movel %fp@(8),%d5 4e41c: 242e 000c movel %fp@(12),%d2 4e420: 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 )
4e424: 4a8c tstl %a4 4e426: 6700 015a beqw 4e582 <rtems_task_mode+0x172>
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
4e42a: 2479 0006 0186 moveal 60186 <_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;
4e430: 4a2a 0074 tstb %a2@(116) 4e434: 57c3 seq %d3
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
4e436: 266a 00fe moveal %a2@(254),%a3
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4e43a: 49c3 extbl %d3 4e43c: 0283 0000 0100 andil #256,%d3
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
4e442: 4aaa 007a tstl %a2@(122) 4e446: 6600 00cc bnew 4e514 <rtems_task_mode+0x104>
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4e44a: 4a2b 0008 tstb %a3@(8) 4e44e: 57c4 seq %d4
old_mode |= _ISR_Get_level();
4e450: 4eb9 0004 9cc4 jsr 49cc4 <_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;
4e456: 49c4 extbl %d4 4e458: 0284 0000 0400 andil #1024,%d4 4e45e: 8084 orl %d4,%d0
old_mode |= _ISR_Get_level();
4e460: 8083 orl %d3,%d0 4e462: 2880 movel %d0,%a4@
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4e464: 0802 0008 btst #8,%d2
4e468: 670c beqs 4e476 <rtems_task_mode+0x66> <== NEVER TAKEN
executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
4e46a: 0805 0008 btst #8,%d5 4e46e: 57c0 seq %d0 4e470: 4480 negl %d0 4e472: 1540 0074 moveb %d0,%a2@(116)
if ( mask & RTEMS_TIMESLICE_MASK ) {
4e476: 0802 0009 btst #9,%d2
4e47a: 6718 beqs 4e494 <rtems_task_mode+0x84>
if ( _Modes_Is_timeslice(mode_set) ) {
4e47c: 0805 0009 btst #9,%d5 4e480: 6700 00ee beqw 4e570 <rtems_task_mode+0x160>
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
4e484: 7001 moveq #1,%d0 <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4e486: 41f9 0005 fcb0 lea 5fcb0 <_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;
4e48c: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4e490: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e494: 7007 moveq #7,%d0 4e496: c082 andl %d2,%d0
4e498: 6712 beqs 4e4ac <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 ) );
4e49a: 40c0 movew %sr,%d0
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
{
return ( mode_set & RTEMS_INTERRUPT_MASK );
4e49c: 7207 moveq #7,%d1 4e49e: 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 ) );
4e4a0: 0280 0000 f8ff andil #63743,%d0 4e4a6: e189 lsll #8,%d1 4e4a8: 8081 orl %d1,%d0 4e4aa: 46c0 movew %d0,%sr
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
4e4ac: 0802 000a btst #10,%d2
4e4b0: 6754 beqs 4e506 <rtems_task_mode+0xf6>
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4e4b2: 4282 clrl %d2 4e4b4: 142b 0008 moveb %a3@(8),%d2 4e4b8: 4280 clrl %d0
* Output:
* *previous_mode_set - previous mode set
* always return RTEMS_SUCCESSFUL;
*/
rtems_status_code rtems_task_mode(
4e4ba: 0805 000a btst #10,%d5 4e4be: 57c1 seq %d1 4e4c0: 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 ) {
4e4c2: 1001 moveb %d1,%d0 4e4c4: b082 cmpl %d2,%d0
4e4c6: 673e beqs 4e506 <rtems_task_mode+0xf6> <== ALWAYS TAKEN
)
{
rtems_signal_set _signals;
ISR_Level _level;
_ISR_Disable( _level );
4e4c8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
asr->is_enabled = is_asr_enabled;
4e4ce: 1741 0008 moveb %d1,%a3@(8) <== NOT EXECUTED 4e4d2: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e4d4: 8081 orl %d1,%d0 <== NOT EXECUTED 4e4d6: 46c0 movew %d0,%sr <== NOT EXECUTED
_signals = information->signals_pending;
4e4d8: 202b 0016 movel %a3@(22),%d0 <== NOT EXECUTED
information->signals_pending = information->signals_posted;
4e4dc: 276b 0012 0016 movel %a3@(18),%a3@(22) <== NOT EXECUTED
information->signals_posted = _signals;
4e4e2: 2740 0012 movel %d0,%a3@(18) <== NOT EXECUTED
_ISR_Enable( _level );
4e4e6: 46c1 movew %d1,%sr <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e4e8: 4aab 0012 tstl %a3@(18) <== NOT EXECUTED 4e4ec: 56c0 sne %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e4ee: 7203 moveq #3,%d1 <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e4f0: 4480 negl %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e4f2: b2b9 0005 fe64 cmpl 5fe64 <_System_state_Current>,%d1 <== NOT EXECUTED 4e4f8: 6744 beqs 4e53e <rtems_task_mode+0x12e> <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
4e4fa: 4280 clrl %d0
}
4e4fc: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 4e502: 4e5e unlk %fp 4e504: 4e75 rts
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e506: 7203 moveq #3,%d1
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e508: 4200 clrb %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e50a: b2b9 0005 fe64 cmpl 5fe64 <_System_state_Current>,%d1
4e510: 66e8 bnes 4e4fa <rtems_task_mode+0xea> <== NEVER TAKEN
4e512: 602a bras 4e53e <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;
4e514: 4a2b 0008 tstb %a3@(8) <== NOT EXECUTED 4e518: 57c4 seq %d4 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4e51a: 4eb9 0004 9cc4 jsr 49cc4 <_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;
4e520: 49c4 extbl %d4 <== NOT EXECUTED 4e522: 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;
4e528: 08c3 0009 bset #9,%d3 <== NOT EXECUTED
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4e52c: 8084 orl %d4,%d0 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4e52e: 8083 orl %d3,%d0 <== NOT EXECUTED 4e530: 2880 movel %d0,%a4@ <== NOT EXECUTED
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4e532: 0802 0008 btst #8,%d2 <== NOT EXECUTED 4e536: 6700 ff3e beqw 4e476 <rtems_task_mode+0x66> <== NOT EXECUTED 4e53a: 6000 ff2e braw 4e46a <rtems_task_mode+0x5a> <== NOT EXECUTED
bool are_signals_pending
)
{
Thread_Control *executing;
executing = _Thread_Executing;
4e53e: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0
if ( are_signals_pending ||
4e544: 4a00 tstb %d0
4e546: 660e bnes 4e556 <rtems_task_mode+0x146> <== NEVER TAKEN
4e548: b1f9 0006 018a cmpal 6018a <_Per_CPU_Information+0x10>,%a0
4e54e: 67aa beqs 4e4fa <rtems_task_mode+0xea> <== ALWAYS TAKEN
(!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
4e550: 4a28 0074 tstb %a0@(116) <== NOT EXECUTED 4e554: 67a4 beqs 4e4fa <rtems_task_mode+0xea> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4e556: 7001 moveq #1,%d0 <== NOT EXECUTED 4e558: 13c0 0006 0192 moveb %d0,60192 <_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();
4e55e: 4eb9 0004 882c jsr 4882c <_Thread_Dispatch> <== NOT EXECUTED
}
return RTEMS_SUCCESSFUL;
}
4e564: 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;
4e56a: 4280 clrl %d0 <== NOT EXECUTED
}
4e56c: 4e5e unlk %fp <== NOT EXECUTED 4e56e: 4e75 rts <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e570: 7007 moveq #7,%d0 4e572: 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;
4e574: 42aa 007a clrl %a2@(122)
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e578: 4a80 tstl %d0 4e57a: 6700 ff30 beqw 4e4ac <rtems_task_mode+0x9c> 4e57e: 6000 ff1a braw 4e49a <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;
4e582: 7009 moveq #9,%d0 <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
}
4e584: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4e58a: 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 95d0 jsr 495d0 <_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 9e80 jsr 49e80 <_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 95aa jsr 495aa <_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 95aa jsr 495aa <_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
...
00049f28 <rtems_task_resume>:
*/
rtems_status_code rtems_task_resume(
rtems_id id
)
{
49f28: 4e56 fffc linkw %fp,#-4
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49f2c: 486e fffc pea %fp@(-4) 49f30: 2f2e 0008 movel %fp@(8),%sp@- 49f34: 4eb9 0004 c05c jsr 4c05c <_Thread_Get>
switch ( location ) {
49f3a: 508f addql #8,%sp 49f3c: 4aae fffc tstl %fp@(-4)
49f40: 6706 beqs 49f48 <rtems_task_resume+0x20> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
49f42: 7004 moveq #4,%d0 <== NOT EXECUTED
}
49f44: 4e5e unlk %fp <== NOT EXECUTED 49f46: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
49f48: 7202 moveq #2,%d1 49f4a: 2040 moveal %d0,%a0 49f4c: 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 ) ) {
49f50: 660c bnes 49f5e <rtems_task_resume+0x36> <== ALWAYS TAKEN
_Thread_Resume( the_thread, true );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
49f52: 4eb9 0004 c036 jsr 4c036 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
49f58: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
49f5a: 4e5e unlk %fp <== NOT EXECUTED 49f5c: 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 );
49f5e: 4878 0001 pea 1 <ADD> 49f62: 2f00 movel %d0,%sp@- 49f64: 4eb9 0004 c90c jsr 4c90c <_Thread_Resume>
_Thread_Enable_dispatch();
49f6a: 4eb9 0004 c036 jsr 4c036 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
49f70: 508f addql #8,%sp 49f72: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
49f74: 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 1944 tstb 61944 <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 3960 moveal 63960 <_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 b168 jsr 4b168 <_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 00fe moveal %a1@(254),%a0 <== NOT EXECUTED 48e8a: 2180 2c1e movel %d0,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
48e8e: 4eb9 0004 b142 jsr 4b142 <_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 3960 moveal 63960 <_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 00fe moveal %a0@(254),%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
0004ad10 <rtems_task_set_priority>:
rtems_status_code rtems_task_set_priority(
rtems_id id,
rtems_task_priority new_priority,
rtems_task_priority *old_priority
)
{
4ad10: 4e56 fffc linkw %fp,#-4 4ad14: 2f0a movel %a2,%sp@- 4ad16: 246e 0010 moveal %fp@(16),%a2 4ad1a: 2f02 movel %d2,%sp@- 4ad1c: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
4ad20: 670c beqs 4ad2e <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 ) );
4ad22: 4280 clrl %d0 4ad24: 1039 0006 2882 moveb 62882 <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
4ad2a: b082 cmpl %d2,%d0
4ad2c: 6566 bcss 4ad94 <rtems_task_set_priority+0x84> <== NEVER TAKEN
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
4ad2e: 4a8a tstl %a2
4ad30: 6770 beqs 4ada2 <rtems_task_set_priority+0x92> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
4ad32: 486e fffc pea %fp@(-4) 4ad36: 2f2e 0008 movel %fp@(8),%sp@- 4ad3a: 4eb9 0004 cff0 jsr 4cff0 <_Thread_Get>
switch ( location ) {
4ad40: 508f addql #8,%sp 4ad42: 4aae fffc tstl %fp@(-4)
4ad46: 663e bnes 4ad86 <rtems_task_set_priority+0x76> <== NEVER TAKEN
case OBJECTS_LOCAL:
/* XXX need helper to "convert" from core priority */
*old_priority = the_thread->current_priority;
4ad48: 2040 moveal %d0,%a0 4ad4a: 24a8 0014 movel %a0@(20),%a2@
if ( new_priority != RTEMS_CURRENT_PRIORITY ) {
4ad4e: 4a82 tstl %d2
4ad50: 6720 beqs 4ad72 <rtems_task_set_priority+0x62> <== NEVER TAKEN
the_thread->real_priority = new_priority;
4ad52: 2142 0018 movel %d2,%a0@(24)
if ( the_thread->resource_count == 0 ||
4ad56: 4aa8 001c tstl %a0@(28)
4ad5a: 6706 beqs 4ad62 <rtems_task_set_priority+0x52> <== ALWAYS TAKEN
4ad5c: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED 4ad60: 6410 bccs 4ad72 <rtems_task_set_priority+0x62> <== NOT EXECUTED
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, false );
4ad62: 42a7 clrl %sp@- 4ad64: 2f02 movel %d2,%sp@- 4ad66: 2f00 movel %d0,%sp@- 4ad68: 4eb9 0004 cad4 jsr 4cad4 <_Thread_Change_priority> 4ad6e: 4fef 000c lea %sp@(12),%sp
}
_Thread_Enable_dispatch();
4ad72: 4eb9 0004 cfca jsr 4cfca <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad78: 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;
4ad7c: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad7e: 246e fff8 moveal %fp@(-8),%a2 4ad82: 4e5e unlk %fp 4ad84: 4e75 rts
4ad86: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ad8a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ad8c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ad90: 4e5e unlk %fp <== NOT EXECUTED 4ad92: 4e75 rts <== NOT EXECUTED 4ad94: 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;
4ad98: 7013 moveq #19,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad9a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ad9e: 4e5e unlk %fp <== NOT EXECUTED 4ada0: 4e75 rts <== NOT EXECUTED 4ada2: 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;
4ada6: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ada8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4adac: 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 89bc jsr 489bc <_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 9450 jsr 49450 <_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 8996 jsr 48996 <_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 8996 jsr 48996 <_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 89bc jsr 489bc <_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 8996 jsr 48996 <_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 94ac jsr 494ac <_Thread_Suspend>
_Thread_Enable_dispatch();
469d2: 4eb9 0004 8996 jsr 48996 <_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
000477c8 <rtems_task_variable_add>:
rtems_status_code rtems_task_variable_add(
rtems_id tid,
void **ptr,
void (*dtor)(void *)
)
{
477c8: 4e56 fff0 linkw %fp,#-16 477cc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 477d0: 246e 000c moveal %fp@(12),%a2 477d4: 242e 0010 movel %fp@(16),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
477d8: 4a8a tstl %a2 477da: 6700 009a beqw 47876 <rtems_task_variable_add+0xae>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
477de: 486e fffc pea %fp@(-4) <== NOT EXECUTED 477e2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 477e6: 4eb9 0004 9958 jsr 49958 <_Thread_Get> <== NOT EXECUTED
switch (location) {
477ec: 508f addql #8,%sp <== NOT EXECUTED
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
477ee: 2640 moveal %d0,%a3 <== NOT EXECUTED
switch (location) {
477f0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 477f4: 664c bnes 47842 <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;
477f6: 206b 010a moveal %a3@(266),%a0 <== NOT EXECUTED
while (tvp) {
477fa: 4a88 tstl %a0 <== NOT EXECUTED 477fc: 670c beqs 4780a <rtems_task_variable_add+0x42> <== NOT EXECUTED
if (tvp->ptr == ptr) {
477fe: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 47802: 674a beqs 4784e <rtems_task_variable_add+0x86> <== NOT EXECUTED
tvp->dtor = dtor;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
47804: 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) {
47806: 4a88 tstl %a0 <== NOT EXECUTED 47808: 66f4 bnes 477fe <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));
4780a: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED 4780e: 4eb9 0004 ab3a jsr 4ab3a <_Workspace_Allocate> <== NOT EXECUTED
if (new == NULL) {
47814: 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));
47816: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (new == NULL) {
47818: 4a80 tstl %d0 <== NOT EXECUTED 4781a: 6748 beqs 47864 <rtems_task_variable_add+0x9c> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
4781c: 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;
47820: 20ab 010a movel %a3@(266),%a0@ <== NOT EXECUTED
if (new == NULL) {
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
new->ptr = ptr;
47824: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
new->dtor = dtor;
47828: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
the_thread->task_variables = new;
4782c: 2740 010a movel %d0,%a3@(266) <== NOT EXECUTED
_Thread_Enable_dispatch();
47830: 4eb9 0004 9932 jsr 49932 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47836: 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;
4783c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4783e: 4e5e unlk %fp <== NOT EXECUTED 47840: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47842: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47844: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 4784a: 4e5e unlk %fp <== NOT EXECUTED 4784c: 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;
4784e: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
_Thread_Enable_dispatch();
47852: 4eb9 0004 9932 jsr 49932 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47858: 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;
4785e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47860: 4e5e unlk %fp <== NOT EXECUTED 47862: 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();
47864: 4eb9 0004 9932 jsr 49932 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
4786a: 701a moveq #26,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4786c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 47872: 4e5e unlk %fp <== NOT EXECUTED 47874: 4e75 rts <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
47876: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47878: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 4787e: 4e5e unlk %fp
...
00047884 <rtems_task_variable_delete>:
rtems_status_code rtems_task_variable_delete(
rtems_id tid,
void **ptr
)
{
47884: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47888: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4788a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
4788e: 6772 beqs 47902 <rtems_task_variable_delete+0x7e><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
prev = NULL;
the_thread = _Thread_Get (tid, &location);
47890: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47894: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47898: 4eb9 0004 9958 jsr 49958 <_Thread_Get> <== NOT EXECUTED
switch (location) {
4789e: 508f addql #8,%sp <== NOT EXECUTED 478a0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 478a4: 6634 bnes 478da <rtems_task_variable_delete+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
478a6: 2040 moveal %d0,%a0 <== NOT EXECUTED 478a8: 2268 010a moveal %a0@(266),%a1 <== NOT EXECUTED
while (tvp) {
478ac: 4a89 tstl %a1 <== NOT EXECUTED 478ae: 671a beqs 478ca <rtems_task_variable_delete+0x46><== NOT EXECUTED
if (tvp->ptr == ptr) {
478b0: b4a9 0004 cmpl %a1@(4),%d2 <== NOT EXECUTED 478b4: 6756 beqs 4790c <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;
478b6: 2051 moveal %a1@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
478b8: 4a88 tstl %a0 <== NOT EXECUTED 478ba: 670e beqs 478ca <rtems_task_variable_delete+0x46><== NOT EXECUTED
if (tvp->ptr == ptr) {
478bc: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 478c0: 6722 beqs 478e4 <rtems_task_variable_delete+0x60><== NOT EXECUTED 478c2: 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;
478c4: 2051 moveal %a1@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
478c6: 4a88 tstl %a0 <== NOT EXECUTED 478c8: 66f2 bnes 478bc <rtems_task_variable_delete+0x38><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
478ca: 4eb9 0004 9932 jsr 49932 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478d0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
478d4: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478d6: 4e5e unlk %fp <== NOT EXECUTED 478d8: 4e75 rts <== NOT EXECUTED 478da: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
478de: 7004 moveq #4,%d0 <== NOT EXECUTED
}
478e0: 4e5e unlk %fp <== NOT EXECUTED 478e2: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
478e4: 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 );
478e6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 478e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 478ea: 4eb9 0004 79b8 jsr 479b8 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
478f0: 4eb9 0004 9932 jsr 49932 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
478f6: 508f addql #8,%sp <== NOT EXECUTED 478f8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478fa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 478fe: 4e5e unlk %fp <== NOT EXECUTED 47900: 4e75 rts <== NOT EXECUTED 47902: 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;
47906: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47908: 4e5e unlk %fp <== NOT EXECUTED 4790a: 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;
4790c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4790e: 2151 010a movel %a1@,%a0@(266) <== NOT EXECUTED 47912: 2049 moveal %a1,%a0 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
47914: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47916: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47918: 4eb9 0004 79b8 jsr 479b8 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
4791e: 4eb9 0004 9932 jsr 49932 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47924: 508f addql #8,%sp <== NOT EXECUTED 47926: 4280 clrl %d0 <== NOT EXECUTED 47928: 60d0 bras 478fa <rtems_task_variable_delete+0x76><== NOT EXECUTED
...
0004792c <rtems_task_variable_get>:
rtems_status_code rtems_task_variable_get(
rtems_id tid,
void **ptr,
void **result
)
{
4792c: 4e56 fffc linkw %fp,#-4 47930: 2f0a movel %a2,%sp@- 47932: 246e 0010 moveal %fp@(16),%a2 47936: 2f02 movel %d2,%sp@- 47938: 242e 000c movel %fp@(12),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp;
if ( !ptr )
4793c: 6752 beqs 47990 <rtems_task_variable_get+0x64> <== ALWAYS TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !result )
4793e: 4a8a tstl %a2 <== NOT EXECUTED 47940: 674e beqs 47990 <rtems_task_variable_get+0x64> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
47942: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47946: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4794a: 4eb9 0004 9958 jsr 49958 <_Thread_Get> <== NOT EXECUTED
switch (location) {
47950: 508f addql #8,%sp <== NOT EXECUTED 47952: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47956: 662a bnes 47982 <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;
47958: 2240 moveal %d0,%a1 <== NOT EXECUTED 4795a: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED
while (tvp) {
4795e: 4a88 tstl %a0 <== NOT EXECUTED 47960: 670c beqs 4796e <rtems_task_variable_get+0x42> <== NOT EXECUTED
if (tvp->ptr == ptr) {
47962: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 47966: 6736 beqs 4799e <rtems_task_variable_get+0x72> <== NOT EXECUTED
*/
*result = tvp->tval;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
47968: 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) {
4796a: 4a88 tstl %a0 <== NOT EXECUTED 4796c: 66f4 bnes 47962 <rtems_task_variable_get+0x36> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
4796e: 4eb9 0004 9932 jsr 49932 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47974: 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;
47978: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4797a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4797e: 4e5e unlk %fp <== NOT EXECUTED 47980: 4e75 rts <== NOT EXECUTED 47982: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47986: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47988: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4798c: 4e5e unlk %fp <== NOT EXECUTED 4798e: 4e75 rts <== NOT EXECUTED
47990: 242e fff4 movel %fp@(-12),%d2
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
if ( !result )
return RTEMS_INVALID_ADDRESS;
47994: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47996: 246e fff8 moveal %fp@(-8),%a2 4799a: 4e5e unlk %fp 4799c: 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;
4799e: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
479a2: 4eb9 0004 9932 jsr 49932 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
479a8: 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;
479ac: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
479ae: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 479b2: 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 fcf8 movel 5fcf8 <_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 fcf8 movel %d0,5fcf8 <_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
_Scheduler_Yield();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
469fc: 4878 0008 pea 8 <DIVIDE_BY_ZERO> 46a00: 2f39 0006 0186 movel 60186 <_Per_CPU_Information+0xc>,%sp@- 46a06: 4eb9 0004 9294 jsr 49294 <_Thread_Set_state>
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
46a0c: 2079 0006 0186 moveal 60186 <_Per_CPU_Information+0xc>,%a0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
46a12: 203c 0004 87f0 movel #296944,%d0 46a18: 2140 0064 movel %d0,%a0@(100)
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
_Scheduler_Yield();
} 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 fdd8 pea 5fdd8 <_Watchdog_Ticks_chain> 46a3a: 4eb9 0004 98d4 jsr 498d4 <_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 8996 jsr 48996 <_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
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
46a54: 4879 0005 fd7e pea 5fd7e <_Scheduler> <== NOT EXECUTED 46a5a: 2079 0005 fd86 moveal 5fd86 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 46a60: 4e90 jsr %a0@ <== NOT EXECUTED 46a62: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
}
_Thread_Enable_dispatch();
46a64: 4eb9 0004 8996 jsr 48996 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
46a6a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46a6e: 4280 clrl %d0 <== NOT EXECUTED 46a70: 4e5e unlk %fp <== NOT EXECUTED
00047978 <rtems_task_wake_when>:
*/
rtems_status_code rtems_task_wake_when(
rtems_time_of_day *time_buffer
)
{
47978: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4797c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4797e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
47982: 4a39 0006 1680 tstb 61680 <_TOD_Is_set> <== NOT EXECUTED 47988: 6700 00aa beqw 47a34 <rtems_task_wake_when+0xbc> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
4798c: 4a8a tstl %a2 <== NOT EXECUTED 4798e: 6700 00ae beqw 47a3e <rtems_task_wake_when+0xc6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
time_buffer->ticks = 0;
47992: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
if ( !_TOD_Validate( time_buffer ) )
47996: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47998: 4eb9 0004 6c84 jsr 46c84 <_TOD_Validate> <== NOT EXECUTED 4799e: 588f addql #4,%sp <== NOT EXECUTED 479a0: 4a00 tstb %d0 <== NOT EXECUTED 479a2: 660a bnes 479ae <rtems_task_wake_when+0x36> <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
479a4: 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;
479a8: 7014 moveq #20,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
479aa: 4e5e unlk %fp <== NOT EXECUTED 479ac: 4e75 rts <== NOT EXECUTED
time_buffer->ticks = 0;
if ( !_TOD_Validate( time_buffer ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
479ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 479b0: 4eb9 0004 6b7c jsr 46b7c <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
479b6: 588f addql #4,%sp <== NOT EXECUTED 479b8: b0b9 0006 171a cmpl 6171a <_TOD_Now>,%d0 <== NOT EXECUTED 479be: 63e4 blss 479a4 <rtems_task_wake_when+0x2c> <== NOT EXECUTED 479c0: 2239 0006 1670 movel 61670 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 479c6: 5281 addql #1,%d1 <== NOT EXECUTED 479c8: 23c1 0006 1670 movel %d1,61670 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
479ce: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED 479d2: 2f39 0006 1afe movel 61afe <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 479d8: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 479dc: 4eb9 0004 a280 jsr 4a280 <_Thread_Set_state> <== NOT EXECUTED
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_seconds(
479e2: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 479e6: 90b9 0006 171a subl 6171a <_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,
479ec: 2079 0006 1afe moveal 61afe <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Watchdog_Insert_seconds(
479f2: 2140 0054 movel %d0,%a0@(84) <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
479f6: 203c 0004 97dc movel #301020,%d0 <== NOT EXECUTED 479fc: 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(
47a00: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
47a04: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id;
47a08: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
47a0c: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
47a10: 4868 0048 pea %a0@(72) <== NOT EXECUTED 47a14: 4879 0006 1744 pea 61744 <_Watchdog_Seconds_chain> <== NOT EXECUTED 47a1a: 4eb9 0004 a954 jsr 4a954 <_Watchdog_Insert> <== NOT EXECUTED
);
_Watchdog_Insert_seconds(
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
47a20: 4eb9 0004 9982 jsr 49982 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL; }
47a26: 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;
47a2a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 47a2e: 4280 clrl %d0 <== NOT EXECUTED
}
47a30: 4e5e unlk %fp <== NOT EXECUTED 47a32: 4e75 rts <== NOT EXECUTED 47a34: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
)
{
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
47a38: 700b moveq #11,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47a3a: 4e5e unlk %fp <== NOT EXECUTED 47a3c: 4e75 rts <== NOT EXECUTED 47a3e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
47a42: 7009 moveq #9,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47a44: 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 e4a0 pea 5e4a0 <termios_assoc_table> <== NOT EXECUTED 43c6e: 4eb9 0004 adbc jsr 4adbc <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 e5a0 movel %a0@,5e5a0 <rtems_termios_cbufsize> <== NOT EXECUTED
rtems_termios_raw_input_size = raw_input;
4433c: 41ee 000c lea %fp@(12),%a0 <== NOT EXECUTED 44340: 23d0 0005 e5a4 movel %a0@,5e5a4 <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 e5a8 movel %a0@,5e5a8 <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 fbe8 movel 5fbe8 <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 f3b0 addil #390064,%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 fbe8 movel 5fbe8 <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 6bcc jsr 46bcc <rtems_fatal_error_occurred> <== NOT EXECUTED
} else {
tty->forw->back = tty->back;
}
if (tty->back == NULL) {
rtems_termios_ttyHead = tty->forw;
442d2: 23c8 0005 fbf0 movel %a0,5fbf0 <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 fbec movel %a1,5fbec <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 f460 moveal 5f460 <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 6bcc jsr 46bcc <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 f3bc addil #390076,%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 f3bc addil #390076,%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 f3c4 addil #390084,%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 f3b0 addil #390064,%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 f3ac lea 5f3ac <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 0970 pea 60970 <termios_assoc_table> <== NOT EXECUTED 45972: 4eb9 0004 cd1c jsr 4cd1c <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 fbe8 movel 5fbe8 <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 fbf0 moveal 5fbf0 <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 e5a4 lea 5e5a4 <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 e5a8 lea 5e5a8 <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 e5a0 movel 5e5a0 <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 fbf0 movel %a5,5fbf0 <rtems_termios_ttyHead>
if (rtems_termios_ttyTail == NULL)
43e24: 4ab9 0005 fbec tstl 5fbec <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 e5ac moveb 5e5ac <c.6354>,%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 e5ac moveb 5e5ac <c.6354>,%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 e5ac moveb 5e5ac <c.6354>,%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 e5ac moveb 5e5ac <c.6354>,%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 e5ac moveb %d5,5e5ac <c.6354>
* 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 e5ac moveb %d1,5e5ac <c.6354> <== 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 fbe8 movel 5fbe8 <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 fbe8 movel 5fbe8 <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 e5ac moveb 5e5ac <c.6354>,%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 6bcc jsr 46bcc <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 e5ac moveb 5e5ac <c.6354>,%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 e5ac moveb 5e5ac <c.6354>,%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 fbec movel %a5,5fbec <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 fbe8 movel 5fbe8 <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 fbe8 movel 5fbe8 <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 fbe8 movel 5fbe8 <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 fbe8 movel 5fbe8 <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
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 6bcc jsr 46bcc <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 f3b4 addil #390068,%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 e5a0 movel 5e5a0 <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 e5a0 movel 5e5a0 <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 f3c0 addil #390080,%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 f3b8 addil #390072,%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
00058974 <rtems_timer_cancel>:
*/
rtems_status_code rtems_timer_cancel(
rtems_id id
)
{
58974: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
58978: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5897c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58980: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58986: 4eb9 0005 b978 jsr 5b978 <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
5898c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58990: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58994: 6706 beqs 5899c <rtems_timer_cancel+0x28> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58996: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58998: 4e5e unlk %fp <== NOT EXECUTED 5899a: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Timer_Is_dormant_class( the_timer->the_class ) )
5899c: 7204 moveq #4,%d1 <== NOT EXECUTED 5899e: 2040 moveal %d0,%a0 <== NOT EXECUTED 589a0: b2a8 0038 cmpl %a0@(56),%d1 <== NOT EXECUTED 589a4: 670c beqs 589b2 <rtems_timer_cancel+0x3e> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
589a6: 4868 0010 pea %a0@(16) <== NOT EXECUTED 589aa: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED 589b0: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
589b2: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
589b8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
589ba: 4e5e unlk %fp <== NOT EXECUTED
...
00046c90 <rtems_timer_create>:
rtems_status_code rtems_timer_create(
rtems_name name,
rtems_id *id
)
{
46c90: 4e56 fff4 linkw %fp,#-12 46c94: 48d7 040c moveml %d2-%d3/%a2,%sp@ 46c98: 242e 0008 movel %fp@(8),%d2 46c9c: 246e 000c moveal %fp@(12),%a2
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
46ca0: 6768 beqs 46d0a <rtems_timer_create+0x7a> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
46ca2: 4a8a tstl %a2 46ca4: 6700 0082 beqw 46d28 <rtems_timer_create+0x98> 46ca8: 2039 0006 005a movel 6005a <_Thread_Dispatch_disable_level>,%d0 46cae: 5280 addql #1,%d0 46cb0: 23c0 0006 005a movel %d0,6005a <_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 );
46cb6: 4879 0006 08c0 pea 608c0 <_Timer_Information> 46cbc: 4eb9 0004 7cbc jsr 47cbc <_Objects_Allocate>
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
46cc2: 588f addql #4,%sp 46cc4: 2040 moveal %d0,%a0 46cc6: 4a80 tstl %d0
46cc8: 674c beqs 46d16 <rtems_timer_create+0x86> <== NEVER TAKEN
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46cca: 2028 0008 movel %a0@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46cce: 4281 clrl %d1
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_timer->the_class = TIMER_DORMANT;
46cd0: 7604 moveq #4,%d3
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46cd2: 2279 0006 08d8 moveal 608d8 <_Timer_Information+0x18>,%a1
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46cd8: 3200 movew %d0,%d1 46cda: 2143 0038 movel %d3,%a0@(56)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46cde: 42a8 0018 clrl %a0@(24)
the_watchdog->routine = routine;
46ce2: 42a8 002c clrl %a0@(44)
the_watchdog->id = id;
46ce6: 42a8 0030 clrl %a0@(48)
the_watchdog->user_data = user_data;
46cea: 42a8 0034 clrl %a0@(52)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46cee: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
46cf2: 2142 000c movel %d2,%a0@(12)
&_Timer_Information,
&the_timer->Object,
(Objects_Name) name
);
*id = the_timer->Object.id;
46cf6: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
46cf8: 4eb9 0004 8cae jsr 48cae <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL; }
46cfe: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
(Objects_Name) name
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46d04: 4280 clrl %d0
}
46d06: 4e5e unlk %fp 46d08: 4e75 rts
)
{
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
46d0a: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d0c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46d12: 4e5e unlk %fp <== NOT EXECUTED 46d14: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
_Thread_Enable_dispatch();
46d16: 4eb9 0004 8cae jsr 48cae <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
46d1c: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d1e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46d24: 4e5e unlk %fp <== NOT EXECUTED 46d26: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
46d28: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d2a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46d30: 4e5e unlk %fp <== NOT EXECUTED
00058a64 <rtems_timer_delete>:
*/
rtems_status_code rtems_timer_delete(
rtems_id id
)
{
58a64: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 58a68: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
58a6a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58a6e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58a72: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58a78: 4eb9 0005 b978 jsr 5b978 <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58a7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58a82: 2440 moveal %d0,%a2 <== NOT EXECUTED 58a84: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58a88: 663a bnes 58ac4 <rtems_timer_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Timer_Information, &the_timer->Object );
58a8a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 58a8c: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58a92: 4eb9 0005 b50c jsr 5b50c <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
58a98: 486a 0010 pea %a2@(16) <== NOT EXECUTED 58a9c: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Timer_Free (
Timer_Control *the_timer
)
{
_Objects_Free( &_Timer_Information, &the_timer->Object );
58aa2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58aa4: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58aaa: 4eb9 0005 b7d0 jsr 5b7d0 <_Objects_Free> <== NOT EXECUTED
_Timer_Free( the_timer );
_Thread_Enable_dispatch();
58ab0: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ab6: 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;
58aba: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 58abe: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ac0: 4e5e unlk %fp <== NOT EXECUTED 58ac2: 4e75 rts <== NOT EXECUTED 58ac4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58ac8: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58aca: 4e5e unlk %fp <== NOT EXECUTED
...
00046d34 <rtems_timer_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
46d34: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 46d38: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 46d3c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 46d40: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 46d44: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
46d48: 4a82 tstl %d2 <== NOT EXECUTED 46d4a: 6700 0094 beqw 46de0 <rtems_timer_fire_after+0xac> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( !routine )
46d4e: 4a83 tstl %d3 <== NOT EXECUTED 46d50: 6700 00ae beqw 46e00 <rtems_timer_fire_after+0xcc> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
46d54: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46d58: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46d5a: 4879 0006 08c0 pea 608c0 <_Timer_Information> <== NOT EXECUTED 46d60: 4eb9 0004 817c jsr 4817c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
46d66: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46d6a: 2440 moveal %d0,%a2 <== NOT EXECUTED 46d6c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46d70: 6662 bnes 46dd4 <rtems_timer_fire_after+0xa0> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
46d72: 2a00 movel %d0,%d5 <== NOT EXECUTED 46d74: 0685 0000 0010 addil #16,%d5 <== NOT EXECUTED 46d7a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 46d7c: 4eb9 0004 9d34 jsr 49d34 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
46d82: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 46d88: 40c1 movew %sr,%d1 <== NOT EXECUTED 46d8a: 8081 orl %d1,%d0 <== NOT EXECUTED 46d8c: 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 ) {
46d8e: 588f addql #4,%sp <== NOT EXECUTED 46d90: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 46d94: 6656 bnes 46dec <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;
46d96: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED 46d9a: 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;
46da0: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
46da4: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
46da8: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_ISR_Enable( level );
46dac: 46c1 movew %d1,%sr <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46dae: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46db2: 2f05 movel %d5,%sp@- <== NOT EXECUTED 46db4: 4879 0006 013a pea 6013a <_Watchdog_Ticks_chain> <== NOT EXECUTED 46dba: 4eb9 0004 9bec jsr 49bec <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_timer->Ticker, ticks );
_Thread_Enable_dispatch();
46dc0: 4eb9 0004 8cae jsr 48cae <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46dc6: 508f addql #8,%sp <== NOT EXECUTED 46dc8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46dca: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46dd0: 4e5e unlk %fp <== NOT EXECUTED 46dd2: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46dd4: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46dd6: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46ddc: 4e5e unlk %fp <== NOT EXECUTED 46dde: 4e75 rts <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
46de0: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46de2: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46de8: 4e5e unlk %fp <== NOT EXECUTED 46dea: 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 );
46dec: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
46dee: 4eb9 0004 8cae jsr 48cae <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46df4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46df6: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46dfc: 4e5e unlk %fp <== NOT EXECUTED 46dfe: 4e75 rts <== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
46e00: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46e02: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 46e08: 4e5e unlk %fp <== NOT EXECUTED
00058ba8 <rtems_timer_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58ba8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 58bac: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 58bb0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 58bb4: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
if ( !_TOD_Is_set )
58bb8: 4a39 0007 eb8c tstb 7eb8c <_TOD_Is_set> <== NOT EXECUTED 58bbe: 660c bnes 58bcc <rtems_timer_fire_when+0x24> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
58bc0: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58bc2: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58bc8: 4e5e unlk %fp <== NOT EXECUTED 58bca: 4e75 rts <== NOT EXECUTED
rtems_interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !_TOD_Validate( wall_time ) )
58bcc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58bce: 4eb9 0005 5bf0 jsr 55bf0 <_TOD_Validate> <== NOT EXECUTED 58bd4: 588f addql #4,%sp <== NOT EXECUTED 58bd6: 4a00 tstb %d0 <== NOT EXECUTED 58bd8: 671a beqs 58bf4 <rtems_timer_fire_when+0x4c> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
58bda: 4a83 tstl %d3 <== NOT EXECUTED 58bdc: 6700 00a8 beqw 58c86 <rtems_timer_fire_when+0xde> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
58be0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58be2: 4eb9 0005 5ae8 jsr 55ae8 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58be8: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
58bea: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58bec: b0b9 0007 ec26 cmpl 7ec26 <_TOD_Now>,%d0 <== NOT EXECUTED 58bf2: 620c bhis 58c00 <rtems_timer_fire_when+0x58> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
58bf4: 7014 moveq #20,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58bf6: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58bfc: 4e5e unlk %fp <== NOT EXECUTED 58bfe: 4e75 rts <== NOT EXECUTED 58c00: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58c04: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58c08: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58c0e: 4eb9 0005 b978 jsr 5b978 <_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 ) {
58c14: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58c18: 2440 moveal %d0,%a2 <== NOT EXECUTED 58c1a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58c1e: 665a bnes 58c7a <rtems_timer_fire_when+0xd2> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58c20: 2800 movel %d0,%d4 <== NOT EXECUTED 58c22: 0684 0000 0010 addil #16,%d4 <== NOT EXECUTED 58c28: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58c2a: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
58c30: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY;
58c36: 7002 moveq #2,%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
58c38: 94b9 0007 ec26 subl 7ec26 <_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;
58c3e: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
58c42: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
58c46: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED 58c4a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58c4e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58c52: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
58c56: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58c58: 4879 0007 ec50 pea 7ec50 <_Watchdog_Seconds_chain> <== NOT EXECUTED 58c5e: 4eb9 0005 d710 jsr 5d710 <_Watchdog_Insert> <== NOT EXECUTED
&the_timer->Ticker,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
58c64: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58c6a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58c6e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58c70: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c76: 4e5e unlk %fp <== NOT EXECUTED 58c78: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58c7a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58c7c: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c82: 4e5e unlk %fp <== NOT EXECUTED 58c84: 4e75 rts <== NOT EXECUTED
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58c86: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58c88: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 58c8e: 4e5e unlk %fp <== NOT EXECUTED
...
00058c94 <rtems_timer_get_information>:
rtems_status_code rtems_timer_get_information(
rtems_id id,
rtems_timer_information *the_info
)
{
58c94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 58c98: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58c9a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
58c9e: 4a8a tstl %a2 <== NOT EXECUTED 58ca0: 6752 beqs 58cf4 <rtems_timer_get_information+0x60><== NOT EXECUTED 58ca2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58ca6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58caa: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58cb0: 4eb9 0005 b978 jsr 5b978 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58cb6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58cba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58cbe: 662a bnes 58cea <rtems_timer_get_information+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
the_info->the_class = the_timer->the_class;
58cc0: 2040 moveal %d0,%a0 <== NOT EXECUTED 58cc2: 24a8 0038 movel %a0@(56),%a2@ <== NOT EXECUTED
the_info->initial = the_timer->Ticker.initial;
58cc6: 41e8 001c lea %a0@(28),%a0 <== NOT EXECUTED 58cca: 2550 0004 movel %a0@,%a2@(4) <== NOT EXECUTED
the_info->start_time = the_timer->Ticker.start_time;
58cce: 5088 addql #8,%a0 <== NOT EXECUTED 58cd0: 2550 0008 movel %a0@,%a2@(8) <== NOT EXECUTED
the_info->stop_time = the_timer->Ticker.stop_time;
58cd4: 5888 addql #4,%a0 <== NOT EXECUTED 58cd6: 2550 000c movel %a0@,%a2@(12) <== NOT EXECUTED
_Thread_Enable_dispatch();
58cda: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ce0: 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;
58ce4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ce6: 4e5e unlk %fp <== NOT EXECUTED 58ce8: 4e75 rts <== NOT EXECUTED 58cea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58cee: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58cf0: 4e5e unlk %fp <== NOT EXECUTED 58cf2: 4e75 rts <== NOT EXECUTED 58cf4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
58cf8: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58cfa: 4e5e unlk %fp <== NOT EXECUTED
...
00058d00 <rtems_timer_ident>:
rtems_status_code rtems_timer_ident(
rtems_name name,
rtems_id *id
)
{
58d00: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
58d04: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 58d08: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 58d0e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58d12: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58d18: 4eb9 0005 bb28 jsr 5bb28 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
58d1e: 41f9 0007 7f60 lea 77f60 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
58d24: 4e5e unlk %fp <== NOT EXECUTED 58d26: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00059416 <rtems_timer_initiate_server>:
rtems_status_code rtems_timer_initiate_server(
uint32_t priority,
uint32_t stack_size,
rtems_attribute attribute_set
)
{
59416: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5941a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5941e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 59420: 2f02 movel %d2,%sp@- <== NOT EXECUTED 59422: 4a80 tstl %d0 <== NOT EXECUTED 59424: 6748 beqs 5946e <rtems_timer_initiate_server+0x58><== NOT EXECUTED
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
59426: 4281 clrl %d1 <== NOT EXECUTED 59428: 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 ) &&
5942e: b280 cmpl %d0,%d1 <== NOT EXECUTED 59430: 644a bccs 5947c <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 )
59432: 72ff moveq #-1,%d1 <== NOT EXECUTED 59434: b280 cmpl %d0,%d1 <== NOT EXECUTED 59436: 6636 bnes 5946e <rtems_timer_initiate_server+0x58><== NOT EXECUTED 59438: 2239 0007 eb7c movel 7eb7c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 5943e: 5281 addql #1,%d1 <== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
_priority = 0;
59440: 4283 clrl %d3 <== NOT EXECUTED 59442: 23c1 0007 eb7c movel %d1,7eb7c <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
initialized = true;
59448: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
5944a: 1439 0007 a05a moveb 7a05a <initialized.3675>,%d2 <== NOT EXECUTED
initialized = true;
59450: 13c0 0007 a05a moveb %d0,7a05a <initialized.3675> <== NOT EXECUTED
_Thread_Enable_dispatch();
59456: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
5945c: 4a02 tstb %d2 <== NOT EXECUTED 5945e: 6744 beqs 594a4 <rtems_timer_initiate_server+0x8e><== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59460: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
tmpInitialized = initialized;
initialized = true;
_Thread_Enable_dispatch();
if ( tmpInitialized )
return RTEMS_INCORRECT_STATE;
59464: 700e moveq #14,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59466: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 5946a: 4e5e unlk %fp <== NOT EXECUTED 5946c: 4e75 rts <== NOT EXECUTED 5946e: 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;
59472: 7013 moveq #19,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59474: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 59478: 4e5e unlk %fp <== NOT EXECUTED 5947a: 4e75 rts <== NOT EXECUTED 5947c: 2239 0007 eb7c movel 7eb7c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 59482: 5281 addql #1,%d1 <== NOT EXECUTED 59484: 2600 movel %d0,%d3 <== NOT EXECUTED 59486: 23c1 0007 eb7c movel %d1,7eb7c <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
initialized = true;
5948c: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
5948e: 1439 0007 a05a moveb 7a05a <initialized.3675>,%d2 <== NOT EXECUTED
initialized = true;
59494: 13c0 0007 a05a moveb %d0,7a05a <initialized.3675> <== NOT EXECUTED
_Thread_Enable_dispatch();
5949a: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
594a0: 4a02 tstb %d2 <== NOT EXECUTED 594a2: 66bc bnes 59460 <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(
594a4: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 594a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 594ac: 08c1 000f bset #15,%d1 <== NOT EXECUTED 594b0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 594b2: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED 594b6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 594ba: 2f03 movel %d3,%sp@- <== NOT EXECUTED 594bc: 2f3c 5449 4d45 movel #1414090053,%sp@- <== NOT EXECUTED 594c2: 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) {
594c8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 594cc: 4a80 tstl %d0 <== NOT EXECUTED 594ce: 6714 beqs 594e4 <rtems_timer_initiate_server+0xce><== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594d0: 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;
594d4: 4201 clrb %d1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594d6: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 594da: 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;
594dc: 13c1 0007 a05a moveb %d1,7a05a <initialized.3675> <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594e2: 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)
594e4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
594e8: 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(
594ea: 2079 0007 eb12 moveal 7eb12 <_RTEMS_tasks_Information+0x18>,%a0<== NOT EXECUTED 594f0: 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;
594f2: 2239 0007 eca6 movel 7eca6 <_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(
594f8: 41f0 2c00 lea %a0@(00000000,%d2:l:4),%a0 <== NOT EXECUTED 594fc: 23d0 0007 9fdc movel %a0@,79fdc <_Timer_server_Default> <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59502: 41f9 0007 a010 lea 7a010 <_Timer_server_Default+0x34>,%a0 <== NOT EXECUTED
_Timer_server = ts;
/*
* Start the timer server
*/
status = rtems_task_start(
59508: 4879 0007 9fdc pea 79fdc <_Timer_server_Default> <== NOT EXECUTED 5950e: 487a fb80 pea %pc@(59090 <_Timer_server_Body>) <== NOT EXECUTED 59512: 23c8 0007 a00c movel %a0,7a00c <_Timer_server_Default+0x30><== NOT EXECUTED
head->previous = NULL; tail->previous = head;
59518: 41f9 0007 a00c lea 7a00c <_Timer_server_Default+0x30>,%a0 <== NOT EXECUTED 5951e: 23c8 0007 a014 movel %a0,7a014 <_Timer_server_Default+0x38><== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59524: 41f9 0007 a048 lea 7a048 <_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;
5952a: 23c1 0007 a018 movel %d1,7a018 <_Timer_server_Default+0x3c><== NOT EXECUTED
head->previous = NULL; tail->previous = head;
59530: 223c 0007 a044 movel #499780,%d1 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59536: 23c8 0007 a044 movel %a0,7a044 <_Timer_server_Default+0x68><== NOT EXECUTED
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5953c: 41f9 0007 ec26 lea 7ec26 <_TOD_Now>,%a0 <== NOT EXECUTED
head->previous = NULL; tail->previous = head;
59542: 23c1 0007 a04c movel %d1,7a04c <_Timer_server_Default+0x70><== NOT EXECUTED 59548: 23d0 0007 a050 movel %a0@,7a050 <_Timer_server_Default+0x74><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
5954e: 223c 0005 c384 movel #377732,%d1 <== NOT EXECUTED 59554: 41f9 0005 c384 lea 5c384 <_Thread_Delay_ended>,%a0 <== NOT EXECUTED 5955a: 23c1 0007 a000 movel %d1,7a000 <_Timer_server_Default+0x24><== NOT EXECUTED
ts->insert_chain = NULL;
ts->active = false;
59560: 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;
59562: 42b9 0007 a054 clrl 7a054 <_Timer_server_Default+0x78> <== NOT EXECUTED
ts->active = false;
59568: 13c1 0007 a058 moveb %d1,7a058 <_Timer_server_Default+0x7c><== NOT EXECUTED 5956e: 23c8 0007 a038 movel %a0,7a038 <_Timer_server_Default+0x5c><== NOT EXECUTED
/*
* The default timer server is now available.
*/
_Timer_server = ts;
59574: 41f9 0007 9fdc lea 79fdc <_Timer_server_Default>,%a0 <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
5957a: 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;
5957c: 223c 0005 92ba movel #365242,%d1 <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
59582: 42b9 0007 a010 clrl 7a010 <_Timer_server_Default+0x34> <== NOT EXECUTED 59588: 42b9 0007 a048 clrl 7a048 <_Timer_server_Default+0x6c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
5958e: 42b9 0007 9fec clrl 79fec <_Timer_server_Default+0x10> <== NOT EXECUTED 59594: 23c1 0007 9fe0 movel %d1,79fe0 <_Timer_server_Default+0x4> <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id;
5959a: 23c0 0007 a004 movel %d0,7a004 <_Timer_server_Default+0x28><== NOT EXECUTED
ts->active = false;
/*
* The default timer server is now available.
*/
_Timer_server = ts;
595a0: 23c8 0007 f45c movel %a0,7f45c <_Timer_server> <== NOT EXECUTED
the_watchdog->user_data = user_data;
595a6: 42b9 0007 a008 clrl 7a008 <_Timer_server_Default+0x2c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
595ac: 42b9 0007 a024 clrl 7a024 <_Timer_server_Default+0x48> <== NOT EXECUTED
the_watchdog->routine = routine; the_watchdog->id = id;
595b2: 23c0 0007 a03c movel %d0,7a03c <_Timer_server_Default+0x60><== NOT EXECUTED
the_watchdog->user_data = user_data;
595b8: 42b9 0007 a040 clrl 7a040 <_Timer_server_Default+0x64> <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
595be: 4eb9 0005 8754 jsr 58754 <rtems_task_start> <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
595c4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if (status) {
initialized = false;
}
#endif
return status;
595c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
595cc: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 595d0: 4e5e unlk %fp <== NOT EXECUTED
00058d2c <rtems_timer_reset>:
*/
rtems_status_code rtems_timer_reset(
rtems_id id
)
{
58d2c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 58d30: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 58d34: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58d38: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58d3c: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58d42: 4eb9 0005 b978 jsr 5b978 <_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 ) {
58d48: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58d4c: 2440 moveal %d0,%a2 <== NOT EXECUTED 58d4e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58d52: 670e beqs 58d62 <rtems_timer_reset+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58d54: 7404 moveq #4,%d2 <== NOT EXECUTED
}
58d56: 2002 movel %d2,%d0 <== NOT EXECUTED 58d58: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 58d5e: 4e5e unlk %fp <== NOT EXECUTED 58d60: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
58d62: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 58d66: 671a beqs 58d82 <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 ) {
58d68: 7201 moveq #1,%d1 <== NOT EXECUTED 58d6a: b280 cmpl %d0,%d1 <== NOT EXECUTED 58d6c: 673c beqs 58daa <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;
58d6e: 740b moveq #11,%d2 <== NOT EXECUTED
}
_Thread_Enable_dispatch();
58d70: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58d76: 2002 movel %d2,%d0 <== NOT EXECUTED 58d78: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 58d7e: 4e5e unlk %fp <== NOT EXECUTED 58d80: 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 );
58d82: 45ea 0010 lea %a2@(16),%a2 <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
58d86: 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 );
58d88: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58d8a: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
58d90: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58d92: 4879 0007 ec5c pea 7ec5c <_Watchdog_Ticks_chain> <== NOT EXECUTED 58d98: 4eb9 0005 d710 jsr 5d710 <_Watchdog_Insert> <== NOT EXECUTED 58d9e: 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();
58da2: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED 58da8: 60cc bras 58d76 <rtems_timer_reset+0x4a> <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58daa: 486a 0010 pea %a2@(16) <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
58dae: 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;
58db0: 2679 0007 f45c moveal 7f45c <_Timer_server>,%a3 <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58db6: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58dbc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58dbe: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58dc0: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED 58dc4: 4e90 jsr %a0@ <== NOT EXECUTED 58dc6: 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();
58dca: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED 58dd0: 60a4 bras 58d76 <rtems_timer_reset+0x4a> <== NOT EXECUTED
...
00058dd4 <rtems_timer_server_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58dd4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 58dd8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 58ddc: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 58de0: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 58de4: 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;
58de8: 2479 0007 f45c moveal 7f45c <_Timer_server>,%a2 <== NOT EXECUTED
if ( !timer_server )
58dee: 4a8a tstl %a2 <== NOT EXECUTED 58df0: 6700 009c beqw 58e8e <rtems_timer_server_fire_after+0xba><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !routine )
58df4: 4a82 tstl %d2 <== NOT EXECUTED 58df6: 6700 00a2 beqw 58e9a <rtems_timer_server_fire_after+0xc6><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( ticks == 0 )
58dfa: 4a83 tstl %d3 <== NOT EXECUTED 58dfc: 660c bnes 58e0a <rtems_timer_server_fire_after+0x36><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
58dfe: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e00: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e06: 4e5e unlk %fp <== NOT EXECUTED 58e08: 4e75 rts <== NOT EXECUTED 58e0a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58e0e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 58e10: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58e16: 4eb9 0005 b978 jsr 5b978 <_Objects_Get> <== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58e1c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58e20: 2640 moveal %d0,%a3 <== NOT EXECUTED 58e22: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58e26: 665a bnes 58e82 <rtems_timer_server_fire_after+0xae><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58e28: 486b 0010 pea %a3@(16) <== NOT EXECUTED 58e2c: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
58e32: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 58e38: 40c1 movew %sr,%d1 <== NOT EXECUTED 58e3a: 8081 orl %d1,%d0 <== NOT EXECUTED 58e3c: 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 ) {
58e3e: 588f addql #4,%sp <== NOT EXECUTED 58e40: 4aab 0018 tstl %a3@(24) <== NOT EXECUTED 58e44: 6660 bnes 58ea6 <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;
58e46: 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;
58e48: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED 58e4e: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58e52: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58e56: 2742 002c movel %d2,%a3@(44) <== NOT EXECUTED
the_watchdog->id = id;
58e5a: 2744 0030 movel %d4,%a3@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = ticks;
58e5e: 2743 001c movel %d3,%a3@(28) <== NOT EXECUTED
_ISR_Enable( level );
58e62: 46c1 movew %d1,%sr <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58e64: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58e66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58e68: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 58e6c: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
58e6e: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58e74: 508f addql #8,%sp <== NOT EXECUTED 58e76: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e78: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e7e: 4e5e unlk %fp <== NOT EXECUTED 58e80: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58e82: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58e84: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e8a: 4e5e unlk %fp <== NOT EXECUTED 58e8c: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
ISR_Level level;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
58e8e: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e90: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58e96: 4e5e unlk %fp <== NOT EXECUTED 58e98: 4e75 rts <== NOT EXECUTED
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58e9a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e9c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58ea2: 4e5e unlk %fp <== NOT EXECUTED 58ea4: 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 );
58ea6: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
58ea8: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58eae: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58eb0: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 58eb6: 4e5e unlk %fp <== NOT EXECUTED
...
00058ebc <rtems_timer_server_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58ebc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 58ec0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 58ec4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 58ec8: 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;
58ecc: 2479 0007 f45c moveal 7f45c <_Timer_server>,%a2 <== NOT EXECUTED
if ( !timer_server )
58ed2: 4a8a tstl %a2 <== NOT EXECUTED 58ed4: 6700 00c8 beqw 58f9e <rtems_timer_server_fire_when+0xe2><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
58ed8: 4a39 0007 eb8c tstb 7eb8c <_TOD_Is_set> <== NOT EXECUTED 58ede: 6700 00a6 beqw 58f86 <rtems_timer_server_fire_when+0xca><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !routine )
58ee2: 4a83 tstl %d3 <== NOT EXECUTED 58ee4: 6700 00ac beqw 58f92 <rtems_timer_server_fire_when+0xd6><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
58ee8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58eea: 4eb9 0005 5bf0 jsr 55bf0 <_TOD_Validate> <== NOT EXECUTED 58ef0: 588f addql #4,%sp <== NOT EXECUTED 58ef2: 4a00 tstb %d0 <== NOT EXECUTED 58ef4: 660c bnes 58f02 <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;
58ef6: 7014 moveq #20,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ef8: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58efe: 4e5e unlk %fp <== NOT EXECUTED 58f00: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
58f02: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58f04: 4eb9 0005 5ae8 jsr 55ae8 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58f0a: 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 );
58f0c: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58f0e: b0b9 0007 ec26 cmpl 7ec26 <_TOD_Now>,%d0 <== NOT EXECUTED 58f14: 63e0 blss 58ef6 <rtems_timer_server_fire_when+0x3a><== NOT EXECUTED 58f16: 486e fffc pea %fp@(-4) <== NOT EXECUTED 58f1a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 58f1e: 4879 0007 f422 pea 7f422 <_Timer_Information> <== NOT EXECUTED 58f24: 4eb9 0005 b978 jsr 5b978 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58f2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58f2e: 2640 moveal %d0,%a3 <== NOT EXECUTED 58f30: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 58f34: 6674 bnes 58faa <rtems_timer_server_fire_when+0xee><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58f36: 486b 0010 pea %a3@(16) <== NOT EXECUTED 58f3a: 4eb9 0005 d858 jsr 5d858 <_Watchdog_Remove> <== NOT EXECUTED
the_watchdog->user_data = user_data;
58f40: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;
58f46: 7003 moveq #3,%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
58f48: 94b9 0007 ec26 subl 7ec26 <_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;
58f4e: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
58f52: 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();
58f56: 2742 001c movel %d2,%a3@(28) <== NOT EXECUTED 58f5a: 2740 0030 movel %d0,%a3@(48) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58f5e: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58f62: 2743 002c movel %d3,%a3@(44) <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58f66: 2f0b movel %a3,%sp@- <== NOT EXECUTED 58f68: 2f0a movel %a2,%sp@- <== NOT EXECUTED 58f6a: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 58f6e: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
58f70: 4eb9 0005 c52a jsr 5c52a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58f76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 58f7a: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f7c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f82: 4e5e unlk %fp <== NOT EXECUTED 58f84: 4e75 rts <== NOT EXECUTED
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
58f86: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f88: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f8e: 4e5e unlk %fp <== NOT EXECUTED 58f90: 4e75 rts <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58f92: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f94: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58f9a: 4e5e unlk %fp <== NOT EXECUTED 58f9c: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
58f9e: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58fa0: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58fa6: 4e5e unlk %fp <== NOT EXECUTED 58fa8: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58faa: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58fac: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 58fb2: 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 fba0 movel 5fba0 <rtems_panic_in_progress>,%d1 <== NOT EXECUTED 4296c: 2001 movel %d1,%d0 <== NOT EXECUTED 4296e: 5280 addql #1,%d0 <== NOT EXECUTED 42970: 23c0 0005 fba0 movel %d0,5fba0 <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 fcf8 movel 5fcf8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 42980: 5280 addql #1,%d0 <== NOT EXECUTED 42982: 23c0 0005 fcf8 movel %d0,5fcf8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
RTEMS_COMPILER_MEMORY_BARRIER();
42988: 2039 0005 fba0 movel 5fba0 <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 e674 moveal 5e674 <_impure_ptr>,%a0 <== NOT EXECUTED 4299c: 45f9 0004 ecd6 lea 4ecd6 <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 f0fe lea 4f0fe <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 e674 moveal 5e674 <_impure_ptr>,%a0 <== NOT EXECUTED 429d0: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 429d4: 4eb9 0005 54f8 jsr 554f8 <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 f994 lea 4f994 <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 cf8a pea 5cf8a <IMFS_ops+0x6a> <== NOT EXECUTED 42a08: 2079 0005 e674 moveal 5e674 <_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 d41a pea 5d41a <rtems_status_assoc+0x19e> <== NOT EXECUTED 42a20: 2079 0005 e674 moveal 5e674 <_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 e674 moveal 5e674 <_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 e674 moveal 5e674 <_impure_ptr>,%a0 <== NOT EXECUTED 42a66: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42a68: 4879 0005 cf6f pea 5cf6f <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 e96c jsr 4e96c <__errno> <== NOT EXECUTED 42a88: 47f9 0004 f0fe lea 4f0fe <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 e674 moveal 5e674 <_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 54f8 jsr 554f8 <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 e674 moveal 5e674 <_impure_ptr>,%a0 <== NOT EXECUTED 42ac2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42ac4: 4879 0005 cf7d pea 5cf7d <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 d41a pea 5d41a <rtems_status_assoc+0x19e> <== NOT EXECUTED 42adc: 2079 0005 e674 moveal 5e674 <_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 e674 moveal 5e674 <_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
000470f0 <rtems_workspace_allocate>:
*/
bool rtems_workspace_allocate(
uintptr_t bytes,
void **pointer
)
{
470f0: 4e56 0000 linkw %fp,#0 470f4: 202e 0008 movel %fp@(8),%d0 470f8: 2f0a movel %a2,%sp@- 470fa: 246e 000c moveal %fp@(12),%a2
void *ptr;
/*
* check the arguments
*/
if ( !pointer )
470fe: 4a8a tstl %a2
47100: 6704 beqs 47106 <rtems_workspace_allocate+0x16> <== NEVER TAKEN
return false;
if ( !bytes )
47102: 4a80 tstl %d0
47104: 660a bnes 47110 <rtems_workspace_allocate+0x20> <== ALWAYS TAKEN
if (!ptr)
return false;
*pointer = ptr;
return true;
}
47106: 246e fffc moveal %fp@(-4),%a2
4710a: 4e5e unlk %fp <== NOT EXECUTED
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
4710c: 4200 clrb %d0 <== NOT EXECUTED
*pointer = ptr;
return true;
}
4710e: 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 );
47110: 42a7 clrl %sp@- 47112: 42a7 clrl %sp@- 47114: 2f00 movel %d0,%sp@- 47116: 4879 0006 07a6 pea 607a6 <_Workspace_Area> 4711c: 4eb9 0004 884c jsr 4884c <_Protected_heap_Allocate_aligned_with_boundary>
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
47122: 4fef 0010 lea %sp@(16),%sp 47126: 4a80 tstl %d0
47128: 67dc beqs 47106 <rtems_workspace_allocate+0x16> <== NEVER TAKEN
return false;
*pointer = ptr;
4712a: 2480 movel %d0,%a2@
return true; }
4712c: 246e fffc moveal %fp@(-4),%a2 47130: 4e5e unlk %fp
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
*pointer = ptr;
return true;
47132: 7001 moveq #1,%d0 <== NOT EXECUTED
}
00047136 <rtems_workspace_free>:
* _Workspace_Allocate
*/
bool rtems_workspace_free(
void *pointer
)
{
47136: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Protected_heap_Free( &_Workspace_Area, pointer );
4713a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4713e: 4879 0006 07a6 pea 607a6 <_Workspace_Area> <== NOT EXECUTED 47144: 4eb9 0004 888c jsr 4888c <_Protected_heap_Free> <== NOT EXECUTED
}
4714a: 4e5e unlk %fp <== NOT EXECUTED
...
000470cc <rtems_workspace_get_information>:
#include <string.h> /* for memset */
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
470cc: 4e56 0000 linkw %fp,#0 470d0: 202e 0008 movel %fp@(8),%d0
if ( !the_info )
470d4: 6714 beqs 470ea <rtems_workspace_get_information+0x1e><== NEVER TAKEN
return false;
return _Protected_heap_Get_information( &_Workspace_Area, the_info );
470d6: 2f00 movel %d0,%sp@- 470d8: 4879 0006 07a6 pea 607a6 <_Workspace_Area> 470de: 4eb9 0004 88c4 jsr 488c4 <_Protected_heap_Get_information> 470e4: 508f addql #8,%sp
}
470e6: 4e5e unlk %fp 470e8: 4e75 rts
470ea: 4e5e unlk %fp <== NOT EXECUTED
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
if ( !the_info )
return false;
470ec: 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 0eb4 lea 50eb4 <__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 0130 moveal 60130 <__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 0134 movel 60134 <_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 0eb4 lea 50eb4 <__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 0134 movel 60134 <_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 f974 jsr 4f974 <__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 f8d6 moveb 5f8d6 <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 f974 jsr 4f974 <__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 f314 jsr 4f314 <__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 f314 jsr 4f314 <__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 1110 movel 61110 <_Thread_Ticks_per_timeslice>,%sp@-<== NOT EXECUTED 47040: 4eb9 0004 a978 jsr 4a978 <_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 f974 jsr 4f974 <__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 f974 jsr 4f974 <__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 f314 jsr 4f314 <__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 f314 jsr 4f314 <__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 1158 movel 61158 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4709e: 5280 addql #1,%d0 <== NOT EXECUTED 470a0: 23c0 0006 1158 movel %d0,61158 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
470a6: 4879 0006 11de pea 611de <_Scheduler> <== NOT EXECUTED 470ac: 2079 0006 11e6 moveal 611e6 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 470b2: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_Scheduler_Yield();
_Thread_Enable_dispatch();
470b4: 4eb9 0004 9d42 jsr 49d42 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0; }
470ba: 4280 clrl %d0 <== NOT EXECUTED 470bc: 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 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 4918c: 4eb9 0004 b59c jsr 4b59c <_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 2b6c jsr 52b6c <__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 fcb0 jsr 4fcb0 <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
491bc: 4eb9 0004 c156 jsr 4c156 <_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 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 491e0: 4eb9 0004 b59c jsr 4b59c <_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 2b6c jsr 52b6c <__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 fcb0 jsr 4fcb0 <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
49212: 4eb9 0004 c156 jsr 4c156 <_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 c156 jsr 4c156 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
49226: 4eb9 0005 2b6c jsr 52b6c <__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 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 4924c: 4eb9 0004 b59c jsr 4b59c <_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 2b6c jsr 52b6c <__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 c156 jsr 4c156 <_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 fb50 jsr 4fb50 <_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 2b6c jsr 52b6c <__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 4ff4 movel 64ff4 <_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 4ff4 movel %d0,64ff4 <_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 fd08 jsr 4fd08 <_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 c156 jsr 4c156 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( status, sem_t * );
49326: 4eb9 0005 2b6c jsr 52b6c <__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 c156 lea 4c156 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED 49354: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49358: 4879 0006 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 4935e: 4eb9 0004 b59c jsr 4b59c <_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 fb50 jsr 4fb50 <_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 c156 jsr 4c156 <_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 c156 jsr 4c156 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
493c2: 4eb9 0005 2b6c jsr 52b6c <__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 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 493f0: 4eb9 0004 b59c jsr 4b59c <_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 2b6c jsr 52b6c <__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 aad0 jsr 4aad0 <_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 c156 jsr 4c156 <_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 ef68 jsr 4ef68 <_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 fd7c jsr 4fd7c <_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 fd7c jsr 4fd7c <_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 fd7c jsr 4fd7c <_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 4ff4 movel 64ff4 <_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 4ff4 movel %d0,64ff4 <_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 fd08 jsr 4fd08 <_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 5246 moveal 65246 <_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 522e pea 6522e <_POSIX_Semaphore_Information> <== NOT EXECUTED 494ec: 4eb9 0004 b71c jsr 4b71c <_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 fcb0 jsr 4fcb0 <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
494fa: 4eb9 0004 c156 jsr 4c156 <_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 c156 jsr 4c156 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( status );
49518: 4eb9 0005 2b6c jsr 52b6c <__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 fd7c jsr 4fd7c <_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 0f60 moveal 60f60 <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 0006 0070 moveal 60070 <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 0e70 movel 60e70 <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 f9aa jsr 4f9aa <fclose> <== NOT EXECUTED 43cba: 588f addql #4,%sp <== NOT EXECUTED
group_fp = fopen("/etc/group", "r");
43cbc: 4879 0005 f707 pea 5f707 <_global_impure_ptr+0xbf> <== NOT EXECUTED 43cc2: 4879 0005 ee98 pea 5ee98 <rtems_status_assoc+0x21a> <== NOT EXECUTED 43cc8: 4eb9 0005 00a8 jsr 500a8 <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 0e70 movel %d0,60e70 <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 f1c0 jsr 4f1c0 <__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 f1c0 jsr 4f1c0 <__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 f1c0 jsr 4f1c0 <__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 f85c jsr 4f85c <__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 0f4a movel 60f4a <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 f9aa jsr 4f9aa <fclose> <== NOT EXECUTED 43b6e: 588f addql #4,%sp <== NOT EXECUTED
passwd_fp = fopen("/etc/passwd", "r");
43b70: 4879 0005 f707 pea 5f707 <_global_impure_ptr+0xbf> <== NOT EXECUTED 43b76: 4879 0005 ee23 pea 5ee23 <rtems_status_assoc+0x1a5> <== NOT EXECUTED 43b7c: 4eb9 0005 00a8 jsr 500a8 <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 0f4a movel %d0,60f4a <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 f85c jsr 4f85c <__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 0006 0070 moveal 60070 <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
...
00046db0 <sigaction>:
int sigaction(
int sig,
const struct sigaction *act,
struct sigaction *oact
)
{
46db0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46db4: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 46db8: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 46dbc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 46dc0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
if ( oact )
46dc4: 4a89 tstl %a1 <== NOT EXECUTED 46dc6: 6718 beqs 46de0 <sigaction+0x30> <== NOT EXECUTED
*oact = _POSIX_signals_Vectors[ sig ];
46dc8: 2202 movel %d2,%d1 <== NOT EXECUTED 46dca: 2002 movel %d2,%d0 <== NOT EXECUTED 46dcc: e989 lsll #4,%d1 <== NOT EXECUTED 46dce: e588 lsll #2,%d0 <== NOT EXECUTED 46dd0: 2041 moveal %d1,%a0 <== NOT EXECUTED 46dd2: 91c0 subal %d0,%a0 <== NOT EXECUTED 46dd4: d1fc 0006 2208 addal #401928,%a0 <== NOT EXECUTED 46dda: 22d8 movel %a0@+,%a1@+ <== NOT EXECUTED 46ddc: 22d8 movel %a0@+,%a1@+ <== NOT EXECUTED 46dde: 2290 movel %a0@,%a1@ <== NOT EXECUTED
if ( !sig )
46de0: 4a82 tstl %d2 <== NOT EXECUTED 46de2: 6700 0088 beqw 46e6c <sigaction+0xbc> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
46de6: 2002 movel %d2,%d0 <== NOT EXECUTED 46de8: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
46dea: 721f moveq #31,%d1 <== NOT EXECUTED 46dec: b280 cmpl %d0,%d1 <== NOT EXECUTED 46dee: 657c bcss 46e6c <sigaction+0xbc> <== NOT EXECUTED
*
* NOTE: Solaris documentation claims to "silently enforce" this which
* contradicts the POSIX specification.
*/
if ( sig == SIGKILL )
46df0: 7009 moveq #9,%d0 <== NOT EXECUTED 46df2: b082 cmpl %d2,%d0 <== NOT EXECUTED 46df4: 6776 beqs 46e6c <sigaction+0xbc> <== NOT EXECUTED
/*
* Evaluate the new action structure and set the global signal vector
* appropriately.
*/
if ( act ) {
46df6: 4a8a tstl %a2 <== NOT EXECUTED 46df8: 6766 beqs 46e60 <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 );
46dfa: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 46e00: 40c3 movew %sr,%d3 <== NOT EXECUTED 46e02: 8083 orl %d3,%d0 <== NOT EXECUTED 46e04: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( act->sa_handler == SIG_DFL ) {
46e06: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 46e0a: 6730 beqs 46e3c <sigaction+0x8c> <== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
} else {
_POSIX_signals_Clear_process_signals( sig );
46e0c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46e0e: 4eb9 0004 cbd8 jsr 4cbd8 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = *act;
46e14: 588f addql #4,%sp <== NOT EXECUTED 46e16: 2002 movel %d2,%d0 <== NOT EXECUTED 46e18: 224a moveal %a2,%a1 <== NOT EXECUTED 46e1a: e98a lsll #4,%d2 <== NOT EXECUTED 46e1c: e588 lsll #2,%d0 <== NOT EXECUTED 46e1e: 2042 moveal %d2,%a0 <== NOT EXECUTED 46e20: 91c0 subal %d0,%a0 <== NOT EXECUTED 46e22: d1fc 0006 2208 addal #401928,%a0 <== NOT EXECUTED 46e28: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e2a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e2c: 2091 movel %a1@,%a0@ <== NOT EXECUTED
}
_ISR_Enable( level );
46e2e: 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;
46e30: 4280 clrl %d0 <== NOT EXECUTED
}
46e32: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46e38: 4e5e unlk %fp <== NOT EXECUTED 46e3a: 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 ];
46e3c: 2002 movel %d2,%d0 <== NOT EXECUTED 46e3e: e98a lsll #4,%d2 <== NOT EXECUTED 46e40: e588 lsll #2,%d0 <== NOT EXECUTED 46e42: 9480 subl %d0,%d2 <== NOT EXECUTED 46e44: 2242 moveal %d2,%a1 <== NOT EXECUTED 46e46: 2042 moveal %d2,%a0 <== NOT EXECUTED 46e48: d3fc 0005 f772 addal #391026,%a1 <== NOT EXECUTED 46e4e: d1fc 0006 2208 addal #401928,%a0 <== NOT EXECUTED 46e54: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e56: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED 46e58: 2091 movel %a1@,%a0@ <== NOT EXECUTED
} else {
_POSIX_signals_Clear_process_signals( sig );
_POSIX_signals_Vectors[ sig ] = *act;
}
_ISR_Enable( level );
46e5a: 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;
46e5c: 4280 clrl %d0 <== NOT EXECUTED 46e5e: 60d2 bras 46e32 <sigaction+0x82> <== NOT EXECUTED 46e60: 4280 clrl %d0 <== NOT EXECUTED
}
46e62: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 46e68: 4e5e unlk %fp <== NOT EXECUTED 46e6a: 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 );
46e6c: 4eb9 0004 fbe8 jsr 4fbe8 <__errno> <== NOT EXECUTED 46e72: 7216 moveq #22,%d1 <== NOT EXECUTED 46e74: 2040 moveal %d0,%a0 <== NOT EXECUTED 46e76: 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;
}
46e78: 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 );
46e7e: 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;
}
46e80: 4e5e unlk %fp <== NOT EXECUTED
00046e84 <sigaddset>:
int sigaddset(
sigset_t *set,
int signo
)
{
46e84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46e88: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46e8c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 46e90: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !set )
46e92: 4a88 tstl %a0 <== NOT EXECUTED 46e94: 671e beqs 46eb4 <sigaddset+0x30> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
46e96: 4a80 tstl %d0 <== NOT EXECUTED 46e98: 671a beqs 46eb4 <sigaddset+0x30> <== NOT EXECUTED 46e9a: 2400 movel %d0,%d2 <== NOT EXECUTED 46e9c: 5382 subql #1,%d2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(signo) )
46e9e: 701f moveq #31,%d0 <== NOT EXECUTED 46ea0: b082 cmpl %d2,%d0 <== NOT EXECUTED 46ea2: 6510 bcss 46eb4 <sigaddset+0x30> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
46ea4: 7201 moveq #1,%d1 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
*set |= signo_to_mask(signo);
return 0;
46ea6: 4280 clrl %d0 <== NOT EXECUTED 46ea8: e5a9 lsll %d2,%d1 <== NOT EXECUTED
}
46eaa: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 46eae: 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);
46eb0: 8390 orl %d1,%a0@ <== NOT EXECUTED
return 0; }
46eb2: 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 );
46eb4: 4eb9 0004 fbe8 jsr 4fbe8 <__errno> <== NOT EXECUTED
*set |= signo_to_mask(signo);
return 0;
}
46eba: 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 );
46ebe: 2040 moveal %d0,%a0 <== NOT EXECUTED 46ec0: 7216 moveq #22,%d1 <== NOT EXECUTED 46ec2: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set |= signo_to_mask(signo);
return 0;
}
46ec4: 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 );
46ec6: 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 21ec jsr 521ec <__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;
}
...
0004bf7c <sigemptyset>:
#include <rtems/seterr.h>
int sigemptyset(
sigset_t *set
)
{
4bf7c: 4e56 0000 linkw %fp,#0 4bf80: 206e 0008 moveal %fp@(8),%a0
if ( !set )
4bf84: 4a88 tstl %a0
4bf86: 6708 beqs 4bf90 <sigemptyset+0x14> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
*set = 0;
return 0;
4bf88: 4280 clrl %d0
}
4bf8a: 4e5e unlk %fp
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
*set = 0;
4bf8c: 4290 clrl %a0@
return 0; }
4bf8e: 4e75 rts
int sigemptyset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
4bf90: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 4bf96: 7216 moveq #22,%d1 <== NOT EXECUTED 4bf98: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bf9a: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set = 0;
return 0;
}
4bf9c: 4e5e unlk %fp <== NOT EXECUTED
int sigemptyset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
4bf9e: 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 21ec jsr 521ec <__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 21ec jsr 521ec <__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
...
00046ef4 <sigpending>:
#include <rtems/seterr.h>
int sigpending(
sigset_t *set
)
{
46ef4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46ef8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_API_Control *api;
if ( !set )
46efc: 4a88 tstl %a0 <== NOT EXECUTED 46efe: 671c beqs 46f1c <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;
46f00: 2279 0006 21d6 moveal 621d6 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
return 0;
46f06: 4280 clrl %d0 <== NOT EXECUTED
}
46f08: 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;
46f0a: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED 46f0e: 2239 0006 23fc movel 623fc <_POSIX_signals_Pending>,%d1 <== NOT EXECUTED 46f14: 82a9 00d4 orl %a1@(212),%d1 <== NOT EXECUTED 46f18: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
46f1a: 4e75 rts <== NOT EXECUTED
)
{
POSIX_API_Control *api;
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
46f1c: 4eb9 0004 fbe8 jsr 4fbe8 <__errno> <== NOT EXECUTED 46f22: 7216 moveq #22,%d1 <== NOT EXECUTED 46f24: 2040 moveal %d0,%a0 <== NOT EXECUTED 46f26: 70ff moveq #-1,%d0 <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
*set = api->signals_pending | _POSIX_signals_Pending;
return 0;
}
46f28: 4e5e unlk %fp <== NOT EXECUTED
)
{
POSIX_API_Control *api;
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
46f2a: 2081 movel %d1,%a0@ <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
*set = api->signals_pending | _POSIX_signals_Pending;
return 0;
}
...
00046f30 <sigprocmask>:
int sigprocmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
46f30: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_POSIX_API) return pthread_sigmask( how, set, oset ); #else return -1; #endif }
46f34: 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 );
46f36: 4ef9 0004 d36c jmp 4d36c <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 f370 jsr 4f370 <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 21ec jsr 521ec <__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 ac3c jsr 4ac3c <_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 acb8 jsr 4acb8 <_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 2686 moveal 62686 <_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 0102 moveal %a0@(258),%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 28ac movel 628ac <_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 21f8 movel 621f8 <_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 21f8 movel %d1,621f8 <_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 2844 lea 62844 <_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 2874 movel %d1,62874 <_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 a8a4 pea 4a8a4 <_Thread_queue_Timeout> <== NOT EXECUTED 472f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 472f8: 4879 0006 2844 pea 62844 <_POSIX_signals_Wait_queue> <== NOT EXECUTED 472fe: 4eb9 0004 a4e0 jsr 4a4e0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
47304: 4eb9 0004 a006 jsr 4a006 <_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 d3ac jsr 4d3ac <_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 2686 moveal 62686 <_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 d3ac jsr 4d3ac <_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 2686 moveal 62686 <_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 0102 moveal %a0@(258),%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 d3ac jsr 4d3ac <_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 02e8 jsr 502e8 <__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 2686 moveal 62686 <_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 02e8 jsr 502e8 <__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 02e8 jsr 502e8 <__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 21ec jsr 521ec <__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 ddc4 jsr 4ddc4 <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 d3b8 jsr 4d3b8 <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 ca9c jsr 4ca9c <__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 3854 jsr 53854 <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 f8d4 movel 5f8d4 <_global_impure_ptr>,%sp@- <== NOT EXECUTED 45200: 4eb9 0005 0b68 jsr 50b68 <_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 8f94 jsr 48f94 <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 00fa movel %a0@(250),%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 1ec6 moveal 61ec6 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4519c: 2429 00fa movel %a1@(250),%d2 <== NOT EXECUTED
_Thread_Executing->libc_reent = this_reent;
451a0: 2340 00fa movel %d0,%a1@(250) <== NOT EXECUTED
_fwalk (t->libc_reent, sync_wrapper);
451a4: 487a 0020 pea %pc@(451c6 <sync_wrapper>) <== NOT EXECUTED 451a8: 2f28 00fa movel %a0@(250),%sp@- <== NOT EXECUTED 451ac: 4eb9 0005 0b68 jsr 50b68 <_fwalk> <== NOT EXECUTED
_Thread_Executing->libc_reent = current_reent;
451b2: 2079 0006 1ec6 moveal 61ec6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 451b8: 508f addql #8,%sp <== NOT EXECUTED 451ba: 2142 00fa movel %d2,%a0@(250) <== 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 fff0 jsr 4fff0 <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 eaf4 lea 5eaf4 <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 ea14 movel 5ea14 <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 ef6c jsr 4ef6c <__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 f2c8 jsr 4f2c8 <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 cce4 jsr 4cce4 <__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 cce4 jsr 4cce4 <__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 ce38 jsr 4ce38 <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 04d0 jsr 504d0 <__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 ce38 jsr 4ce38 <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 ce38 jmp 4ce38 <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 0a48 movel 60a48 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4607c: 5280 addql #1,%d0 <== NOT EXECUTED 4607e: 23c0 0006 0a48 movel %d0,60a48 <_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 0cbc pea 60cbc <_POSIX_Timer_Information> <== NOT EXECUTED 4608a: 4eb9 0004 81d8 jsr 481d8 <_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 0ed6 moveal 60ed6 <_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 0cd4 moveal 60cd4 <_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 91ca jsr 491ca <_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 f488 jsr 4f488 <__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 91ca jsr 491ca <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
46130: 4eb9 0004 f488 jsr 4f488 <__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 1b84 pea 61b84 <_POSIX_Timer_Information> <== NOT EXECUTED 46d50: 4eb9 0004 9200 jsr 49200 <_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 04e0 jsr 504e0 <__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 1b84 pea 61b84 <_POSIX_Timer_Information> <== NOT EXECUTED 46d80: 4eb9 0004 8dd0 jsr 48dd0 <_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 aeb4 jsr 4aeb4 <_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 1b84 pea 61b84 <_POSIX_Timer_Information> <== NOT EXECUTED 46d9e: 4eb9 0004 9094 jsr 49094 <_Objects_Free> <== NOT EXECUTED
_POSIX_Timer_Free( ptimer );
_Thread_Enable_dispatch();
46da4: 4eb9 0004 9d32 jsr 49d32 <_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 30d0 pea 630d0 <_POSIX_Timer_Information> <== NOT EXECUTED 47a18: 4eb9 0004 9e4c jsr 49e4c <_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 0ccc jsr 50ccc <__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 a97e jsr 4a97e <_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 93a8 jsr 493a8 <_TOD_Get> <== NOT EXECUTED 47a76: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47a7a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47a7e: 4879 0006 30d0 pea 630d0 <_POSIX_Timer_Information> <== NOT EXECUTED 47a84: 4eb9 0004 9e4c jsr 49e4c <_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 2f86 movel 62f86 <_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 b5b4 jsr 4b5b4 <_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 a97e jsr 4a97e <_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 0ccc jsr 50ccc <__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 9e34 lea 49e34 <_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 0cbc pea 60cbc <_POSIX_Timer_Information> <== NOT EXECUTED 461c8: 4eb9 0004 8698 jsr 48698 <_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 9eb0 lea 49eb0 <_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 c970 jsr 4c970 <_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 7c1c jsr 47c1c <_TOD_Get> <== NOT EXECUTED
_Thread_Enable_dispatch();
46272: 4eb9 0004 91ca jsr 491ca <_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 7c1c jsr 47c1c <_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 9e00 jsr 49e00 <_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 9e60 jsr 49e60 <_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 0cbc pea 60cbc <_POSIX_Timer_Information> <== NOT EXECUTED 462ee: 4eb9 0004 8698 jsr 48698 <_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 f488 jsr 4f488 <__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 a310 jsr 4a310 <_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 91ca jsr 491ca <_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 91ca jsr 491ca <_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 7c1c jsr 47c1c <_TOD_Get> <== NOT EXECUTED
_Thread_Enable_dispatch();
463d2: 4eb9 0004 91ca jsr 491ca <_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 91ca jsr 491ca <_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 f1d4 jsr 4f1d4 <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 1f5c tstl 61f5c <_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 1f40 pea 61f40 <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 46242: 4eb9 0004 a084 jsr 4a084 <_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 9b90 lea 49b90 <_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 1f40 pea 61f40 <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 4629e: 4879 0006 17e8 pea 617e8 <_Watchdog_Ticks_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
462a4: 23c0 0006 1f4c movel %d0,61f4c <_POSIX_signals_Ualarm_timer+0xc><== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
462aa: 4eb9 0004 9f3c jsr 49f3c <_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 1f48 clrl 61f48 <_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 1f60 clrl 61f60 <_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 1f5c movel %d0,61f5c <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED
the_watchdog->id = id; the_watchdog->user_data = user_data;
462da: 42b9 0006 1f64 clrl 61f64 <_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 1f54 movel 61f54 <_POSIX_signals_Ualarm_timer+0x14>,%d0<== NOT EXECUTED 462f0: d0b9 0006 1f4c addl 61f4c <_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 1f58 subl 61f58 <_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 9b04 jsr 49b04 <_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 02f0 moveal 602f0 <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 e911 pea 5e911 <rtems_filesystem_default_pathconf+0xb5><== NOT EXECUTED 4630a: 47f9 0005 058c lea 5058c <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 e919 pea 5e919 <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 e925 pea 5e925 <rtems_filesystem_default_pathconf+0xc9><== NOT EXECUTED 46344: 4879 0005 e937 pea 5e937 <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 f974 jsr 4f974 <__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 40a8 lea 540a8 <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 2d04 jsr 52d04 <__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 2d04 jsr 52d04 <__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 120c jsr 5120c <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 0b14 moveal 60b14 <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 219c movel 6219c <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 865c jsr 4865c <_Chain_Extract> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
470bc: 2f39 0006 219c movel 6219c <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 fd18 jsr 4fd18 <__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 fd18 jsr 4fd18 <__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 8300 jsr 48300 <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 1cf0 jsr 51cf0 <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 3fb8 jsr 53fb8 <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 d4d1 lea 5d4d1 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 e490 moveal 5e490 <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 d4d0 lea 5d4d0 <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 f314 jsr 4f314 <__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 f314 jsr 4f314 <__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
}
...
0005c0ec <write>:
ssize_t write(
int fd,
const void *buffer,
size_t count
)
{
5c0ec: 4e56 fff4 linkw %fp,#-12 5c0f0: 202e 0008 movel %fp@(8),%d0 5c0f4: 222e 000c movel %fp@(12),%d1 5c0f8: 206e 0010 moveal %fp@(16),%a0 5c0fc: 48d7 040c moveml %d2-%d3/%a2,%sp@
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5c100: b0b9 0005 e394 cmpl 5e394 <rtems_libio_number_iops>,%d0
5c106: 6468 bccs 5c170 <write+0x84> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
5c108: 2400 movel %d0,%d2 5c10a: ed88 lsll #6,%d0 5c10c: e78a lsll #3,%d2 5c10e: 2479 0005 fba4 moveal 5fba4 <rtems_libio_iops>,%a2 5c114: 9082 subl %d2,%d0 5c116: d5c0 addal %d0,%a2
rtems_libio_check_is_open( iop );
5c118: 202a 0014 movel %a2@(20),%d0 5c11c: 0800 0008 btst #8,%d0
5c120: 674e beqs 5c170 <write+0x84> <== NEVER TAKEN
rtems_libio_check_buffer( buffer );
5c122: 4a81 tstl %d1
5c124: 6762 beqs 5c188 <write+0x9c> <== NEVER TAKEN
rtems_libio_check_count( count );
5c126: 4a88 tstl %a0
5c128: 673a beqs 5c164 <write+0x78> <== NEVER TAKEN
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
5c12a: 44c0 movew %d0,%ccr
5c12c: 665a bnes 5c188 <write+0x9c> <== NEVER TAKEN
/*
* Now process the write() request.
*/
rc = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5c12e: 226a 0020 moveal %a2@(32),%a1 5c132: 2f08 movel %a0,%sp@- 5c134: 2f01 movel %d1,%sp@- 5c136: 2f0a movel %a2,%sp@- 5c138: 2069 000c moveal %a1@(12),%a0 5c13c: 4e90 jsr %a0@
if ( rc > 0 )
5c13e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5c142: 4a80 tstl %d0 <== NOT EXECUTED 5c144: 6f14 bles 5c15a <write+0x6e> <== NOT EXECUTED
iop->offset += rc;
5c146: 2400 movel %d0,%d2 <== NOT EXECUTED 5c148: 5bc1 smi %d1 <== NOT EXECUTED 5c14a: 49c1 extbl %d1 <== NOT EXECUTED 5c14c: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED 5c150: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED 5c154: d781 addxl %d1,%d3 <== NOT EXECUTED 5c156: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
return rc;
}
5c15a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5c160: 4e5e unlk %fp <== NOT EXECUTED 5c162: 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 );
5c164: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c166: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5c16c: 4e5e unlk %fp <== NOT EXECUTED 5c16e: 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 );
5c170: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5c176: 7409 moveq #9,%d2 <== NOT EXECUTED 5c178: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c17a: 70ff moveq #-1,%d0 <== NOT EXECUTED 5c17c: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c17e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5c184: 4e5e unlk %fp <== NOT EXECUTED 5c186: 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 );
5c188: 4eb9 0004 e96c jsr 4e96c <__errno> <== NOT EXECUTED 5c18e: 7216 moveq #22,%d1 <== NOT EXECUTED 5c190: 2040 moveal %d0,%a0 <== NOT EXECUTED 5c192: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c194: 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 );
5c19a: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c19c: 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 f164 cmpl 5f164 <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 0974 moveal 60974 <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 f9f8 jsr 4f9f8 <__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 f9f8 jsr 4f9f8 <__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